Linux2.6驱动程序《三》 Linux内核及内核编程

一、Linux2.6相对于Linux2.4有相当大的改进,主要体现在如下几个方面:

<1>新的调度器:使用了新的进程调度算法,它在高负载的情况下执行得很好,并且有很多处理器时可以进行很好的扩展

  /arch:目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel
CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。
  /documentation:目录下是一些文档,没有内核代码,可惜都是English的,是对每个目录作用的具体说明
  /drivers:目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于/drivers/sound;block
下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看/drivers/block/genhd.c中的device_setup()。它不仅初始化硬盘,也初始化,因为安装nfs文件系统的时候需要网络。其他:
如, Lib放置核心的库代码; Net,核心与网络相关的代码;
Ipc,这个目录包含核心的进程间通讯的代码;
Fs,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2。
  /fs:目录存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录支持一个文件系统,如ext3文件系统对应的就是ext3子目录
  /include:目录包括编译核心所需要的大部分头文件,例如与平台相关的头文件在/include/linux子目录下,与 intel
cpu相关的头文件在/include/asm-i386子目录下,而/include/scsi目录则是有关scsi设备的头文件目录。
  /init:目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。
  /ipc:目录包含了核心进程间的通信代码
  网赌平台哪个信誉好,/Kernel:内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在/archlib/目录下。
  /mm:目录包含了所有独立于 cpu
体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码位于/arch/*/mm目录下,例如/arch/i386/mm/Fault.c

  /net:目录里是核心的网络部分代码,实现了各种常见的网络协议,其每个子目录对应于网络的一个方面。
  /scripts:目录包含用于配置核心的脚本文件等
  /block块设备驱动程序I/O调度
  /crypto:常用加密和散列算法(如AES,SHA等),还有一些压缩和CRC校验算法。
  /security:主要包含SELinux模块。
  /sound:ALSA,OSS音频设备的驱动核心代码和常用设备驱动。
  /usr:实现了用于打包和压缩的cpio等。

<2>内核抢占:内核任务可以被抢占,从而提高系统的实时性

原文:http://www.cnblogs.com/heiyue/archive/2011/06/09/2076179.html

<3>改进的线程模型:线程操作速度提高,可以处理任意数目的线程

<4>虚拟内存的变化:融合了r-map(反向映射)技术

<5>文件系统:对扩展属性和POSIX标准访问控制的支持

<6>音频:新的音频体系结构ALSA替代旧的OSS,支持USB音频和MIDI设备,并支持全双工

<7>总线、电源管理、网络(IPv6)、用户界面等

在设备驱动程序方面主要变化有:

<1>内核模块从.o 变成.ko

<2>驱动模块编译方式

<3>模块使用计数

<4>模块加载和卸载函数的定义等方面

二、内核目录介绍:

arch:包含和硬件体系结构相关的代码

block:块设备驱动程序I/O调度

crypto:常用加密和散列算法

Documentation:内核各部分的通用解释和注释

drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等

fs:支持的各种文件系统

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图