第5章 缓冲区管理
缓冲区结构
frame的参数
- Dirty
- Frame中的块是否已经被修改
- Pin-count
- Frame的块的已经被请求并且还未释放的计数,即当前的用户数
- *Others
- Latch: 是否加锁
当请求块时
- 当一个程序请求一个不在内存中的数据块时,操作系统需要从磁盘中读取该数据块。
- 首先,它需要在内存中找到一个帧来存放这个数据块。
- 如果选中的帧是脏的(即,帧中的数据已被修改但尚未写回磁盘),那么操作系统需要先将这个帧的内容写回磁盘。
- 然后,操作系统从磁盘中读取请求的数据块,并将其放入选中的帧中。
- 最后,操作系统会增加该帧的固定计数Pin-count(即,标记该帧正在被使用),并返回该数据块在内存中的地址。这样,程序就可以直接访问内存中的数据,而不需要再次从磁盘中读取。这个过程是操作系统管理内存的重要部分,也是实现虚拟内存的关键。
当释放块时
- 当程序完成对一个数据块的访问后,它需要取消固定(unpin)包含该数据块的帧,以便操作系统可以在需要时重新使用该帧。
- 同时,如果程序修改了数据块的内容,它需要设置该帧的脏位(dirty bit)。脏位是用来标记帧中的数据是否已被修改,但尚未写回磁盘。如果脏位被设置,那么在帧被替换之前,操作系统需要先将帧的内容写回磁盘。这样可以确保磁盘中的数据始终是最新的,即使发生了系统崩溃或电源故障。
缓冲区替换策略
- 当内存中没有空闲的帧来存放新的数据块时,操作系统需要选择一个已经被使用的帧进行替换。选择哪个帧进行替换是由替换策略决定的,常见的替换策略包括最近最少使用(LRU),时钟,先进先出(FIFO),最近最常使用(MRU)等。
- 只有当帧的固定计数为0时,也就是说,当没有程序正在使用该帧时,该帧才会被考虑作为替换的候选者。
- 替换策略的选择可以对系统的I/O性能产生重大影响,因为每次替换都可能需要从磁盘中读取数据或将数据写回磁盘。不同的访问模式可能会导致某些替换策略比其他策略表现得更好。
理论最优算法:OPT算法
也称为Belady’s算法
8 分钟阅读3854 字