-
2020-05-04 16:20:12
概括的挺详细的,然后我加上了纯分页系统和请求式分页系统的基本概念,也对有些部分稍作修改
一、分页存储管理
1、基本概念(页面和物理块)
将一个进程的逻辑地址空间划分成若干大小相等的部分,每一部分称为页或页面(页面的大小通常是2的次幂,大约在512B~4MB之间);同样,将内存空间也划分为与页面大小相同的若干个存储块,即物理块或页框。可将用户的任一页放在内存的任一块中,实现离散分配。
2、分页技术地址结构:
页号P 页内位移d
设给定逻辑地址为A,页面大小为L
页号: P=INT[A/L]
页内位移: d=[A] MOD L
举例:
设某系统的页面大小为1KB,A=3456,则P=3;d=384
3、页表
在分页系统中,允许将进程的各个页面离散地装入内存的任何空闲块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程设立一张页面映像表,简称页表。在进程空间内的所有页(0~n-1)依次在页表中有一个页表项,其中记载了相应页面在内存中对应的物理块号。页表的作用是实现从页号到物理块号的地址映射。
页号 块号 存储控制(存储控制用于对该存储块中的内容进行保护)
0 2
1 15(F)
2 14(E)
3 1
4、地址转换
(1) 程序执行时,从PCB中取出页表始址和页表长度(4),装入页表寄存器PTR。
(2)由分页地址变换机构将逻辑地址自动分成页号和页内地址。
例:11406D=0010|110010001110B=2C8EH
页号为2,位移量为C8EH=3214D
或11406 DIV 4096=2
11406 MOD 4096=3214
(3) 将页号与页表长度进行比较(2<4),若页号大于或等于页表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。
(4)将页表始址与页号和页表长度(页表项所占的内存空间大小,因为计算机是通过计算得到相应的位置,不能一眼看出)的乘积相加,便得到该页表项在页表中的位置。
(5)取出页描述子得到该页的物理块号。 2 14(E)
(6) 对该页的存取控制进行检查。
(7)将物理块号送入物理地址寄存器中,再将有效地址寄存器中的页内地址直接送入物理地址寄存器的块内地址字段中,拼接得到实际的物理地址。
例:0010|110010001101B
1110|110010001101B=EC8EH=60558D
或 14*4096+3214=60558D
5、快表的地址转换
页表存放在内存中,使CPU每要存取一个数据,都要两次访问(访问页表,寻找物理块号;访问内存,读写数据);这使计算机的处理速度降低1/2。为提高地址变换速度,可在地址转换机构中增设一个具有并行查寻能力的特殊高速缓冲存储器,又称快表(TLB),用以存放当前访问最频繁的那些少量页表项。
6、纯分页系统
所谓纯分页系统是指在调度一个作业时,必须把它的所有页一次装入到内存的物理块中,如果当时物理块不足,则该作业必须等待,直到有足够的物理块为止,这时系统可再调度另外的作业 纯分页系统同样有地址转换和快表,和基础分页系统求地址过程差不多
7、请求式分页系统
是目前常用的一种实现虚拟存储器的方式;基本思想是,作业在运行之前,只把当前需要的一部分页面装入内存,当需要其他页面是,才自动选择一些页交换到辅存,同时调入所需的页到内存中
二、分段存储管理
1.基本思想
将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
- 分段存储方式的引入
方便编程
分段共享
分段保护
动态链接
动态增长
- 分段地址结构
作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例程序段、数据段等。每个段都从0开始编址,并采用一段连续的地址空间。
段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间是二维的。
15 12 11 0
段号 段内位移量
段号4位,每个作业最多24=16段,表示段号从00001111(24-1);段内位移量12位,212=4k,表示每段的段内地址最大为4K(各段长度不同),从000000000000111111111111
- 段表
段号 段长 起始地址 存取控制
0 1K 4096
1 4K 17500
2 2K 8192
- 地址变换
(1). 程序执行时,从PCB中取出段表始址和段表长度(3),装入段表寄存器。
(2). 由分段地址变换机构将逻辑地址自动分成段号和段内地址。
例:7310D=0001|110010001110B=1C8EH
段号为1,位移量为C8EH=3214D
(3). 将段号与段表长度进行比较(1<3),若段号大于或等于段表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。
(4). 将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。
(5). 取出段描述子得到该段的起始物理地址。1 4K 17500
(6). 检查段内位移量是否超出该段的段长(3214<4K),若超过,产生越界中断。
(7). 对该段的存取控制进行检查。
(8). 将该段基址和段内地址相加,得到实际的物理地址。
例:0001|110010001101B
起始地址17500D+段内地址3214D=20714D
三、分页与分段的主要区别
分页和分段有许多相似之处,比如两者都不要求作业连续存放.但在概念上两者完全不同,主要表现在以下几个方面:
(1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.
(2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.
(3)分页的作业地址空间是一维的.分段的地址空间是二维的.
四、段页式存储管理
1.基本思想:
分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。
在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,每段都有自己的段号,然后再将每段分成若干个大小相等的页。对于主存空间也分成大小相等的页,主存的分配以页为单位。
段页式系统中,作业的地址结构包含三部分的内容:段号 页号 页内位移量
程序员按照分段系统的地址结构将地址分为段号与段内位移量,地址变换机构将段内位移量分解为页号和页内位移量。
为实现段页式存储管理,系统应为每个进程设置一个段表,包括每段的段号,该段的页表始址和页表长度。每个段有自己的页表,记录段中的每一页的页号和存放在主存中的物理块号。
2.地址变换的过程:
(1)程序执行时,从PCB中取出段表始址和段表长度,装入段表寄存器。
(2)由地址变换机构将逻辑地址自动分成段号、页号和页内地址。
(3)将段号与段表长度进行比较,若段号大于或等于段表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。
(4)将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。
(5)取出段描述子得到该段的页表始址和页表长度。
(6)将页号与页表长度进行比较,若页号大于或等于页表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。
(7)将页表始址与页号和页表项长度的乘积相加,便得到该页表项在页表中的位置。
(8)取出页描述子得到该页的物理块号。
(9)对该页的存取控制进行检查。
(10)将物理块号送入物理地址寄存器中,再将有效地址寄存器中的页内地址直接送入物理地址寄存器的块内地址字段中,拼接得到实际的物理地址。
五、在网上找到了一个比较形象的比喻,挺不错的,呵呵,列出来如下:
打个比方,比如说你去听课,带了一个纸质笔记本做笔记。笔记本有100张纸,课程有语文、数学、英语三门,对于这个笔记本的使用,为了便于以后复习方便,你可以有两种选择。
第一种是,你从本子的第一张纸开始用,并且事先在本子上做划分:第2张到第30张纸记语文笔记,第31到60张纸记数学笔记,第61到100张纸记英语笔记,最后在第一张纸做个列表,记录着三门笔记各自的范围。这就是分段管理,第一张纸叫段表。
第二种是,你从第二张纸开始做笔记,各种课的笔记是连在一起的:第2张纸是数学,第3张是语文,第4张英语……最后呢,你在第一张纸做了一个目录,记录着语文笔记在第3、7、14、15张纸……,数学笔记在第2、6、8、9、11……,英语笔记在第4、5、12……。这就是分页管理,第一张纸叫页表。你要复习哪一门课,就到页表里查寻相关的纸的编号,然后翻到那一页去复习
六、虚拟内存的置换算法
1、先进先出页面置换算法总是选择在内存中停留最长的页淘汰,即先进入内存的页先被换出内存
2、最佳页面置换算法
当调入一个新的页面必须预先淘汰某个老页面时,所选择的老页面应是将来不再被使用,或者是在很久以后才被使用的页面。采用这种算法,理论上能保证有最少的缺页率,但无法实现,因为它需要人们预先知道作业整个运行期间的页面走向情况。
3、最近最少使用页面置换算法
根据页面调入内存后的使用情况,选择最近最少使用的页面予以淘汰。
4、第2此机会页面置换算法
对最老页面的R位进行检查,如果R位是0,那么这个页既老又没用,可立即被置换掉,如果R位是1,就清除掉这个位,并将该页放到链表的尾端,修改它的装入时间就像刚装入一样
5、时钟页面置换算法
把所有页面都保存在一个类似时钟表面的环形链表中,用一个指针指向最老的页面。当发生缺页中断时,算法检查指针指向的页面,如果R位是0就淘汰掉这页,并把新页插入这个位置,再把指针前移一个位置;是1,就清除R位并把指针前移一个位置
更多相关内容 -
基本分段存储管理方式以及段页式管理方式
2021-08-28 20:21:51一、基本分段存储管理方式 (一)分段 进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从0开始编址 内存分配规则:以段为单位进行分配,...一、基本分段存储管理方式
(一)分段
- 进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从0开始编址
- 内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。
(二)段表
- 问题:程序分多个段,各段离散地装入内存,为了保证程序能正常运行,就必须能从物理内存中找到各个逻辑段的存放位置。为此,需为每个进程建立一张段映射表,简称“段表”。
(三)地址变换
(四)分段、分页管理的对比
- 页 是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管理上的需要,完全是系统行为,对用户是不可见的。
- 段 是信息的逻辑单位。分段的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名。
- 页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。
- 分页 的用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址。
- 分段 的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。
- 分段 比分页更容易实现信息的共享和保护。不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的
- 访问一个逻辑地址需要几次访存?
- 分页(单级页表):第一次访存——查内存中的页表,第二次访存——访问目标内存单元。总共两次访存
- 分段:第一次访存——查内存中的段表,第二次访存——访问目标内存单元。总共两次访存与分页系统类似,分段系统中也可以引入快表机构,将近期访问过的段表项放到快表中,这样可以少一次访问,加快地址变换速度。
二、段页式管理方式
(一)分页、分段的优缺点分析
(二)分段+分页=段页式管理
(三)段页式管理的逻辑地址结构
(四)段表、页表
-
基本分段存储管理方式详解
2022-03-11 14:10:524.4 基本分段存储管理方式 一、分段存储管理方式的引入 二、分段系统的基本原理 三、信息共享 四、段页式存储管理方式4.4 基本分段存储管理方式
- 一、分段存储管理方式的引入
- 二、分段系统的基本原理
- 三、信息共享
- 四、段页式存储管理方式
一、分段存储管理方式的引入
分页存储管理方式存在的问题:
段间离散,段内连续!
二、基本分段存储管理方式的原理
分段存储管理的原理
- 作业分为若干个段。每段分配一个连续的内存区,由于各段的长度不等,这些区域也就大小不一。作业各段间不要求连续。
- 基本分段式存储管理的原理
在段式存储管理原理的基础上,将整个作业的全部段装入内存。 - 请求分段式存储管理的原理
在段式存储管理原理的基础上,不要求将整个作业的全部段装入内存。值装入作业的几段即可运行,其余段根据运行需要再装入内存。
2、基本分段存储管理的实现
地址变换机构
- 在系统中设置段表寄存器,用于存放段表的起始地址和段表长度,以实现从进程的逻辑地址到物理地址的变换。
- 当段表存放在内存中时,每访问一个数据,都需访问两次内存,降低了计算机的速率。
解决方法:设置联想寄存器,用于保存最近常用的段表项。
3、分页和分段的主要区别
相似点:
- 采用离散分配方式,通过地址映射机构实现地址变换
不同点:
- 页是信息的物理单位,分页是为了满足系统的需要;段是信息的逻辑单位,含有意义相对完整的信息,是为了满足用户的需要。
- 页的大小固定且由系统确定,由系统把逻辑地址分为页号和页内地址,由机器硬件实现;段的长度不固定,取决于用户程序,编译程序对源程序编译时根据信息的性质划分。
- 分页的作业地址空间是一维的;分段的作业地址空间是二维的。
三、信息共享
- 分段系统的一个突出优点是易于实现段的共享和保护,允许若干个进程共享一个或多个分段,,且对段的保护十分简单易行。
- 分页系统中虽然也能实现程序和数据的共享,但远不如分段系统方便。
四、段页式存储管理方式
2、地址变换过程
在段页式系统中,为了实现地址变换,增加一个段表寄存器,用来存放段表起始地址和段长。
-
4.6分段存储管理方式、段页式存储管理方式
2018-12-08 21:31:45一、引入分段存储管理方式的目的: 从提高内存利用率角度: 固定分区-&gt;动态分区-&gt;分页 从满足并方便用户(程序员)和使用上的要求角度: 分段存储管理:作业分成若干段,各段可离散放入内存,...一、引入分段存储管理方式的目的:
- 从提高内存利用率角度:
固定分区->动态分区->分页 - 从满足并方便用户(程序员)和使用上的要求角度:
分段存储管理:作业分成若干段,各段可离散放入内存,段内仍连续存放。
①方便编程:如汇编中通过段:偏移确定数据位置
②信息共享:同地位的数据放在一块方便进行共享设置
③信息保护
④动态增长:动态增长的数据段事先固定内存不方便
⑤动态链接:往往也是以逻辑的段为单位更方便
二、分段系统的基本原理
1.分段
- 程序通过分段(segmentation)划分为多个模块,每个段定义一组逻辑信息。如代码段(主程序段main,子程序段X)、数据段D、栈段S等。
- 谁决定一个程序分几段,每段多大?
编译程序(基于源代码) - 段的特点:
①每段有自己的名字(一般用段号做名),都从0编址,可分别编写和编译。装入内存时,每段赋予各段一个段号。
②每段占据一块连续的内存。(即有离散的分段,又有连续的内存使用)
③各段大小不等。
2.分段下的相对地址:
地址结构:段号 + 段内地址
段表:记录每段实际存放的物理地址3.段表与地址变换机构
段是连续存放在内存中。段表中针对每个“段编号”记录:“内存首地址”和“段长”
同样有两次内存访问问题
解决方法:设置联想寄存器,用于保存最近常用的段表项。
地址变换机构:
4.分页和分段的主要区别
(1)需求:
分页是出于系统管理的需要,是一种信息的物理划分单位,分段是出于用户应用的需要,是一种逻辑单位,通常包含一组意义相对完整的信息。
一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。(2)大小:
页大小是系统固定的,而段大小则通常不固定。分段没有内碎片,但连续存放段产生外碎片,可以通过内存紧缩来消除。相对而言分页空间利用率高。
(3)逻辑地址:
分页是一维的,各个模块在链接时必须组织成同一个地址空间;
分段是二维的,各个模块在链接时可以每个段组织成一个地址空间。(4)其他:
通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。分段模式下,还可针对不同类型采取不同的保护;按段为单位来进行共享
5.信息共享
分段系统的突出优点:
-
易于实现共享
在分段系统中,实现共享十分容易,只需在每个进程的段表中为共享程序设置一个段表项。
对同样的共享内容的管理上,很明显分段的空间管理更简单。分页的图涉及太多的页面划分和地址记录的管理。 -
易于实现保护:
代码的保护和其逻辑意义有关,分页的机械式划分不容易实现。可重入代码:又称为纯代码,允许多个进程同时访问的代码,不允许任何进程对它进行修改。 可共享的代码必须是可重入的;
三、段页式存储管理方式
1.基本原理
将用户程序分成若干段,并为每个段赋予一个段名。
把每个段分成若干页
地址结构包括段号、段内页号和页内地址三部分
- 从提高内存利用率角度:
-
os 分段存储管理方式
2022-01-29 10:40:09如果说,推动上述发展的主要动力都是直接或间接地出于提高内存利用率的目的,那么,引入分段存储管理方式的目的,则主要是为了满足用户(程序员)在编程和使用上多方面的要求,其中有些要求是其它几种存储管理方式所... -
操作系统 王道考研2019 第三章:内存管理 -- 非连续分配管理方式:基本分段存储管理方式、段页式管理方式
2021-12-31 00:47:12非连续分配管理方式:基本分段存储管理方式、段页式管理方式 -
基本分段存储管理方式(分段 段表 地址变换 分段、分页管理的对比)
2021-08-30 22:19:15文章目录前言知识总览分段段表地址变换 前言 此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。 提示:以下是本篇文章正文内容 知识总览 分段 进程的地址... -
页面置换算法与请求分段存储管理方式详解
2022-03-16 11:53:43在进程运行过程中,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,需从内存中调出一页程序或数据,送入磁盘的对换区。但应将哪个页面调出,需根据一定的算法来确定。 把选择换出页面的算法称为页面... -
内存管理分配,连续分配、分页存储、分段存储、段页式
2021-08-31 14:35:44注:本文讨论的是适合多道程序的内存分配管理方式 1. 连续分配管理 连续分配:指为用户进程分配的必须是一个连续的内存空间。 1.1 固定分区分配 1.2 动态分区分配 2. 非连续分配方式 非连续... -
基本分段存储管理方式
2018-11-25 12:58:081、程序通过分段(segmentation)划分为多个模块,每个段定义一组逻辑信息。如代码段(主程序段main,子程序段X)、数据段D、栈段S等。 2、每段有自己的名字(一般用段号做名),都从0编址,可分别编写和编译。 3、... -
操作系统-3.5-内存(基本分段存储管理&&段页式管理)
2021-08-13 12:58:12段页式管理方式11.1分页,分段的优缺点11.2段页式管理11.3段页式管理的逻辑地址结构11.4段表,页表11.5段页式管理实现地址变换过程11.6总结 操作系统-3.5-内存 10.基本分段存储管理 10.1什么是分段? 分段:进程... -
09-基本分段存储管理方式.pdf
2021-09-02 14:31:07基本分段存储管理方式 -
os 请求分段存储管理方式
2022-02-09 16:26:49在分页基础上建立的请求分页式虚拟存储器系统,是以...像请求分页系统一样,为实现请求分段存储管理方式,同样需要一定的硬件支持和相应的软件。 请求分段中的硬件支持 为了实现请求分段式存储管理,应在系统中配置多 -
存储器管理之分段存储&段页存储
2019-04-02 16:47:20为什么引入分段存储管理方式,有两方面原因: 通常的程序都可以分为若干个段,每个段大多都是一个相对独立的逻辑单位。 实现和满足信息共享,信息保护,动态链接以及信息的动态增长等需求,也都是以段为基本单位... -
分段、段页式存储管理方式
2018-11-02 18:50:35二、基本分段存储管理方式 1.引入分段存储管理方式的原因: 分段存储管理:作业分成若干段,各段可离散放入内存,段内仍连续存放 从满足并方便用户(程序员)和使用上的要求角度: (1)方便编程:如汇编中通过段:... -
请求分段存储管理方式
2021-04-30 14:56:25请求分段中的硬件支持 1.段表机制: ●基本作用:地址转换 ●增加段表字段,供程序在换入换出时参考 存取方式:标识存取属性只执行、只读或允许读/写 访问字段A:记录该段被访问的频繁程度 修改位M:该段在进入内存后... -
分段,分页与段页式存储管理
2018-09-20 17:08:11一. 分页存储管理 1.基本思想 ...页式存储管理将内存空间划分成等长的若干物理块,成为物理页面也成为物理块,每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称作物理页号。 2) 逻... -
分页、分段和段页式存储管理方式
2018-04-10 20:56:44分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框... -
基本分页存储管理 基本分段存储管理 段页式存储管理
2018-12-11 19:57:10基本分页存储管理方式 离散分配内存: 作业规定大小划分成小份;内存也按同样大小划分成小份 作业的任一小份可分散放入内存任意未使用的小份 分页方式下,内存的使用率高,浪费少。但不是绝对没有碎片(进程的最后一... -
操作系统-分段式存储管理方式
2022-03-06 21:45:16什么是分段 如下图所示,按照逻辑功能进行进程切割(说人话就是将一个个代码段分开),构成无数个段,分别加载到内存中。 这样系统在执行指令的时就可以按段进行执行了。 同时这样的好处也可以让开发人员更好的操作... -
【操作系统】分段存储管理方式
2016-12-14 12:07:57分段存储管理方式的引入分段存储管理方式的引入是为了满足用户的要求。 方便编程:通常一个作业是由多个程序段和数据段组成的,一般情况下,用户希望按逻辑关系对作业分段,并能根据名字来访问程序段和数据段。 信息... -
【学习笔记】第三章——内存 III(分段存储、段页式存储、分段和分页对比)
2021-08-29 17:42:07段页式存储1)定义2)逻辑地址结构 一. 分段存储 1) 概念 离散,每段从0开始编址,每个段都有段名 段占内存中连续空间,段之间可以离散 按照逻辑功能模块划分,程序可读性更高 逻辑地址结构 = 段号(段名)+ 段内... -
操作系统存储管理之分段式与段页式虚拟存储系统
2017-04-24 13:22:31分段式虚拟存储系统分段式虚拟存储系统把作业的所有分段的副本都存放在辅助存储器中,当作业被调度投入运行时,首先把当前需要的一段或几段装入主存,在执行过程中访问到不在主存的段时再把它们装入。因此,在段表中... -
5.5请求分段存储管理方式
2021-01-05 10:55:56 -
分页式存储管理与分段式存储管理对比表
2021-08-10 10:03:31