王道操作系统CLOCK算法理解
最近复习到操作系统的CLOCK算法,虽然这个算法看起来简单,但在做题时却十分费解,尤其是指针的位置,本文针对王道课后相关习题做以解释说明。
21版王道操作系统3.2.9第11题
对于了解FIFO、LRU算法以及CLOCK算法的同学不难做出结果,但本人在计算CLOCK算法时,得出的结果却是虚拟页号为1的页(答案为虚拟页号为2,页帧号为0的帧),在看课后习题时亦百思不得其解,刚开始本人的理解如下:
- 首先根据CLOCK算法,在指针摆动的过程中,所遇到第一个访问位为0的页面即换出页面;
- 如何判断指针位置呢,由于最近访问时间最靠前的虚拟页号为2和1的页的访问位均为0,故判断指针当前位置在虚拟页号为2号的页帧上,刚将该帧的访问位置0;
- 故接下来指针顺序摆动,将表中第三行和第四行的页帧访问位置0,随后回到虚拟页号为1的页帧处,此时结束第一轮指针搜寻;
- 随后指针发现当前所在页帧的访问位为0,故换出;
想必此时对CLOCK算法十分了解的同学已经发现了问题所