Linux第一章第二章学习笔记


 第一章 Linux内核简介


 

1、1 Unix的历史

  • 它是现存操作系统中最强大最优秀的系统。
  • 设计简洁,在发布时提供原代码。
  • 所有东西都被当做文件对待。
  • Unix的内核和其他相关软件是用C语言编写而成的。
  • Unix的进程创建非常迅速,有一个frok()系统调用。
  • 提供简洁稳定的进程间的通信元语。

1、2 Linux简介

Linux系统的基础是内核、C库、工具集和系统的基本工具,Linux主要指内核。

1、3 操作系统和内核简介

  • 操作系统指:内核、设备驱动程序、启动引导程序、命令行shell、用户界面、基本的文件管理工具和设备工具。
  • 内核:操作系统的管理者和操作系统的核心。一般处于系统态,拥有被保护的内存空间和访问硬件所受的权限,统称为内核空间。
  • 当内核运行时,系统以内核态进入内核空间执行,而执行普通用户时,系统以用户态进入用户空间进行执行。
  • 应用程序通过系统调用与内核通信,应用程序调用库函数,库函数调用系统界面,让内核代其完成不同任务。
  • 内核三个特点:运行于用户空间,执行用户进程;运行于内核空间,进行进程执行;运行于内核空间,处理特定中断。
  • 应用程序完成其工作的基本行为方式:应用程序通过系统调用界面陷入内核

1、4 单内核与微内核

  • 单内核运行在一个单独的地址空间上。内核通常以单个静态二进制文件的形式存放在磁盘中。内核间通信、内核调用函数等与用户空间应用程序无异。
  • 微内核的功能被划分为多个独立过程,每个过程称为服务器。微内核通信通过消息传递处理,即采用了进程间通信机制(IPM)。

1、5 内核的版本

Linux内核有两种:稳定的和处于开发中的。如果数字为偶数,即是稳定版内核;若是奇数,则是开发版内核。
         enter description here


第二章 从内核出发


 

2、1 内核源码树

2、2 编译内核

1、配置内核:

  • make config:逐一遍历所有配置项
  • make defconfig:容易找到内核项,并直接修改它
  • make oldconfig:编译内核之前都应该这样做
  • $zcat/proc/config.gz>.config  $make oldconfig 复制配置文件并编译新内核 

2、减少编译垃圾信息:

  • $make >../dev/null

2、3 衍生多个编译作业:

  • $make -jn 衍生多个作业,n是作业数。
  • 每个处理器一般衍生出一两个作业,16核可输入:$make -j32 >/dev/null
  • 安装新内核 make modules_install

2、4 内核开发的特点

  • 内核编程时既不能访问C库,也不能访问标准的C开头的文件(包含<linux/string.h>头文件就可以使用)
  • 内核编程时必须使用GUN C(gcc是多种GUN编译器的集合,在偏近体系结构的底层或对执行时间严格的时候一般用汇编语言,内核其他大部分代码用C语言编写。)
  • 内核编程时缺乏保护机制(内核中的内存不分页)
  • 内核编程时难以执行浮点计算
  • 内核给每个进程一个很小的定长的堆栈(容积小固定的栈)
  • 同步和并发(内核容易产生竞争条件,许多特性要求共享数据,需要同步机制保证不出现竞争条件)
  • 可移植性的重要性(保持字节、64位对齐、不假定字长和页面长度由李玉移植性)
posted on 2016-03-15 19:44  20135109  阅读(236)  评论(0编辑  收藏  举报