第六章 I/O管理

2021-08-29  本文已影响0人  喜忧参半

I/O管理

引入缓冲区的原因

降低设备速率低的一种策略
提高效率 磁盘调度、RAID
分层设计

两大架构:①效率 ②通用性


假定:一个用户进程将从磁带上读入若干抉数据(每块100字节);数据块装入用户进程地址空间中的一个数据区,其虚拟地址为1000~1099 ( 100字节)
请问:如果从磁带上读进一块数据并直接把它送入用户进程的工作区,会有什么问题?


由于磁带机的速率很慢,因此当进程申请I/O数据读入时,该进程会阻塞,以等待该数据的载入,如果此该存储该数据的内存地址空间,由于进程被挂起,而分配给其他进程,那么当磁带机读入的数据就可能会丢失,此时那个被阻塞的进程永远等不到自己需要的数据,而陷入了无限等待。所以没有缓冲区时,可能会发生单进程死锁!

I/O Buffering

核心思想:在内存中建立I/O缓冲区

Single Buffer (单缓冲区)

Doublie Buffer(双缓冲区)

Circular Buffer(循环缓冲区)

Disk Cache(磁盘缓存)

不是一种硬件设施,是内存中设置的一种缓冲区。

工作原理


Wirte through (写穿透技术)

设计问答

如果系统不允许用户进程访问disk cache ,那么系统将把用户进程需要的扇区从dlisk cache中复制到用户进程的工作区。

如果系统允许用户进程访问disk cache ,那么系统将把用户进程需要的扇区副本在diskcache中的位置指针传递给用户进程。

① LRU置换算法
The block that has been in the cache the longestwith no reference to it is replaced.


The cache consists of a stack of blocks.Most recently referenced block is on thetop of the stack.
缓存由一堆块组成,大多数最近引用的块位于堆栈的顶部。
When a block is referenced or broughtinto the cache, it is placed on the top ofthe stack.
当一个块被引用或显示到缓存中时,它被放置在堆栈的顶部。

②LFU置换算法(频率)
Least Frequently Used (LFU置换算法)-The block that has experienced the fewestreferences is replaced.


A counter is associated with each block.·Counter is incremented each time blockaccessed.
计数器与每个块相关联。·计数器每次访问块时递增。

Block with smallest count is selected forreplacement.
选择具有最小计数的块进行替换。

Some blocks may be referenced manytimes in a short period of time and thennot needed any more.
一些块可能在短时间内被多次引用,因此不再需要。



SPOOLing 技术

上一篇 下一篇

猜你喜欢

热点阅读