博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页式存储管理及地址转换(网易笔试题)
阅读量:4365 次
发布时间:2019-06-07

本文共 1383 字,大约阅读时间需要 4 分钟。

昨天参加网易的笔试,被一个操作系统的分页式管理难住啦,本来就忘得差不多啦,地址给的还是16进制,真是就懵啦。就把分页式存储管理又看了一遍,记录下。

1.分页式存储管理基本原理:

分页式存储管理允许把进程分配到不相邻的分区中。首先将进程的逻辑地址空间划分为大小相等的块,且块相对比较小,每个块称为一页(Page),由页号和页内地址组成;

其次,将内存空间也划分为同样大小的块,每个块称为一页面(PageFrame)。

                                                 页:

页号

页内地址

 

 

假设逻辑地址为A,页面大小为L,则页号和页内地址为:

页号=A/L

页内地址=A%L

 

2.当进程将要运行时,操作系统会为进入内存的每个用户进程建立一张页表,记录进程逻辑地址空间的页号和内存物理地址空间中的页面号一一对应关系。同时系统还会建立一张作业表,将当前运行的作业的页表地址进行登记。

对应关系如图所示:

进程运行时,通过查找页表,就可以找到每页对应的物理页面号。页表就是实现从页号到物理块号的地址映射。

3.地址转换

地址转换时,先从页表控制寄存器中找到相应的页表,再以页号为索引去检索。查找操作由硬件执行。在执行检索之前,先将页号与长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的。于是,这一错误将被系统发现并产生一地址越界中断。若未出现越界错误,则将始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理中。与此同时,再将有效中的页内地址送入寄存器的块内地址字段中。这样便完成了从到的变换。图示出了分页系统的地址变换机构。

网易的笔试题:

23.有用户态进程A,其虚拟内存页为1KB,A占用了64页,内存大写为128KB,A进程将爱子到内存的页面和物理内存块的编号对应关系如下:

页面编号   物理内存块编号

0                          4

1                          9

2                          5

3                          8

请根据以上信息回答如下问题,并给出计算过程:

1)虚拟地址为015D对应的物理地址是多少?

2)物理地址为113C对应的虚拟地址为多少?

3)进程A有一作业长度为8页,试图访问虚拟地址2A3D并保存整型1到该地址对应的物理地址空间,之后又尝试从该地址读取保存的数据,请问A进程这两次内存访问过程能否正常执行?并解释原因。

   解:

   1)虚拟地址为015D对应的物理地址是 :

       1KB=400H  (转换成16进制)

       页号:  015D/400=0

       页内地址:015D%400=15D

       查找页表:0->4

       物理地址:4*400+15D=115D

   2)物理地址为113C对应的虚拟地址为多少?

       就是反过来,物理快号:113C/400 = 4

                      块内地址:113C%400 = 13C

                      虚拟地址:0*400+13C=013C

   3)进程A有一作业长度为8页,试图访问虚拟地址2A3D并保存整型1到该地址对应的物理地址空间,之后又尝试从该地址读取保存的数据,请问A进程这两次内存访问过程能否正常执行?并解释原因。

        不能。  

        页号:2A3D/400 = A

        页内地址:2A3D%400=23D

        A>8,超出进程A的页表长度。

       **第三问不是很确定,如果有错,请指出,谢谢。第三问我也不太懂。

       这个题麻烦的就是16进制的乘除。

转载于:https://www.cnblogs.com/jycboy/p/5312840.html

你可能感兴趣的文章
PHP调用mysql函数整理
查看>>
通俗易懂系列 | 设计模式(五):策略模式
查看>>
三核CPU XP系统终极安装SQL 2005
查看>>
SQL语句查询优化续集
查看>>
(四)ServletConfig
查看>>
连接数据库修改篇
查看>>
说说面向对象
查看>>
mybatis学习笔记
查看>>
使用淘宝 NPM 镜像
查看>>
zabbix 乱码的问题
查看>>
Swift 学习之二十一:?和 !(详解)
查看>>
Laravel
查看>>
二分图匹配
查看>>
Day032--Python--操作系统, process进程
查看>>
highcharts-Highmaps 动态传入城市名称
查看>>
english interview
查看>>
寒假222_codeforces 290 div 2 D
查看>>
open-falcon(v0.2)部署手册(源码编译)
查看>>
大明A+B(hdu1753)大数,java
查看>>
局部变量&&malloc函数&&生命周期的一些见解
查看>>