操作系统(day10)-- 基本分页存储,基本变换机构

文章介绍了分页存储管理系统的基本概念,包括连续与非连续分配内存的区别,以及如何通过页框和页面将内存和进程地址空间划分。通过建立页表,操作系统能够实现逻辑地址到物理地址的转换,其中页表寄存器(PTR)存放页表的起始地址和长度,页表项包含页号和块号,用于记录页面与内存块的映射关系。
摘要由CSDN通过智能技术生成

基本分页存储的基本概念

在这里插入图片描述

连续分配:为用户进程分配的必须是一个连续的内存空间
非连续分配:为用户进程分配的可以是一些分散的内存空间

内存空间分为一个个大小相等的分区,每一个分区就是一个“页框”, 或“页帧”、“内存块”、“物理块

用户进程的地址空间也分为与页框大小相等的一个个区域,称之为“页”或“页面”。

进程的最后一个页面一般是没有一个页框那么大的,因此页框不能太大,否则可能产生过大的内部碎片

以上将进程空间以及内存空间拆分成一个个页框、页,目的是为了将一个个进程能分散的存放到内存中,那么进程地址空间分页之后,操作系统该如何实现逻辑地址到物理地址的转换?

用动态装入的思想,算一个逻辑地址对应的物理地址,只需要知道寄存器中的起始地址 + 逻辑地址(偏移量) 就是物理地址
同理,虽然将进程空间拆分成了一个个大小一样的区域,并且分散放在内存中,但是其一个个区域还是连续的,因此想要算出该逻辑地址,只需要完成以下4步:
1.通过逻辑地址算出,这个逻辑地址在的页的页号是多少(逻辑地址/页的大小 取整部分就是页号)
2.得出逻辑地址对应的页号,查询得到该页号的起始地址
3.算出这个逻辑地址相对这个页的偏移量(逻辑地址/页的大小 取余的数就是偏移量)
4. 物理地址 = 页面起始地址 + 页内偏移量

计算机的另一种计算方式
在这里插入图片描述
问题:那么如何知道页号对应的起始地址呢
为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。

页表由 页号块号 组成
1.一个进程对应一张页表
2.进程的每一页对应一个页表项
3.每个页表项由“页号”和“块号“组成
4.页表记录进程页面和实际存放的内存块之间的对应关系

在这里插入图片描述
每个页表项的长度是相同的,页号是”隐含“的
在这里插入图片描述
在这里插入图片描述
每个页表项里面只会放对应的块号,为什么不放块号的地址呢,因为只需要知道块号,就可以通过 块地址 = 块号 * 内存块大小(内存块大小可以通过上述图片中的方法计算得到)

基本变换机构

在这里插入图片描述
基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址
通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F页表长度M
进程未执行时,页表的起始 和 页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放到页表寄存器中。

cpu要执行下一条指令,知道该指令的逻辑地址,按什么步骤找到物理地址的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对页表项大小的进一步探究

理论上,页表项长度位3B即可表示内存块号的范围,但是,为了方便页表的查询,常常会让一个页表项占更多的字节,使得每个页面恰好可以装得下整数个页表项

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值