自学内容网 自学内容网

操作系统第三章 内存管理概念(下)

1. 基本分页存储管理的基本概念

        1.1 基本分页存储管理的思想

                把进程分页,各个页面可以离散地放在各个内存块中

        1.2 概念混淆

                1> 页框,页帧,内存块,物理块,物理页(把物理地址分块),VS页,页面(逻辑地址)

                2> 页框号,页帧号,内存块号,物理块号,物理页号,VS页号,页面号

        1.3 页表

                1> 页表记录了页面和实际存放的地址快之间的映射关系

                2> 一个进程对应一张页表,进程的每一项对应一个页表项,每一个页表项由页号+页块组成

                3> 每个页表项的大小时相同的,页号是隐藏的(相当于数组的下标),内存块数量->页表项大小

                4> i号页表项存放地址 = 页表起始地址+i*页表项大小

        1.4 逻辑地址结构->[页号,页内偏移量]

                1> 页号 = 逻辑地址/页面大小;页内偏移量 = 逻辑地址%页面大小

例题:

                2> 如果页面大小刚好为2的整数次幂?        

        1.5 如何实现地址转换

                1> 计算出逻辑地址对应的[页号,页内偏移量]

                2> 找到对应页面在内存中的存放为止(查页表)

                3> 物理 地址 = 页面起始地址  + 页内偏移量

总:

2. 基本地址变换机构

        2.1 页表寄存器的作用

                1> 存放页表起始地址

                2> 存放页表长度

        2.2 地址变换过程

                1> 根据逻辑地址算出页号,页内偏移量

                2> 页号的合法性检查(与页表长度对比)

                3> 若页号合法,再根据页表起始地址,页号找到对应页表项

                4> 根据页表项中记录的内存块号,页内偏移量 得到最终的物理地址

                5> 访问物理内存对应的内存单元

        2.3 其他细节

                1> 页内偏移量位数和页面大小的关系

                2> 页式管理中地址是一维的

                3> 实际应用中,通常使一个页框恰好放入整个页表项

                4> 为了方便找到页表项,页表一般是放在连续的内存块中

总:

3. 具有快表的地址变化机构

        3.1 什么是快表

                概念:

                 

        3.2 引入快表后,地址的变换过程

        3.3 局部性原理

总:

4. 俩级页表

        4.1 单级页表存在的问题

                1> 所有页表项都必须连续存放,页表过大时需要很大的连续空间

                2> 在一段时间内并非所有的页面都用得到,因此没必要让整个页表常驻内存

        4.2 俩级页表

                1> 把长长的页表再分页

                2>  逻辑地址结构:(一级页号,二级页号,页内偏移量)

                3> 几个术语: 页目录表/外层页表/顶级页表

        4.3 如何实现地址变换

                1> 按照地址结构将逻辑地址拆成三部分

                2> 从PCB中读出页目录表起始地址,根据一级目录查页目录表,找到下一级页表再内存中的存放位置.

                3> 根据二级页号查表,找到最终想访问的内存块号

                4> 结合页内偏移量得到物理地址

        4.4 几个细节

                1> 多级页表中,各级页表的大小不能超过一个页面.若俩级页表不够,可以分成更多级

                2> 多级页表的访存次数 -- N级页表访问一个逻辑地址需要N+1次访存

总:

5. 基本分段存储管理方式

        5.1 分段

                1> 将地址空间按照程序自身的逻辑关系划分为若干个段,每段从0开始编址

                2> 每个段再内存中占据连续空间,.但各个段之间可以不相邻

                3> 逻辑地址结构: (段号,段内地址)

        5.2 段表

                1> 记录逻辑段到实际存储地址的映射关系

                2> 每个段对应一个段表项.各段表项长度相同,由段号,段长,基址栈组成

        5.3 地址变换

                1> 由逻辑地址得到段号,段内地址

                2> 段号和段表寄存器中的段长比较,检查是否越界

                3> 根据段表起始地址,段号找到对应段表项

                4> 根据段表中记录的段长,检查段内地址是否越界

                5> 由段表中的"基地址+段内地址"得到最终的物理地址

                6> 访问目标单元

        5.4 分段VS分页

                1> 分页对用户不可见,分段对用户可见

                2> 分页的地址空间是一维的,分段的地址空间是二维的

                3> 分段更容易实现信息的共享和保护

                4> 分页,分段访问一个逻辑地址都需要俩次访存,分段存储中页可以引入快表机构

总:

6. 段页式管理方式

        6.1 分段 + 分页

                1> 将地址空间按照程序自身的逻辑关系划分为若干个段,再把各段分为大小相等的页面

                2> 将内存空间分为与页面大小相等的一个个内存块,系统以内存块为单位为进程分配内存

                3> 逻辑地址: (段号,页号,页内偏移量)

        6.2 段表,页表

                1> 每个段对应一个段表项.各段表项长度相同,由段号,页表长度,页表存放地址组成

                2> 每个页对应一个页表项.各页表项长度相同,由页号,页面存放的内存块号组成

        6.3 地址变换

                1> 由逻辑地址得到段号,页号,页内偏移量

                2> 段号和段表寄存器中的段长度比较,检查是否越界

                3> 由段表起始地址,段号找到对应段表项

                4> 根据段表中记录的段表长度,检查页号是否越界

                5> 由段表中的页表地址,页号得到查询页表,找到相应页表项

                6> 由页面存放的内存块号,页内偏移量得到最终的物理地址

                7> 访问目标单元

        6.4 访问一个逻辑地址所需访问次数

                1> 第一次--查段表,第二次--查页表,第三次--访问目标单元

                2> 可引入快表机构,以段号和页号为关键字查询快表,即可直接找到最终的目标页面存放位置.引入块表后仅需一次访存.

总:


原文地址:https://blog.csdn.net/2201_75880772/article/details/142689404

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!