个人主页:godspeed_lucip
系列专栏:OS从基础到进阶
(1)块号的字节
假设:
由于内存块的大小(物理)=页面大小(逻辑) = 4KB = 212B,则一个4GB的内存总共会被分为232/2^12 = 220块,则内存块号的范围应该是0-220-1,需要使用20个Bit存储,也就是至少需要3个字节(24B)进行存储。
(2)页号的字节
由于页表项是连续存储的,因此只要知道页号以及页表的起始地址就可以计算得到目的页号的块号,因此页表不需要存储页号,字节为0。
(3)综上,每一个页表项占3字节(在题中所给条件上)
(4)注意
并不存储物理地址
(1)虽然进程的各个页面是离散存放的,但是页面内部是连续存放的
(2)转换步骤:
(1)例子:
我们知道,对于一个进程来说,各页面是离散存放的,但是在逻辑上各页面是连续存放的。页面内部不管是物理上还是逻辑上都是连续存放的。如图:
据此可以快速得到地址的转换逻辑:
(2)拓展
假设一个计算机是用32个二进制位表示逻辑地址,页面大小位4KB = 2^12B = 4096B
那么,进程数据的逻辑地址的后12位为页面偏移量,逻辑地址的前20位是页号,比如:
(3)我们知道,n号内存块的起始地址 = n*内存块大小。以我们刚才的例子为例:
则逻辑地址的后12位为业内偏移量,前20位为页号。由此我们可以得到结论:
基本地址变换机构是一组用于实现逻辑地址到物理地址转换的硬件机构
假设页面的大小为2的整数次幂。当一个进程发生调度需要上处理机运行时,操作系统会将恢复进程的运行环境,将进程的PCB(存放页表的地址与页表的长度)放入页面寄存器中以方便操作系统进行管理,此外,程序计数器PC也会将进程下一条需要执行的指令的逻辑地址A放入,那么如何知道进程下一条指令的物理地址呢?
(1)转换机构根据逻辑地址计算出页号P、页内偏移量W。假如页面大小为2的整数次幂,那么这个过程是很方便的
(2)假如一个进程的页表长度为M,意味着这个进程有M个页面,假如P>M,那么说明出错,操作系统会发生越界终端(内中断)
(3)确定M合法后,操作系统查询页表并找到页号对应的页表项,确定页面存放的内存块号。
(4)使用内存块号和页内偏移量计算得到物理地址(直接拼接),此时就可以访问内存单元了。
变换步骤如图:
所以,尽管3个字节已经可以表示所有的内存块,但是为了计算方便,经常会将页表项扩充为四个字节
1. 快表是一种硬件设备,它的内容在每次进程切换之后都会删除,它的访问速度虽然很快,但是由于成本的限制,快表的存储空间不会很大。
2. 引入快表后,操作系统在得到逻辑地址后会分离得到页号,接着进入快表去寻找页号对应的内存块号,假如没找到就会进入慢表(也就是之前的页表)进行寻找,并将寻找结果复制一份存入快表有方便下次寻找。其他步骤与无快表的地址变换过程类似。
对于while(i<100)这一条指令,程序在不久的将来是会频繁访问的,对于i这个变量,程序在不久的将来也是会频繁访问。这就是时间局部性。
对于a数组,它在内存中是连续存放的,假如此时系统访问了a[10],那么a[10]周围的数据就很有可能会被频繁访问。这是空间局部性。
操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。
它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。
操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。
在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。
渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。