I/O管理
引入缓冲区的原因
降低设备速率低的一种策略
提高效率 磁盘调度、RAID
分层设计
两大架构:①效率 ②通用性
假定:一个用户进程将从磁带上读入若干抉数据(每块100字节);数据块装入用户进程地址空间中的一个数据区,其虚拟地址为1000~1099 ( 100字节)
请问:如果从磁带上读进一块数据并直接把它送入用户进程的工作区,会有什么问题?



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

Single Buffer (单缓冲区)
- 可见,相对于没有使用I/O缓冲区的情形,引入单I/0缓冲区后,用户进程的运行效率得到了提高。
- 然而,如果用户进程在对有关数据进行加工处理时并不释放I/0缓冲区,那么用户进程的性能并不能得到改善。
Doublie Buffer(双缓冲区)

- 使用双I/0缓冲区,即使用户进程在对有关数据进行加工处理时不释放相关的I/0缓冲区,用户进程的性能也能得到改善。
- 与单I/0缓冲区类似,如果T远远大于C,即外部设备的I/0速度比用户进程的计算速度慢得多,那么即使引入双I/0缓冲区,用户进程的性能也几乎没有得到改善。
- 缓和外部设备的I/0速度与用户进程的计算速度不匹配的一种有效的办法是,在外部设备和用户进程之间设立多个I/0缓冲区。
Circular Buffer(循环缓冲区)
Disk Cache(磁盘缓存)
不是一种硬件设施,是内存中设置的一种缓冲区。
工作原理
-
当用户进程请求从磁盘读入一个扇区时,系统首先在disk cache中寻找该扇区的副本。
① 如果能够找到,那么系统将从disk cache中取出该扇区的副本并返给用户进程;
②否则,系统首先从磁盘上读入该扇区并在disk cache中为其建立一个副本,然后将该副本返给用户进程。 -
当用户进程请求向磁盘上写出一个扇区时,系统同样首先在disk cache中寻找该扇区的副本
①如果能够找到,那么系统将根据用户进程的请求修改该扇区的副本;
②否则,系统同样首先从磁盘上读入该扇区并在disk cache中为其建立一个副本,然后根据用户进程的请求修改该副本。
Wirte through (写穿透技术)
设计问答
- 当用户进程请求从磁盘上读入一个扇区时,如果系统能够在disk cache中找到该扇区的副本,那么系统如何把该副本提交给用户进程?
如果系统不允许用户进程访问disk cache ,那么系统将把用户进程需要的扇区从dlisk cache中复制到用户进程的工作区。
如果系统允许用户进程访问disk cache ,那么系统将把用户进程需要的扇区副本在diskcache中的位置指针传递给用户进程。
- 当系统需要从磁盘上读入一个扇区并在diskcache中为其建立一个副本时,如果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 技术

网友评论