发布网友 发布时间:2022-12-27 00:47
共1个回答
热心网友 时间:2023-01-31 20:23
相信很多人都搞不明白作业系统中分页和分段的区别。下面由我为大家整理了作业系统中分页和分段的区别之处,希望对大家有帮助。
一. 分页储存管理介绍
1.基本思想
使用者程式的地址空间被划分成若干固定大小的区域,称为“页”,相应地,记忆体空间分成若干个物理块,页和块的大小相等。可将使用者程式的任一页放在记忆体的任一块中,实现了离散分配。
2. 分页储存管理的地址机构
15 12 11 0
页号P 页内位移量W
页号4位,每个作业最多2的4次方=16页,表示页号从0000~111124-1,页内位移量的位数表示页的大小,若页内位移量12位,则2的12次方=4k,页的大小为4k,页内地址从000000000000~111111111111
若给定一个逻辑地址为A,页面大小为L,则
页号P=INT[A/L],页内地址W=A MOD L
3. 页表
分页系统中,允许将程序的每一页离散地储存在记忆体的任一物理块中,为了能在记忆体中找到每个页面对应的物理块,系统为每个程序建立一张页面对映表,简称页表。页表的作用是实现从页号到物理块号的地址对映。
页表:
页号 物理块号 存取控制
0 2
1 15F
2 14E
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 14E
6 对该页的存取控制进行检查。
7 将物理块号送入实体地址暂存器中,再将有效地址暂存器中的页内地址直接送入实体地址暂存器的块内地址栏位中,拼接得到实际的实体地址。
例:0010|110010001101B
1110|110010001101B=EC8EH=60558D
或 14*4096+3214=60558D
5. 具有快表的地址变换机构
分页系统中,CPU每次要存取一个数据,都要两次访问记忆体访问页表、访问实际实体地址。为提高地址变换速度,增设一个具有并行查询能力的特殊高速缓冲储存器,称为“联想储存器”或“快表”,存放当前访问的页表项。
二.分段储存管理介绍
1.基本思想
将使用者程式地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑资讯。储存分配时,以段为单位,段与段在记忆体中可以不相邻接,也实现了离散分配。
2. 分段储存方式的引入
方便程式设计
分段共享
分段保护
动态连结
动态增长
3. 分段地址结构
作业的地址空间被划分为若干个段,每个段定义了一组逻辑资讯。例程式段、资料段等。每个段都从0开始编址,并采用一段连续的地址空间。
段的长度由相应的逻辑资讯组的长度决定,因而各段长度不等。整个作业的地址空间是二维的。
15 12 11 0
段号 段内位移量
段号4位,每个作业最多24=16段,表示段号从0000~111124-1;段内位移量12位,212=4k,表示每段的段内地址最大为4K各段长度不同,从000000000000~111111111111
4. 段表
段号 段长 起始地址 存取控制
0 1K 4096
1 4K 17500
2 2K 8192
5. 地址变换
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将物理块号送入实体地址暂存器中,再将有效地址暂存器中的页内地址直接送入实体地址暂存器的块内地址栏位中,拼接得到实际的实体地址。