408王道操作系统强化——存储管理及大题解构(上)

简介: 408王道操作系统强化——存储管理及大题解构

1.物理地址/逻辑地址相互关系

1.系统位数、虚拟地址空间大小、虚拟地址总位数(按字节编址)三者等价,可以相互推出

d44ebc789ad74fc1ae3ee2669cec9c99.png

2.一级页表情况下,页号和页表索引是同一概念:页号 + 页内偏移量 = 虚拟地址总位数;也是多级页表下最后一级的页表

3.二级页表情况下,顶级页表的页号为页目录号:页目录号 +  页号 + 页内偏移量 = 虚拟地址总位数

4.页目录表大小(顶级页表总占用空间)= 页目录号总个数(通过页目录号的位数推出) * 单个页目录项的长度(每个页目录项的大小相同)image.png

5.逻辑页号/虚页号 = 页目录号 + 页号:总的虚页号用于查找TLB

①逻辑地址 = 逻辑页号 + 页内偏移量

②逻辑页号根据使用的是几级页表被拆分为几个部分,即一级页表情况下,逻辑页号 = 页号;二级页表情况下,逻辑页号 = 页号 + 页目录号image.png

6.页内偏移量/页内地址、页面大小、页框大小三者等价

e4d6699d38dc4454869162260884728a.png

7.具体的地址(例如123456H)和被拆分成三部分的虚拟地址(12H、34H、56H)之间可以相互转化6a4e0e22978f4b65baa656806e1c5139.png

8.页框号 + 页内偏移量 = 物理地址:

①查找根据逻辑地址TLB或者内存中的慢表的目的是得到物理地址的页框号

②查到物理地址的页框号后,根据逻辑地址中的页内偏移量可以拼接得到最终的物理地址

③逻辑地址到物理地址的转换过程中页内偏移量是不变的327676e272fa47439baaa82dba627327.png

9.页表大小(二级页表总占用空间)= 页表项总个数(通过页表的位数推出) * 单个页表项长度(每个页表项的大小相同)(与页目录项同理)

0767b862ee7d43e7bdd9b572d8dabeea.png

10.目标页表项的物理地址 = 页表的起始物理地址 + 页号 * 页表项长度:

①页表在内存中是连续存放的(类似数组),故它们可以根据页号和单个页表项长度找到目标页表项的物理地址(数组元素大小和数组下标)

②根据页表项的物理地址可以找到该页表项中的具体内容,根据具体内容答题

aebda6f8bcaf41f581c4a7ba10e0c24a.png


11.目标页目录项的物理地址 = 页目录的起始物理地址 + 页目录号 * 页目录项长度:找到该页目录项的具体内容后,可以根据10中关系再最终找到目标页表

image.png

2.存储系统

1.磁盘以块为单位

2.内存物理上被分为若干页框(考试中一般认为页框大小和磁盘块大小一致,但是现实中可能一致)

3.进程被分为若干页面,每个进程的页面被离散的放在内存中的页框中

4.CPU访问进程某个页面时需要查询TLB/慢表进行地址转换:

①进程的页面和页表项一一对应

②每个页表项中记录页号和实际物理地址的页框号的映射关系,以及是否有效(是否已经调入内存/是否缺页)

5.进程间有共享的页面(每个进程都有一个固定的地址部分映射到内核区的代码和内核数据,用于实现各种系统调用):

①当进程之间利用系统调用进行通信的时,进程A先通过系统调用(存放在内核代码区)将要通信的内容存放在内核数据区

②进程B再通过系统调用将存放在内核数据区的内容取出,并放入自己的数据区中(进程A和进程B的内核区映射到的是同一片主存地址空间

6.进程的数据区由若干指令组成,执行指令时可能需要访问某个虚拟地址,CPU就会将虚拟地址从指令中拆分出来,并进行虚拟地址到物理地址的转换:

①使用虚拟地址中的虚拟页号查询TLB(TLB存放的是虚拟页号和物理地址页框号的映射关系)

②TLB命中(TLB中有和虚拟页号对应的表项)且有效位为1时:该情况下不可能发生缺页

(1)将该表项中存放的页框号和页内偏移量进行拼接得到物理地址

(2)根据物理地址中的页框号找到对应页框

(3)根据页内偏移量找到对应的具体数据,并取出该数据

③TLB命中但有效位为0,或者TLB未命中:

(1)根据页表始址寄存器中存放的内容(页表始址)得到存放该进程页表的页表始址(进程未运行,页表始址存放在PCB中;进程上处理机运行时,CPU将页表始址从PCB中取出并放入页表始址寄存器中)

(2)查询该页的页表项得到物理地址的页框号,并将该映射关系复制到TLB中:该页的页表项(记录放该页号和其实际主存中物理页框的映射关系)的地址 = 页表始址 + 页号 * 单个页表项大小(页表项采用连续存储的方式,占用一片连续的存储空间)

(3)根据页表项中记录的物理页框号和页内偏移量进行拼接,得到具体数据的物理地址,取出数据

④TLB未命中,且慢表命中但有效位为0,即发生缺页:

(1)发生缺页异常(页故障),操作系统检测到该异常后,会对该异常进行处理,即调页(读磁盘块),慢表中的页表项中保存着其外存地址,根据此外存地址将外存中的物理块(考试中默认大小与页相等)读入主存

(2)主存仍有空闲页框:该块调入主存的空闲页框中,并修改相应页表项

(3)主存没有空闲页框:先根据页面置换算法选择一个页面淘汰,并且根据其脏位判断是否应该写回外存;然后再将该页面放入被淘汰页面之前所占用的页框中(覆盖),并修改相应页表项(慢表和TLB)

(4)执行完调页后,将会重新执行引发缺页异常的指令(重新执行一遍访存过程):在408中,某一条指令引发缺页异常,操作系统处理完缺页异常(即完成调页),该指令重新执行时,TLB命中(缺页异常处理也会将TLB中的表项进行更新)

7.假设物理页框中可以存放数组A的1024个数组元素(即A[0] - A[1023]),TLB表初始为空,执行一下代码:

for (int i = 0; i < 1024; i++) a[i] = 0;

共需要访问1025次内存:

第1次访存,TLB未命中,根据内存中的慢表得到A[0]的逻辑地址得到A[0]的物理地址,并将该逻辑地址和物理地址的映射关系存入TLB中

第2次访存:根据A[0]的物理地址取出A[0]的数据

第3 - 1025次访存:TLB命中,分别根据表中的映射关系得到A[1] - A[1023]的物理地址,取出A[1] - A[1023]的数据(A[1] - A[1023]的物理地址到逻辑地址的转换无需访存此时TLB中已经有存放A[0] - A[1023]的主存块的逻辑地址和物理地址的映射关系,而查询TLB不用访存;故仅需从内存中取出数据一次访存

3.进程的存储空间350789e02c5a43d3b9dbdd7b27ef7f35.png

1.进程虽然拥有很大的一块逻辑地址空间,但是有很大一部分空间可能是空着的,只有需要使用的时候才进行相应的分配

2.通过将不同进程的某些页表项映射到同一内存空间(相同页框号)的方式实现页面共享(虚拟页号可以不同,两个进程的虚拟页号是相互独立的)

3.低地址部分进程独享;高地址部分(操作系统内核区)所有进程共享,即都是映射到相同的一片物理页框中(通过页表映射的方式实现)

相关文章
|
3月前
|
存储 算法
【操作系统】虚拟存储管理-页面置换算法
【操作系统】虚拟存储管理-页面置换算法
388 0
|
29天前
|
Unix API 数据格式
云计算存储问题之API在不同操作系统上的实现如何解决
云计算存储问题之API在不同操作系统上的实现如何解决
|
3月前
|
存储 算法 固态存储
半导体存储品牌企业江波龙加入龙蜥社区,完成与 Anolis OS 适配
江波龙与 Anolis OS 的成功适配,进一步验证了 Anolis OS 能满足对存储容量灵活性和系统整体稳定性的高标准要求,可以为广大用户提供优质、高性能产品。
|
9月前
|
存储 算法 调度
操作系统实验五:存储管理设计
操作系统实验五:存储管理设计
242 0
|
3月前
|
存储 算法 大数据
认识操作系统段页式存储
存储管理负责高效地分配、管理和回收计算机的内存资源。这一过程对于确保计算机系统的稳定性、性能和可扩展性至关重要。
111 0
|
存储 缓存 Linux
实验 通过命令和代码初步感受存储管理【操作系统】
实验 通过命令和代码初步感受存储管理【操作系统】
112 0
|
3月前
|
存储 搜索推荐 数据库
一个通用的查找 SAPGUI 设置存储在操作系统注册表位置的技巧分享
一个通用的查找 SAPGUI 设置存储在操作系统注册表位置的技巧分享
|
3月前
|
存储 算法
操作系统:虚拟存储管理技术
操作系统:虚拟存储管理技术
116 0
|
8月前
|
存储 数据库 数据安全/隐私保护
【王道考研操作系统】—文件的基本操作
【王道考研操作系统】—文件的基本操作
临界资源和共享资源——王道考研操作系统
临界资源和共享资源——王道考研操作系统
207 0