1以c语言为例从源程序到可执行目标程序
c程序经过预处理—>编译—>汇编—>链接产生了可执行文件。
编译后的程序需要经过链接才能装载,而链接后形成的目标程序中的地址也就是逻辑地址。因此链接形成了逻辑地址。装载则是由逻辑地址变换到物理地址。
编译是从高级语言翻译为机器语言,汇编是从低级语言翻译为机器语言。
2限制内存分配的目的是什么?
存储保护
3实现虚拟内存管理需要有什么硬件的支持?
需要请求分页页表机制,缺页中断机构,地址变换机构等。
4什么是交换技术?
举例,有一个CPU采用时间片轮转调度算法的多道程序环境。时间片到,内存管理器将刚刚执行过的进程换出,将另一进程换入刚刚释放的内存空间。同时,CPU调度器可以将时间片分配给其他已在内存中的进程。每个进程用完时间片都与另一进程交换。
有一点很重要,当进程处于I/O操作时不能换出主存,否则其I/O数据区将被新换入的进程占用,导致错误。不过可以在操作系统中开辟I/O缓冲区,将数据从外设输入或将数据输出到外设的I/O活动在系统缓冲区中进行,这时系统缓冲区与外设I/O时,进程交换不受限制。
5段页式管理方式
在段页式系统中,作业的逻辑地址分为三部分:段号,页号和页内偏移量。
为了实现地址变换,系统为每个进程建立一张段表,每个分段都有一张页表。段表表项中至少包括段号,页表长度和页表始址,页表表项中至少包括页号和块号。此外,系统中还应有一个段表寄存器,指出作业的段表始址和段表长度(段表寄存器和页表寄存器的作用都有两个,一是在段表或页表中寻址,二是判断是否越界)。
6在可变分区分配方案中,某一进程完成后,系统回收其主存空间并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是
对于无上邻空闲区,也无下邻空闲区的情况。
找一个标志位为空的记录,记下该回收区的起始地址和长度,并改写相应的标志位为未分配,表明该登记栏中指示了一个空闲区。
这种情况下空闲分区数+1
对于有上邻空闲区也有下邻空闲区的情况
修改上邻区记录的长度(为上邻区长度,下邻区长度和收回区长度之和),再把下邻区记录的标志位改为空即可。空闲分区数-1。
7静态重定位与动态重定位
静态重定位又叫可重定位装入,它是在装入的时候发生的,是把逻辑地址转换成物理地址,并且装入后不能改变。
动态重定位是在执行的时候发生的,是静态重定位的取巧版。
8为什么分段存储管理方式产生的是外部碎片?
因为分段式存储是按需分配,段长与作业长度相同。
比如,用户进程由主程序,两个子程序,栈和一段数据组成,于是可以把这个用户进程划分为5段,每段从0开始编址,并分配一段连续的地址空间(段内要求连续,段间不要求连续)。
因此程序如何分段是在用户编程时决定的。
9段式虚拟存储与页式虚拟存储的区别
在页式系统中,逻辑地址的页号和页内偏移量对用户是透明的,但在段式系统中,段号和段内偏移量必须由用户显示提供,在高级程序设计语言中,这个工作由编译程序完成。
10什么是内存保护?
内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。
内存保护可采取两种办法:
(1)在CPU中设置一对上下限寄存器,存放用户作业在主存中的下限地址和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值相比,判断有无越界。
(2)采用重定位寄存器和界地址寄存器来实现这种保护。重定位寄存器含最小的物理地址值,界地址寄存器含逻辑地址的最大值。每个逻辑地址值必须小于界地址寄存器;内存管理机构动态地将逻辑地址与界地址寄存器进行比较,若未发生地址越界,则加上重定位寄存器地值后映射为物理地址,再送交内存单元。
11首次适应算法,最佳适应算法,最坏适应算法
首次适应算法和最佳适应算法的空闲分区都是按照容量递增的方式排列。
最坏适应算法是按照容量递减的方式排列。
12采用段式或页式虚拟存储的时候,物理地址空间为多大?
段表和页表同样存储在内存中,系统提供给用户的物理地址空间为总空间大小-页表或段表地长度。由于页表和段表的长度不能确定,所以提供给用户的物理地址空间大小也不能确定。
13程序的动态链接与分段存储
程序的动态链接与程序的逻辑结构相关,分段存储管理程序按照逻辑段进行划分,因此有利于其动态链接。其他的内存管理方式与程序的逻辑结构无关。
14什么是可重入程序?
可重入程序是指该程序被某进程调度,但还未结束,又被另一个进程调用。
可重入程序主要通过共享来使用同一块存储空间,或者通过动态链接的方式将所需的程序段映射到相关进程中,其最大的优点是减少了对程序的调入调出,由此来减少对换信息量。
15页式管理中的页面大小
页式管理中很重要的一个原因是页面大小如何确定。确定页面大小有很多因素,如进程的平均大小,页表占用的长度等。而一旦确定,所有的页面就是等长的。
16为什么一定要引入段式存储管理方式呢?
主要是为了满足用户的下列要求:方便编程,分段共享,分段保护,动态链接和动态增长。
17对主存的访问是以什么为单位?
对主存的访问是以字节或字为单位的。例如,在页式管理中,不仅要知道块号,而且要知道页内偏移。
18在段式分配中,CPU每次从内存中取一次数据需要两次访问内存,这是为什么呢?
因为在段式分配中,逻辑地址结构由两部分组成,分别是段号S和段内偏移量W。
在段表寄存器的配合下得到段号S对应的段表项地址,然后再取出页内偏移量,就可得到物理地址。
19在段页式分配中,CPU每次从内存中取一次数据需要3次访问内存。
因为在段页式分配中,逻辑地址结构由三部分构成,分别是段号S,页号P和页内偏移量W。
在段表寄存器的配合下得到段表项地址,在页表寄存器的配合下得到页帧号,然后再取出页内偏移量。如此一来,就是访存3次。
20内部碎片与外部碎片
分页虚拟存储管理方式,段页式分区管理,固定式分区管理产生的都是内部碎片。
分段虚拟存储管理方式产生的是外部碎片。
21页式虚拟存储不能采用静态重定位
这是因为静态重定位是在程序运行之前由装配程序完成的,必须分配其要求的全部连续内存空间。而页式虚拟存储管理方式是将程序离散的分成若干页,从而可以将程序装入不连续的内存空间,显然静态重定位不能满足其要求。
同样的道理,段式虚拟存储也是采用动态重定位的。
22页表项到底是干嘛的?
页表项包含两部分,第一部分是页号,第二部分是物理块号,每个页都对应一个页表项。
某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为2^10B,页表项大小为2B,逻辑地址结构为,

逻辑地址空间大小为2^16页,则表示整个逻辑地址空间的页目录项中包含表项的个数至少是?
页大小为2^10B,每个页表项大小为2B,
则每个页可以存储2^9个页表项,
逻辑地址空间大小为2^16页,则需要
2^16个页表项,
那就需要2^7个页才能将这些页表项存储下来,即页目录表中包含表项的个数至少是128。
23进程逻辑空间的页只有最后一页可能是不满的,比如页号为0—(n-1),只有n-1号页可能不满。
24内存有两大区域,包括OS和用户区域,内存管理只针对用户区域。
25页内地址过小可以减少页内碎片,提高内存利用率;但内存占用过多进程块,导致页表长度过长,占据额外内存空间;页内地址过大则页内碎片变大,页表长度变短。
26页式管理:非连续性:逻辑相邻,物理不相邻。
整体性
页式管理不支持虚拟存储器,不允许程序部分装入(除非预设了覆盖技术,是用户预设的)。
作业运行结束才释放所占空间。
27页表本质上是一个索引结果,每个进程都有一个页表,常驻内存
28快表按内容查找,普通存储器是按照地址查找
按内容查找就在用大喇叭喊张三,是广播的方式,按地址查找就是查找学院班级宿舍这样子。
4117



被折叠的 条评论
为什么被折叠?



