0

0

基本分页存储管理方式是什么

angryTom

angryTom

发布时间:2019-07-26 15:44:41

|

8822人浏览过

|

来源于php中文网

原创

基本分页存储管理方式是什么

推荐教程:常见问题

简介

在存储器管理中,连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。

  如果允许将一个进程直接分散地装入到许多不相邻的分区中,则无须再进行“紧凑”。基于这一思想而产生了离散分配方式。如果离散分配的基本单位是页,则称为分页存储管理方式。在分页存储管理方式中,如果不具备页面对换功能,则称为基本分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。

为什么要分页存储

  在内存的分配过程中,连续分配方式容易产生大量的碎片,虽然可以通过“紧凑”对其进行整理,但是这样需要大量的开销。 

  因此,如果能够在进程的内存分配的时候,将连续的逻辑内存打散分配在多个可以不相连的物理内存上,那么将会利用到原来被浪费的大块碎片,降低不可利用碎片的最大大小(降至页面的大小,因为如果碎片的大小超过页面的大小,那么将可以被利用),提升内存利用率。根据这种思想,产生了离散分配方式,如果离散分配的基本单位是页,则称之为分页存储管理方式;如果不具备页面对换功能,那么就是基本分页存储管理方式。

基本概念

页面 

  分页存储管理方式将进程的连续的逻辑地址空间分割为若干个大小相等 的地址片,称之为页或者页面。并将其进行编号,如第0页、第1页。在逻辑上,这些页中的各个地址拼接起来是连续的,但是他们对应的物理块地址是可以不连续的。对应的物理块也相应的被命名为第0块、第1块等。在进程分配内存时,进程的若干个页分别被装入对应的物理块,由于最后一页经常装不满,所以形成了无法被利用的页内碎片

  采用分页存储管理方式的目的就是更多的利用内存碎片,因此,页面的大小相对来说是小于正常进程所需的地址空间大小。那么页面多大是比较合适的呢?页面如果过于小,虽然可以使得内存中不可利用碎片的最大大小降低,提升内存空间的利用率,但是也会导致进程占用过多的页面,使得页表过长,降低页面的换进换出的效率。同样,如果页面过大,虽然提升了页面换进换出的效率,但是也会使得内存碎片增大。所以,根据经验,页面的大小最好选择512B~8KB左右。

页表 

  页表就是进程中维护的一段地址空间,其中存储了页面和物理块的映射关系,在讨论页表之前,先理清分页中的地址结构。 

  对于物理地址空间,总的内存地址空间是固定的。而对于一个进程,分配的逻辑内存空间也是固定且连续的,该逻辑地址空间从0开始,假设某个进程中的一个字节的逻辑地址为 1088B, 而页面大小为512B。在介绍页面 时说过,逻辑地址空间虽然分给为若干个页,但是这些页的逻辑地址仍然是连续的。那么我们可以知道该字节所属的页号 P = 2 (从0开始),页内地址 d = (1088 - 512 * 2) = 64。

  也就是说在页面长度已知的情况下,根据逻辑地址可以简单的知道该地址空间所属的页面号和在该页面中的相对地址。根据这两个参数和页表,就能够知道该地址对应的物理地址了。

X-CART  GOLD
X-CART GOLD

X-Cart号称是全球最强大的PHP购物车软件,几乎囊括所有电子商务功能,采用网页方式管理后台,多语言支持,智能库存管理,模板定制灵活,功能插件化、模块化。X-Cart分为gold版和Pro版这两个版本。Gold版为普通商店版,Pro为商城版。这款软件的优势是功能比较强大,由于是付费方式采用终生制的开源软件,软件的稳定性、安全性以及可扩展性较强。目前已知的能与x-cart跨平台整合的软件包括了国外

下载

  页表是用来映射页面和物理块的一张表,如下图: 

 

pc11.jpg

  通过页表和页号,我们知道了物理块号,也就知道了对应物理块空间的起始地址。再加上页内地址,就知道了对应的物理地址。通过这种方式,我们能够实现从逻辑地址到物理地址的转换。

地址转换

  上面的基础概念介绍简单介绍了一下地址转换的原理,下面详细看看具体流程。

  上面说到通过查找页表找到页号到物理块号的映射,那么页表存放在哪里,如何找到页表呢?? 

  页表可以通过一组寄存器来实现,一个寄存器存储一条页表项,因为寄存器的存取速度快,可以提高页表地址转换的速度。然而,寄存器成本较高,页表中的页表项可能会非常大,达到数百上千项。因此页表通常也存储在内存中,在系统中,只设置一个页表寄存器PTR,用来存储页表在内存中的起始地址和长度。平时,进程未执行时,页表的始址和页表长度存放在本进程的PCB中。当调度程序调度到某进程时,才将这两个数据装入页表寄存器中。因此,在单处理机环境下,虽然系统中可以运行多个进程,但只需一个页表寄存器(也就是说,多进程同时运行的情况下,需要分别存储多个进程内的页表数据)。

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

pc22.jpg

快表

  由于页表是存放在内存而非寄存器中,所以每次读取一个地址的时候需要访问两次内存,第一次访问页表找到物理块号,第二次才是访问真正的物理地址获取数据。因此,采用这种方式将使计算机的处理速度降低近1/2。 

  为了提升地址变换效率,在地址变换机构中加入了一组具有并行查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”(Associative Memory),或称为“快表”,用来存储当前访问的页表项数据(类似于缓存,存储之前查找过的页表项,提升页号到物理块号的转换效率)。通过这种方式,地址转换过程变成了如下图: 

 pc33.jpg

  在CPU获取到逻辑地址后,地址转换机构将页号交给快表查询对应的物理块号,如果查到,则直接根据页内地址找到物理地址访问数据,如果没有则按正常的方式查找物理块号,并同时将其保存在快表中。如果快表已满,则系统会自动在其中去掉一个页表项替换出来。 

  简而言之,快表就相当于页表项缓存。

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

0

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

0

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

2

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

6

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

18

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

3

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

2

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

1

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php-src源码分析探索
php-src源码分析探索

共6课时 | 0.5万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

微信小程序开发--云开发篇
微信小程序开发--云开发篇

共15课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号