操作系统基本分页存储管理方式

连续分配内存方式会形成许多“碎片”,通过紧凑的方式将碎片拼接成一块大的空间,但是拼接过程系统开销太大。如果允许将一个进程直接分散地装入到许多不相邻的分区中,那么就不需要再进行“紧凑”。基于这一思想而产生了离散分配方式。如果离散分配的基本单位是页,则称为分页存储管理方式;如果离散分配的基本单位是段,则称为分段存储管理方式。

在分页管理方式中,如果不具备页面对换功能(将处于阻塞状态且优先级低的进程对换到外存),则称为基本的分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后才能运行。

1、页面与页表

1.1、页面

a)、页面和物理块

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或者页,并为各页加以编号0、1、2...。相应地,把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框,也加以编号0、1、2...。在为进程分配内存时,以块为单位将进程中的若干个页面分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片——“页内碎片”。

b)、页面大小

在分页系统中的页面其大小适应中。页面若太小,一方面虽然可使内存碎片减小,从而减小了内存碎片的总空间,有利于提高内存利用率,但是另一方面也会使每个进程占用较多的页面,导致进程页表过长,占用大量内存,反而降低页面换进换出的效率。然而如果选择的页面较大,虽然可以减小页表的长度,提供页面换进换出的速度,但却又会使页内碎片增大。因此,页面的大小应选择适中,且页面大小应该是2的幂,通常为512B~8KB。

1.2、地址结构

分页地址中的地址结构如下:

0~11位为页内地址,即每页的大小为2^12=4KB;12~31位为页号,地址空间最多允许有2^20=1M页。

对于某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,每页的大小为L,则页号P=A/L和页内地址d=A%L。

1.3、页表

在分页系统中,允许将进程的各个页离散地存储在内存不同的物理块中,但系统应该保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。系统又为每个进程建立了一张页表,其记录着相应页在内存中对应的物理块号。进程在执行时,通过查找页表找到内存中对应的物理块号。可见,页表的作用的实现从页号到物理块号的地址映射。

2、地址变换机构

为了能将用户地址空间中的逻辑地址 变换为内存空间的物理地址,在系统中必须设置地址变换机构。其基本任务是实现从逻辑地址到物理地址的转换。即将逻辑地址中的页号转换为内存中的物理块号,借助页表来实现。

2.1、基本的地址变换机构

页表的功能可以由一组专门的寄存器来实现。一个页表项用一个寄存器。由于寄存器成本高,数量少,因此页表大多驻留在内存中。在系统中只设置一个页表寄存器PTR(Page-Table Register),在其中存放页表在内存的起始地址和页表的长度。平时,进程未执行时,页表起始地址和页表长度是存放在本进程的PCB中,当调度程序调度该进程时,才将其放入页表寄存器中。因此,在单处理机环境下,虽然系统中可以运行多个进程,但只需一个页表寄存器。

当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动将有效地址(相对地址)分为页号和页内地址两部分,再以页号为索引去检索页表,查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于等于页表长度,则表示本次所访问的地址已超越进程的地址空间。系统将产生一地址越界中断。如果没有越界,则将页表起始地址与页号和页表项长度的乘积相加,使从而到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址到物理地址的变换。

2.2、具有快表的地址变换机构

由于页表存放在内存中,这使CPU在存取一个数据时,都要两次访问内存:第一次是访问内存的页表,从中找到指定页的物理块号,再将块号与页内偏移量W拼接,形成物理地址;第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址写入数据)。因此,采用这种方式将使计算机的处理速度降低近一半。

为了提高地址变换速度,可在地址变换机构中增设一个具有并行查询能力的特殊高速缓冲寄存器,又称为“联想寄存器”——“块表”,用来存放当前访问的那些页表项。此时的地址变换过程是:在CPU给出有效地址后,由地址变换机构自动地将页号P送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的页号,便表示所要访问的页表在快表中。直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中。如果在快表中未找到对应的页表项,则还需在访问内存中的页表,找到后把页表项中读出的物理块号送地址寄存器;同时,再将此页表项存入快表的一个寄存器单元中。从新修改快表。,如果联想寄存器已满,则 OS 必须找到一个老的且已被认为不再需要的页表项,将它换出。

3、两级和多级页表

现代的大多数计算机系统,都支持非常大的逻辑地址空间(2^32~2^64)。在这样的环境下,页表就变得非常大,要占用相当大的内存空间。采用的解决方法:

a)、采用离散分配方式来解决难以找到一块连续的大内存空间的问题;

b)、只将当前需要的部分页表项调入内存,其余的页表项仍然留在磁盘上,需要时在调入。

3.1、两级页表(Two_Level Page Table)

对于要连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表,在每个页表项中记录了页表页面的物理块号。

在外层页表的每个页表项中,所存放的是某页表分页的首地址。我们可以利用外层页表和页表这两级页表,来实现从进程的逻辑地址到内存中物理地址间的变换。为了地址变换实现上的方便起见,在地址变换机构中同样需要增设一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指定页表分页的始址,再利用 P2 作为指定页表分页的索引,找到指定的页表项,其中即含有该页在内存的物理块号,用该块号和页内地址 d 即可构成访问的内存物理地址。

3.2、多级页表

多级页表原理和二级页表一样,用来处理更大的页表划分问题。

以上内容参考汤小丹  梁红兵等编著的《计算机操作系统》第4章 第4节

操作系统基本分页存储管理方式相关推荐

  1. 《操作系统》——分页存储管理方式逻辑地址到物理地址的转换

    一.连续分配方式缺点 连续分配方式的主要缺点是会形成许多碎片,尽管我们可以通过紧凑的方法将碎片拼接成可用的大块空间,但这样须付出很大的代价. 二.离散分配方式 离散分配方式思想:将进程直接分散地装入到 ...

  2. 操作系统:基本分页存储管理方式

    1.离散分配方式 ----连续分配方式(分区存储管理)要求把作业放在一个连续的存储区中,因而会形成许多"碎片",固定分区会产生内部碎片,动态分区会产生外部碎片.虽然可通过" ...

  3. 操作系统简单分页存储管理(含代码)

    实验目的: 在分页存储管理方式中,如果不具备页面置换功能,则称为基本的分页存储管理方式,或称为纯分页存储管理方式,它不具备支持虚拟存储器的功能,显示一次性的特征.本实验通过程序模拟操作系统的基本分页存 ...

  4. 基本分页存储管理方式

    4.3 基本分页存储管理方式 连续分配方式存在的问题与分页存储管理方式的引入 基本分页存储管理方式 一.页面与页表 二.地址变换机构 三.两级和多级页表 将一个进程的逻辑地址空间分成若干个大小相同的片 ...

  5. 分页存储管理方式介绍及例题

    一.引入 在存储器管理中连续分配方式会形成许多"碎片",虽然可以通过"紧凑"方法将许多碎片拼接成可用的大块空间,但须为之付出很大的开销,如果一个进程能够直接分散 ...

  6. 八、操作系统——基本分页存储管理的基本概念(详解)

    一.思考:连续分配方式的缺点? 考虑支持多道程序的两种连续分配方式: 固定分区分配:缺乏灵活性,会产生大量的内部碎片,内存的利用率很低. 动态分区分配:会产生很多外部碎片,虽然可以用"紧凑& ...

  7. 操作系统基本分段存储管理方式

    1.分段存储管理方式的引入 ---- 引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要: 1)方便编程 通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都是从0开始编址,并有自 ...

  8. 【操作系统】分段存储管理方式

    分段存储管理方式的引入 分段存储管理方式的引入是为了满足用户的要求. 方便编程:通常一个作业是由多个程序段和数据段组成的,一般情况下,用户希望按逻辑关系对作业分段,并能根据名字来访问程序段和数据段. ...

  9. 操作系统连续分配存储管理方式

    连续分配方式,是指为一个用户程序分配一个连续的内存空间. 连续分配方式的分类: l单一连续分配 l固定分区分配 l动态分区分配 l动态重定位分区分配 下面来看这几种分配方式 单一连续分配 最简单的一种 ...

最新文章

  1. 中山大学计算机学院运动会,喜讯!我院获2019中大校运会教工组团体第二名
  2. 统一客服消息返回错误:{errcode:43004,errmsg:require subscribe hint: [9Vv08633952]}
  3. React Diff 算法
  4. 文巾解题3. 无重复字符的最长子串
  5. 01. 对称密码——算法
  6. WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放、播放、暂停、可拖动播放进度效果实现...
  7. 初识图机器学习(part4)--图表示学习1.0
  8. 【转载】ShowWindow函数
  9. 编程必备:c/c++的编程经验技巧!
  10. 由IDC机房测试谈主动工作教学实战案例!
  11. 【Spring】Spring 解决循环依赖的 3 种方式
  12. Ubuntu12.04password正确 入口的桌面(测试的恢复正常)
  13. 基于主特征空间相似度计算的切分算法及切分框架
  14. springmvc注解详解
  15. Win10一键修复所有dll缺失的方法
  16. 初探Watir --- Ruby 自动化测试框架
  17. 信息系统项目管理师(2022年) —— 第 7 章 项目成本管理
  18. python中逗号在print的作用_Python中逗号的三种作用
  19. 这五款小众软件你肯定不知道
  20. Java中亦或运算符

热门文章

  1. XX公司数据库迁移项目可行性研究与风险评估
  2. mermaid画饼图
  3. xampp怎么卸载mysql_XAMPP怎么卸载
  4. 海洋陆地算法_了解网络的陆地和海洋
  5. 电脑快捷键~实用大全
  6. zabbix使用snmp监控交换机
  7. 抖音如何进行推广,怎么可以有精准的用户找到你?
  8. 沪江python全栈开发_有哪些网上自学课程的好网站?
  9. android 自动偷能量,基于javascript语言写的在安卓上运行的蚂蚁森林自动偷能量auto.js脚本...
  10. matlab批量合并表格数据,用matlab合并excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......