14 | 块设备初始化blk_dev_init:读取硬盘前的准备工作
闪客
上一讲我们说到中断初始化 trap_init,它可以设置中断描述符表中的一些中断处理函数,比如键盘中断、硬盘中断等等,是我们学到的 main 方法中的第三个初始化函数。
这一讲,我们会看到块设备初始化的过程,为后续读写磁盘做准备。
我们接着往下看,blk_dev_init 方法。
直译过来就是块设备初始化。
块设备初始化
我们知道,读取硬盘数据到内存中,是操作系统的一个基础功能。这个过程需要有块设备驱动程序、文件系统、缓冲区,甚至进程的阻塞与唤醒等功能的支持。
但不要慌,我们就按照源码的顺序,看看这个块设备初始化究竟在搞什么鬼。
我没看错吧,这也太简单了吧?
就是给 request 这个数组前 32 个元素结构体中的两个属性 dev 和 next 附上值,看这两个值 -1 和 NULL 也大概可以猜出,这是没有任何作用时的初始化值。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了块设备初始化的过程,为后续读写磁盘做准备。通过分析源代码,文章详细解释了blk_dev_init方法的实现过程,以及request结构体的重要性和各个成员变量的含义。文章还简要介绍了sys_read和file_read函数的作用,以及这些函数如何与request结构体和硬盘IO端口进行交互。最后,文章总结了本文的内容,强调了blk_dev_init的重要性,为后续的块设备访问提前建立了一个数据结构,作为访问块设备和内存缓冲区之间的桥梁。文章内容详实,适合读者快速了解块设备初始化的技术特点。
该试读文章来自《Linux0.11 源码趣读》,如需阅读全部文章,
请先通过赠一得一解锁课程
请先通过赠一得一解锁课程
赠一得一
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 夜未眠request数据结构是在哪里定义的呢?闪客大佬2023-03-10归属地:云南1
- Fighting越来越精彩了!2023-02-27归属地:北京
收起评论