操作系统---(32)多级页表及相关计算

1.一级页表结构

在这里插入图片描述

2.多级页表结构

计算:一个由32位二进制组成的地址空间,页面长度为4KB,每个页表项占用4B,则:
进程的页面总数可达 2的20次方 = 1MB个
整个页表最大占用 4MB

页号页内地址
31-1611-0

那么问题是:4MB的页表怎么存放?
一个帧只有4KB,所以4MB的页表需要离散存放。需占用 4MB/4KB=1K个帧。这就需要建立更高一级的页表,记录页表所占的帧号,叫做“页表的页表”即,二级页表

二级页表
在这里插入图片描述
二级页表地址形式
| 外层页号 | 内层页号 | 页内偏移|
如果二级页表也必须用多个帧俩存放,那就需要建立更高一级的页表。

3.计算题

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.多级页表机制的地址重定位过程

处理机中要设有外部页表寄存器,存放当前进程的外部页表首地址。系统根据指令给出的逻辑地址:

  • 用逻辑地址中的外层页号a查外层页表,得到内层页表首地址。
  • 用逻辑地址中的内层页号b查内层页表,得到数据帧号。
  • 将数据帧的首地址加上偏移地址c得到物理地址。
    在这里插入图片描述
  • 37
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
"一、实验内容 " "模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处" "理缺页中断。 " "二、实验目的 " "在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储" "器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空" "间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验帮助同学理解在分页" "式存储管理中怎样实现虚拟存储器。 " "三、实验题目 " "本实验有三个题,其中第一题必做,第二、第三题中可任选一个。 " "第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 " "[提示]: " "(1) " "分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作" "业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页" "已在主存,哪些页尚未装入主存,页表的格式为: " " " "页号 " "标志 " "主存块号 " "在磁盘上的位置 " " " " " " " " " " " " " " " "其中,标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主" "存,标志位=0,则表示该页尚未装入主存。 " "主存块号——用来表示已经装入主存的页所占的块号。 " "在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。 " "(2) " "作业执行时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号(页" "内地址),硬件的地址转换机构按页号查页表,若该页对应标志为"1",则表示该 " "页已在主存,这时根据关系式: " "绝对地址=块号(块长+单元号 " "(4) " "如果一个作业的副本已在磁盘上,在磁盘上的存放地址以及已装入主存的页和作业" "依次执行的指令序列都同第一题中(4)所示。于是增加了"修改标志"后的初始页 " "表为: " " " "頁表 " "按依次执行的指令序列,运行你所设计的程序,显示或打印每次调出和装入的页号" ",以及执行了最后一条指令后的数组P的值。 " " " "图4-2 FIFO页面调度模拟算法 " " " "(5) " "为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行" "的结果。 " "四、实验代码 " "1、 " "#include<iostream.h> " "#define length 128 " "void main() " "{ " "int xulie[12][2]={{0,70},{1,50},{2,15},{3,21},{0,56},{6,40}, " "{4,53},{5,23},{1,37},{2,78},{4,1},{6,84}}; " " " "int yebiao[7][4]={{0,1,5,11},{1,1,8,12},{2,1,9,13}, " "{3,1,1,21},{4,0,0,22},{5,0,0,23},{6,0,0,121}}; " " " "int address=0; " "for(int i=0;i<12;i++) " "for(int j=0;j<7;j++) " "{ " "if(yebiao[j][0]==xulie[i][0]) " "{ " "cout<<"xulie"<<i<<" "<<"页号="<<yebiao[j][0]<<endl; " "if(yebiao[j][1]==1) //标志位等于1; " "{ " "address=yebiao[j][2]*length+xulie[i][1]; " "cout<<"物理地址等于:"<<address<<endl; " "} " "else " "{ " "cout<<"发生缺页中断"<<endl; " "} " "} " "} " "} " "2、 " "#include<iostream.h> " "void main() " "{ " "int yebiao[7][3]={{0,1,5},{1,1,8},{2,1,9}, " "{3,1,1},{4,0,0},{5,0,0},{6,0,0}}; " " " "int xulie[12][2]={{0,70},{1,50},{2,15},{3,21},{0,56},{6,40}, " "{4,53},{5,23},{1,37},{2,78},{4,1},{6,84}}; " " " "int address=0; " " " " " "for(int j=0;j<12;j++) " "for(int i=0;i<7;i++) " "{ " "if(yebiao[i][0]==xulie[j][0]) " "{ " "if(yebiao[i][1]
### 回答1: 操作系统课设实验七是关于nachos内存地址扩展的实验。在操作系统中,内存地址扩展是为了解决内存空间不足的问题,能够扩大可用的内存地址范围。 在这个实验中,我们需要实现内存地址扩展的功能。首先,我们需要修改内核代码,以支持更大的内存空间。这包括对页表、内存管理和地址映射等方面的修改。 接下来,我们需要修改操作系统的编译选项,以允许nachos使用扩展后的内存地址。这可能涉及到修改编译器、链接器和加载器等工具链的配置。 然后,我们需要运行一系列的测试用例来验证内存地址扩展的功能。这些测试用例涵盖了不同的场景,包括进程的创建与销毁、内存的分配与释放、页表的更新等。通过这些测试用例的运行,我们可以验证内存地址扩展是否成功地被实现。 最后,我们还需要撰写一份实验报告,详细描述我们在实验中遇到的问题、解决的方法以及实验结果。这份报告应包括实验设计、实验步骤、结果分析和总结等内容。 总的来说,实验七的目标是通过对nachos内核代码的修改和配置,实现内存地址的扩展功能,并验证其正确性和可行性。通过这个实验,我们可以更深入地理解操作系统的内存管理机制,并且加深对nachos操作系统的理解和熟悉程度。 ### 回答2: 在操作系统课设实验七中,我们将学习如何扩展Nachos操作系统中的内存地址空间。 内存地址扩展是指增加系统能够使用的内存地址范围。在Nachos操作系统中,默认的内存地址范围是32位,即可以寻址的内存大小为2^32个字节。然而,随着计算机系统的发展和应用的需求增加,这样的内存地址范围已经不足以满足现代计算机系统的要求。 在扩展内存地址空间之前,首先需要了解操作系统是如何管理内存的。在Nachos中,操作系统使用页表来实现虚拟内存的管理。每个进程都有自己的页表,其中记录了虚拟页面和物理页面之间的映射关系。操作系统通过访问页表来确定虚拟地址对应的物理地址。 实现内存地址扩展需要进行以下几个步骤: 1. 修改页表的结构:为了支持更大的内存地址范围,我们需要修改页表的数据结构。可以考虑使用更长的物理地址字段或者增加页表的层次结构来扩展内存地址范围。 2. 修改地址翻译机制:修改地址翻译机制,使其支持新的页表结构。这涉及到对地址翻译机制的修改和扩展,确保能够正确地将虚拟地址转换为物理地址。 3. 修改内存管理:修改内存管理模块,以支持更大的内存地址范围。这可能涉及到对缺页异常处理、页面替换算法和内存分配算法等方面的修改。 4. 修改其他相关模块:可能还需要修改其他相关模块,以适应新的内存地址扩展。 通过以上步骤的修改,我们可以成功地扩展Nachos操作系统的内存地址空间。这样做可以提高系统的性能和资源管理能力,更好地满足现代计算机系统的需求。 ### 回答3: 操作系统课设实验七是关于Nachos内存地址扩展的。在实验中,我们需要扩展Nachos操作系统的内存地址空间。 首先,为了理解内存地址扩展的必要性,我们需要了解Nachos操作系统的内存地址限制。在默认情况下,Nachos操作系统的内存地址空间是有限的,这意味着我们只能使用有限的内存来运行程序。然而,在实际应用中,我们经常需要处理更大规模的问题,这就需要更大的内存空间来存储和运行程序。 为了扩展内存地址,我们可以采用虚拟内存的方法。虚拟内存是一种计算机系统的内存管理技术,它可以将物理内存和逻辑内存分开,从而使得程序可以使用比物理内存更大的地址空间。在Nachos中,我们可以使用页面替换算法来实现虚拟内存。 页面替换算法是一种将内存中的页面与硬盘中的页面进行交换的技术。当内存空间不足时,在Nachos中,我们可以选择将一部分不常用的页面从内存中换出到硬盘中,从而腾出内存空间来加载更多的页面。当需要访问被换出的页面时,我们可以将其从硬盘中换入到内存中,这样就可以实现对更大内存地址的访问。 在实验中,我们可以使用Nachos操作系统提供的一些接口来实现内存地址扩展。例如,我们可以使用Nachos的PageTable来管理页面的映射关系,使用TranslationEntry来表示页面的状态。我们还可以使用SwapSpace来管理页面的换入和换出。 总之,操作系统课设实验七主要涉及了Nachos内存地址扩展的实现。通过虚拟内存和页面替换算法,我们可以扩展Nachos操作系统的内存地址空间,以满足处理更大规模问题的需求。实验中,我们可以使用Nachos提供的接口来管理页面的映射、状态和换入换出操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值