《深入理解Linux内核》笔记九

来源:互联网 发布:淘宝直通车钱能退吗 编辑:程序博客网 时间:2024/05/24 01:40

每个块描述符都对应一个bdev特殊文件;块设备描述符的bdinode字段指向相应的bdev索引节点,而该索引节点则将块设备的主次设备号和相应描述符的地址进行编码

 

磁盘构造,也就是磁盘使用的柱面数磁道数、扇面数和磁头数

 

策略例程是块设备驱动程序的一个函数或一组函数,它与硬件块设备之间相互作用以满足调度队列中所汇集的请求

 

在把新的请求插入到空的请求队列后,策略例程通常才被启动

 

第十五章、页高速缓存

页高速缓存:一种对完整的页进行操作的磁盘高速缓存

 

脏页在保留一段时间后,内核就显式地开始进行I/O数据的传输,把脏页的内容写到磁盘

 

第十六章、访问文件

将磁盘文件系统的普通文件、块设备文件统称为“文件”

 

访问文件的模式:

规范模式、同步模式、内存映射模式、直接I/O模式、异步模式

 

异步模式下,文件访问可以通过一组POSIX API或linux特有的系统调用来实现

 

当访问给定文件时,预读文件算法给定两个页面集,各自对于文件的一个连续区域,分别叫做当前窗current window和预读窗ahead window

 

内存映射memory mapping:内核把对线性区中页内某个字节的访问转换成对文件中相应字节的操作

 

对每个不同的文件系统,内核提供了几个钩子hook函数来定制其内存映射机制

 

直接I/O传递可以绕过页面高速缓存

任何数据内容传输都是异步的

“异步”实际上就是:当用户态进程调用库函数读写文件时,一旦读写操作进入队列函数就结束,甚至有可能真正的I/O数据传输还没有开始。这样调用进程可以在数据正在传输时继续自己的运行

 

异步I/O可以由系统库实现,而完全不需要内核支持

 

基本上,一个异步I/O环境(简称AIO环境)就是一组数据结构,这个数据结构用于跟踪进程请求的异步I/O操作的运行情况

AIO环是用于在进程中地址空间的内存缓冲区,它也可以由内核态的所有进程访问。AIO实际上是一个环形缓冲区,内核用它来写正运行的异步I/O操作完成的报告

 

第十七章、回收页框

当系统负载较低时,RAM的大部分由磁盘高速缓存占用,很少正在运行的进程可以从中获益

        增加                                 进程页                 高速缓存缩小,从而给后来的进程让出空间

 

 

请求调页机制:只要用户态进程继续执行,他们就能获得页框

 

页框回收算法的目标之一就是保存最少的空闲页框,以便内核可以安全地从“内存紧缺”的情形中恢复过来

页框回收算法(PFPA)的目标就是获得页框并使之空闲

 

反向映射reverse mapping:linux2.6内核能够快速定位指向同一页框的所有页表项

 

CPU 使用地址总线选择I/O端口,使用数据总线在CPU寄存器和端口之间传送数据

 

I/O端口还可被映射到物理地址空间

 

现代的硬件设备更倾向于映射的I/O。因为这样处理速度更快。并可以结合DMA

 

I/O接口  I/O interface 是处于一组I/O端口和对应的设备控制器之间的一种硬件电路。它起翻译器的作用,即把I/O端口中的值转换成设备所需要的命令和数据

 

串口包括一个通用异步收发器UART芯片,它可以把要发送的字节信息拆分成位序列,也可以把接收到的位流重新组装成字节信息

 

网卡是不直接与设备文件相对应的硬件设备

 

设备驱动程序是内核例程的集合,它使得硬件设备响应控制设备的偏移接口,而该接口是一组规范的UFS函数集open,read,lseek,ioctl等

 

监控I/O操作结束的两种可用技术分别称为轮询模式polling mode和中断模式interrupt mode

 

直接内存访问DMA,可用来控制在RAM和I/O设备之间数据的传送

使用DMA最多的是磁盘驱动器和其他需要一次性传送大量字节的设备

 

同步CMA,数据的传送是由进程触发的,异步的CMA,数据的传送是由硬件设备触发的

0 0