标签:10 缓存 Unix 笔记 学习 算法 缓冲区 磁盘 设备
第十二章 块设备I/O和缓冲区管理 12.1 块设备I/O缓冲区 读写普通文件的算法: 依赖于两个关键操作get_block和put_block,这两个操作将磁盘块读写到内存缓冲区中 块设备的缺点: 基于给定固态存储器的块设备比基于相同类型的存储器的字节寻址要慢一些,因为必须在块的开头开始读取或写入。所以,要读取该块的任何部分,必须寻找到该块的开始,读取整个块,如果不使用该块,则将其丢弃。要写入块的一部分,必须寻找到块的开始,将整个块读入内存,修改数据,再次寻找到块的开头处,然后将整个块写回设备。 I/O缓冲的基本原理:- 文件系统使用一系列I/O缓冲区作为块设备的缓存内存。
- 当进程试图读取(dev, blk)标识的磁盘块时,它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。
- 如果该缓冲区存在并且包含有效数据,那么它只需从缓冲区中读取数据,而无须再次从磁盘中读取数据块。
- 如果该缓冲区不存在,它会为磁盘块分配一个缓冲区,将数据从磁盘读入缓冲区,然后从缓冲区读取数据,当某个块被读入时,该缓冲区将被保存在缓冲区缓存中,以供任意进程对同一个块的下一次读/写请求使用。
- 当进程写入磁盘块时,它首先会获取一个分配给该块的缓冲区。然后,它将数据写入缓冲区,将缓冲区标记为脏,以延迟写入,并将其释放到缓冲区缓存中 由于脏缓冲区包含有效的数据,因此可以使用它来满足对同一块的后续读/写清求,而不会引起实际磁盘I/O,脏缓冲区只有在被重新分配到不同的块时才会写入磁盘。
- (1)效率低下:该算法依赖于重试循环
- (2)缓存效果不可预知:在Unix算法中,每个释放的缓冲区都可被获取
- (3)可能会出现饥饿:Unix算法基于“自由经济”原则,每个进程都有尝试的机会,但不能保证成功
- (4)该算法使用只适用于单处理器系统的休眠/唤醒操作
- (1)保证数据一致性
- (2)良好的缓存效果
- (3)高效率:没有重试循环,没有不必要的进程“唤醒”
- (4)无死锁和饥饿
- (1)缓冲区唯一性
- (2)无重试循环
- (3)无不必要唤醒
- (4)缓存效果
- (5)无死锁和饥饿
二.完善与补充内容
在学习这部分内容的时候脑海中隐约浮现了操作系统课程中讲过的内容,发现会有很多的共通之处,于是乎再次整合学习内容,以及查找网络的资料发现以下内容:
1.I/O全流程思维导图
2.I/O 层次结构及其主要功能
3.中断处理程序
在上次的学习笔记中有过对该内容的总结和笔记,但缺少流程示意图,示意图如下:
以上图片均取自操作系统 I/O 全流程详解 - 程序员cxuan - 博客园 (cnblogs.com)
三.总结与反思
在学习过程中我们会发现很多东西好像在哪听过,仔细一想原来是另一门课程,这告诉我们在学习的过程中需要建立起知识网络图,让所学的知识全部串在一起,有效的学习一门课程的同时还能复习另一门的内容,如同思维导图那样将所有的有关内容罗列在一起,方便复习巩固自己已有的知识,这方面的能力仍需培养。
标签:10,缓存,Unix,笔记,学习,算法,缓冲区,磁盘,设备 来源: https://www.cnblogs.com/Ye-fen/p/15584396.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。