您的位置:首页 > 运维架构 > Linux

读书笔记之《深入理解LINUX内核》13、14、15、16 章

2012-02-16 13:18 253 查看
第13章:I/O体系结构和设备驱动程序       

    第一节I/O体系结构。重要概念有I/O端口、I/O接口和设备控制器。

    第二节设备驱动模型。Linux 2.6 提供了一些数据结构和辅助函数,它们为系统中所有的总线、设备以及设备驱动程序提供了一个统一的视图;这个框架被称为设备驱动模型。每个设备由一个device对象来描述。驱动程序由device_driver对象描述。总线类型由bus_type对象描述。    

    第三节设备文件。内核通过访问设备文件来访问I/O设备。    

    第四节第四节设备驱动程序。设备驱动程序是内核例程的集合。驱动程序加载到内核之前需要被注册,在设备使用之前又需要初始化。    

    第五节第五节字符设备驱动程序。字符设备驱动程序是由一个cdev结构描述的。

 

第14章:块设备驱动程序

    1、块设备的主要特点是,CPU和总线读写数据所花时间与磁盘硬件的速度不匹配。

    2、第一节块设备的处理讲解了Linux块设备I/O子系统的一般体系结构。这一节还介绍了磁盘设备的“扇区”,“块”,“段”,这几个概念以及一些相关的设定。

    3、第二节通用块层。通用块层是一个内核组件,它处理来自系统中的所有块设备发出的请求。其核心数据结构是一个称为bio的描述符,它描述了块设备的I/O操作。

    4、第三节 I/O调度程序,决定在请求队列中的哪一个I/O请求先得到处理。请求队列是由一个大的数据结构request_queue表示的,称为请求队列描述符。在请求队列里的每一个请求又由一个请求描述符来描述,也就是request数据结构。Linux 2.6中提供了四种不同种类的的I/O调度算法(或说是电梯算法),分别为“预期算法”,“最后期限算法“,”完全公平算法(CFQ)“以及Noop算法”。

    5、第四节 块设备驱动程序,每个块设备驱动程序对应一个device_driver类型的描述符。而每个块设备都是由一个block_device结构的描述符来表示的。所有块设备描述符被插入一个全局链表中。

    6、第五节 打开设备文件,本节详细介绍了open方法的具体操作。

 

第15章:页高速缓存

    1、磁盘高速缓存是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问不用再访问磁盘而能尽快得到满足。

    2、第一节 页高速缓存,主要讲解了3方面的内容:①address_space对象,②基树,③页高速缓存的处理函数。函数的操作包括查找页、添加页、删除页、更新页。而为了更好地执行以上操作,需要对基树进行标记。

    3、第二节 把块存放在页高速缓存中,重要概念是缓冲区首部。Alloc_buffer_head()和free_buffer_head()函数分别用于获取和释放缓冲区首部。

    4、第三节 把脏页写回磁盘。“只要进程修改了数据,相应的页就被标记为脏页,即把它的PG_dirty标志置位。”刷新脏页由内核线程pdflush 负责。

    5、第四节介绍了3个系统调用。Sync()允许进程把所有的脏缓冲区刷新到磁盘。Fsync()允许进程把属于特定打开文件的所有块刷新到磁盘。Fdatasync()与fsync()非常相似,但不刷新文件的索引节点块。

 

第16章:访问文件

    1、访问文件的模式有多种:规范模式、同步模式、内存映射模式、直接I/O模式、异步模式。

    2、第一节 读写文件。大多数磁盘文件系统的read方法是由名为generic_file_read()的通用函数实现的。而大多数磁盘文件系统是通过通用函数generic_file_write()实现它们的write方法的。本节详细介绍了generic_file_read() 函数和generic_file_write()函数以及它们涉及到的一些其他的函数。另外,还讲解了基于当前窗和预读窗的预读技术。

    3、第二节 内存映射。内核把对线性区中页内某个字节的访问转换成对文件中相应字节的操作,这种技术称为内存映射(memory mapping)。有两种类型的内存映射:共享型和私有型。内核可以发出一个mmap()系统调用来创建一个新的内存映射。而当进程准备撤销一个内存映射时,就调用munmap()。

    4、第三节 直接I/O传送。有一些非常复杂的程序为了提高效率不使用内核提供的页高速缓存等机制,而是实现自己的高速缓存。此时,内核只能放手,让程序利用直接I/O传送,绕过页高速缓存。

    5、第四节 异步I/O。异步I/O也是提高效率的另外一种技术,因为它可以在后台运行,使得程序可以做更多的事情。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐