linux内核完全注释(课件)第六章.ppt

linux内核完全注释(课件)第六章.ppt

ID:49041921

大小:468.01 KB

页数:55页

时间:2020-01-30

linux内核完全注释(课件)第六章.ppt_第1页
linux内核完全注释(课件)第六章.ppt_第2页
linux内核完全注释(课件)第六章.ppt_第3页
linux内核完全注释(课件)第六章.ppt_第4页
linux内核完全注释(课件)第六章.ppt_第5页
资源描述:

《linux内核完全注释(课件)第六章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux操作系统内核分析湘潭大学信息工程学院讲课内容设备管理简介硬盘驱动虚拟盘驱动块设备的操作方式P132图6-2设备管理模块读处理过程进程向缓冲区模块提出读块(2扇区)请求。缓冲区模块检查该块是否已经被缓冲。如果已经被缓冲,则直接返回缓冲的块;否则,向设备管理模块提出读请求。设备管理模块接受请求。如果设备不忙,则向设备发送命令;否则,把请求插入到设备的请求队列中。缓冲区模块挂起进程。设备控制器从设备中读入数据到自己的缓冲区中,并产生中断。设备中断处理程序把数据从控制器缓冲区读到内存缓冲区,然后唤醒进程。P248第267设备管理模块写处理过程

2、缓冲区模块决定要回写被缓冲的块。如果该块是脏的,向设备管理模块提出写请求。设备管理模块接受请求。如果设备不忙,则向设备发送命令和数据;否则,把请求插入到设备的请求队列中。缓冲区模块挂起进程。设备控制器把数据写入到设备并产生中断。设备中断处理程序唤醒进程。低级读写流程根据缓冲区头创建一个请求队列中没有请求把请求插入到设备的请求队列中向设备发送命令是否说明设备空闲设备号设备是通过主设备号和次设备号(两者构成了物理设备号)来进行区分的主设备号:区分不同类型的设备(P131表6-2)次设备号:区分相同类型设备中的个体逻辑设备号用于区分不同的设备,逻辑设

3、备号=主设备号<<8+次设备号#defineMAJOR(a)(((unsigned)(a))>>8)#defineMINOR(a)((a)&0xff)P395第33、34行逻辑设备号块设备请求项structrequest{intdev;//逻辑设备号,-1表示是自由的请求项intcmd;//命令(P395第26—29)interrors;//如果超过MAX_ERRORS,要重置设备unsignedlongsector;//要读或写的开始扇区unsignedlongnr_sectors;//要读或写的数量char*buffer;//数据缓冲区指针

4、structtask_struct*waiting;//等待请求完成的进程队列structbuffer_head*bh;//缓冲区头指针structrequest*next;//同一设备的下一个请求项};P131或P134第23行块设备请求项数组为方便查找空闲请求项,建立了请求项数组。structrequestrequest[NR_REQUEST];//定义在ll_rw_blk.c(P150第21行)#defineNR_REQUEST32//定义在blk.h(P134第15行)块设备结构每个块设备都有自己的独立的请求队列。为方便管理队列,建立了

5、块设备结构。structblk_dev_struct{void(*request_fn)(void);//设备独有的请求处理函数指针structrequest*current_request;//请求队列头指针};//blk.h(P134第45行或P130)块设备结构Linux支持多种块设备,为所有这些块设备结构建立了一个数组,数组下标就是设备的主设备号。structblk_dev_structblk_dev[NR_BLK_DEV]//P151第32行#defineNR_BLK_DEV7数据结构间的关系P132图6-1设备管理模块接口设备管理模

6、块文件管理模块(缓冲区)ll_rw_block中断管理模块hd_interruptfloppy_interrupt初始化模块blk_dev_inithd_initfloppy_initsetup初始化voidblk_dev_init(void)//定义在ll_rw_blk.c(P153第157行)作用:完成请求项数组的初始化voidhd_init(void)//定义在hd.c(P146第343行)voidfloppy_init(void)//定义在floppy.c(P168第457行)longrd_init(longmem_start,intl

7、ength)//定义在ramdisk.c(P155第52行)低级读写操作voidll_rw_block(intrw,structbuffer_head*bh)//定义在ll_rw_blk.c(P153第145行)作用:完成低级读写操作参数:rw——读写命令bh——缓冲区头指针电梯算法磁头朝一个方向运动来满足该方向上最近的请求。当该方向上所有的请求都处理完之后,则反方向来处理其它请求。例如:磁头正在第5柱面处理请求,磁头向内运动,其后有5个请求到达,分别是第7、2、6、1、8柱面上的请求。则处理顺序是:567821电梯算法在一般情况下,所有请求都

8、能获得合适的处理。但是,在极端情况下仍然会造成饿死现象。例如:上例中,如果不断的有第5柱面之后的处理请求,则第1、2柱面的处理请求会饿死。电梯算法改进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。