linux 011 注释8:函remove_from_queues (), insert_into_queues() 及新设计团队艺术书第二版第三章 3-24------3-36

(60)接着注释函数 remove_from_queues (), insert_into_queues() ,管理内存缓冲块,实现了 LRU 算法,双向环链表的头部是空闲块,尾部是分配出去的忙碌块:

在这里插入图片描述

(61)接着涉及读取硬盘,先来看看系统是如何初始化块设备的,3-25 块设备初始化blk_dev_init,hd_init:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f93aa2be18743099f4136ca8bd02338.jpeg

(62)接着介绍申请缓冲块的大函数 get_blk()以及 wait_on_buffer() :

在这里插入图片描述

(63)进程的为等待资源的 睡眠与唤醒,是比较神奇的事情,进程在读硬盘申请内存缓冲块时出现了 sleep_on ()函数的调用,配对的又有进程的唤醒函数 wake_up() 。给临界区资源加锁解锁时候,就用到了这两个函数:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a969c5e05fcc4389800c5f9456c732

(64)至此,系统已多次申请了公共资源,或者叫临界资源,当申请不到时,或资源不可用时进行等待,那么系统中有哪些临界资源呢:

在这里插入图片描述

(65) 接着介绍函数 ll_rw_block(),add_request() 为最终的读写块设备做准备。对请求的排序要求是读比写优先,并减少硬盘寻道时间:

![![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/60c7ecdc78044cc395dfa4061b646603.jpeg](https://i-blog.csdnimg.cn/direct/f5f21247bc9a4637b6347d2151d89909.jpeg

(66)对块设备的读写请求,并非是直接的,而是经 全局 request[] 数组的限制数量后,再交给块设备去执行的。系统的设计还可以让块设备保存多个针对自己的读写请求,并依次执行。这是其中的一个函数 make_request():

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9301deacd5ac4517965ed00eb2ee783d.jpeg

(67)接着介绍真正读取硬盘数据的更底层的函数:

![3-32   函end_request,INIT_REQUEST,do_hd_request下](https://i-blog.csdnimg.cn/direct/afd742a3e1f342e59cb086023daf438d.jpeg

![![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d0d161e7fa2640709aa3f0bcfd0269cb.jpeg](https://i-blog.csdnimg.cn/direct/f03ae20c8d3c4bbd8c1c1564174b08a7.jpeg

(68) do_hd_request 会调用更基层的函数 hd_out(), controller_ready(),然后会进入真正的读盘操作:

3-33   函hd_out,controller_ready

(69)在阅读硬盘中断函数前,先理清几个全局变量的定义 do_hd , do_floppy 。以及进程的五种状态的具体含义:

在这里插入图片描述

(70)接着学习一条新汇编的 intel 指令 , insw , input string word:

在这里插入图片描述

(71) 接着介绍硬盘中断函数 :

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4ce69ce4182d4443a1ae09e636d7dca5.jpeg

(72)硬盘中断函数里又调用了这几个关于硬盘读写的函数:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a0c7b2679d484774a127f100cf4d2a86.jpeg

(73)
谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值