《Linux内核设计与实现》读书笔记 1&2

时间:2020-11-26 16:51:49

第一章    Linux内核简介

1.2追寻Linus足迹:linux简介

         Linus开发。Linux是类Unix系统。Linux内核也是*软件。

1.3操作系统和内核简介

  操作系统:在整个系统中负责完成最基本功能和系统管理的那些部分。包括内核、设备驱动程序、启动引导程序、命令行shell或者其他种类的用户界面、基本的文件管理工具和系统工具。

  内核:内核才是操作系统的核心。由负责响应中断和中断服务程序、负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。独立于普通应用程序,一般处于系统态

1.4Linux内核和传统内核的比较

  单内核

    从整体是作为一个单独的大过程实现。大家都身处同一地址空间,内核之间的通信是微不足道的。单模块具有简单和性能高的特点。

  微内核

    微内核功能被划分为多个独立的过程。通过消息传递处理微内核通信,采用进程间通信(IPC)机制 

    实际应用的基于微内核的系统都让大部分或全部服务器位于内核。

  Linux内核

    支持动态加载内核模块;支持对称多处理机制;内核可以抢占;对内核来说所有进程都一样;提供北邮设备类的面向对象的设备模型;

1.5Linux内核版本

         稳定的和处于开发中的。

1.6Linux内核开发者社区

         Linux内核邮件列表很有用。

 

第二章    从内核出发

2.1获取内核源码

         Linux内核官方网站http://www.kernel.org

         使用GIt:

      获取最新提交到Linux版本树的一个副本:git clone git://git.kernel.org/pub/scm/linux/kernel/gie/Torvalds/linux-2.6.git

         使用补丁;

      相当于更新版本:patch –pl<../patch-x.y.z

2.3编译内核

         编译内核之前需要进行配置。配置为二选一(yes or no)或三选一(yes or no or module)

         配置工具:make config 遍历所有配置项,耗时长

                       Make menuconfig 基于ncurse库编制的图形界面工具

                       Make gconfig 基于gtk+的图形工具

                       Make defconfig 缺省配置

         配置完成需要make就可以编译

2.4内核开发的特点

         与应用程序开发的不同:

  • 既不能访问C库也不能访问标准的C头文件库
  • 必须使用GUN C
  • 缺乏像用户空间那样的内存保护机制
  • 难以执行浮点运算
  • 给每个进程只有一个很小的定长堆栈
  • 由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发
  • 要考虑可移植性