- 试解释下列名词:逻辑地址、物理地址、静态重定位、动态重定位。
逻辑地址:在用汇编语言或高级语言编写的程序中,是通过符号名来访问子程序和数据的,我们把程序中符号名的集合叫做“名字空间”。汇编语言源程序经过汇编,或者高级语言源程序经过编译,得到的目标程序是以“0”作为参考地址的模块,然后多个目标模块由连接程序连接成一个具有统一地址的装配模块,以便最后装入内存中执行。我们把 目标模块obj中的地址称
物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。
静态重定位:在程序执行之前进行重定位,它根据装配模块将要装入的内存起始位置,直接修改装配模块中的有关使用地址的指令。
动态重定位:在程序执行过程中进行地址重定位。更确切地说,是在CPU每次访问内存单元前才进行地址变换。
- 考虑有一个可变分区系统,含有如下顺序的空闲区:10K,40K,20K,18K,7K,9K,12K和15K,若有如下的请求序列:12K,10K,9K。请分别给出采用首次适应、最佳适应和最坏适应算法时,空闲区的分配情况。
首次适应:将12K分配到40K空闲区(该空闲分区还剩余28K),10K分配到10K空闲区,将9K分配到28K空闲区。
最佳适应:将12K分配到12K空闲区,10K分配到10K空闲区,9K分配到9K空闲区。
最坏适应:将12K分配到40K空闲区(该空闲区还剩余28K),将10K分配到28K空闲区(该空闲区还剩余18K),将9K分配到20K空闲区。
- 请回答下列问题。
(1) 什么是碎片?外部碎片和内部碎片的区别是什么?
碎片:在地址不断被划分后,留下的难以利用的,很小的空闲分区。
外部碎片:处于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
内部碎片:处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
(2) 什么是快表?它在地址转换中起什么作用?
快表是一个高速、具有并行查询能力的存储器,用于存放正运行的进程的当前页号和块号,或者段号和段起始地址。
作用:将原来调用相应资源需要访问内存两次变为一次,且命中率较高,有效地提高了地址转换的速度。
- 某系统采用页式(Paging)存储管理策略,拥有逻辑空间32页,每页2KB;拥有物理空间1MB。
(1)写出逻辑地址的格式。
15 11 | 10 0
页号|页偏移
因为32页的逻辑空间故需要5位来管理页号,而每页2KB的大小需要11位来管理页内偏移,故页内偏移是0-10,页号是11-15.
(2)若不考虑访问权限位,进程的页表有多少项(Entry)?每项至少多少位(bit)?
每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限等,则页
表项中只需给出页所对应的物理块号,1M的物理空间可分成2^9个物理块,故每个页表项
至少有9位
(3)如果物理空间减少一半,页表结构应做怎样的改变?
如果物理空间减少一半,则页表中页表项数仍不变,但每项的长度可减少1位