操作系统复习笔记5——内存管理

194 阅读3分钟

重定位可以执行的时机

1、在编译链接时,给一个固定的基地址进行重定位,代码只能放在事先确定好的位置上;

2、在程序载入时,根据内存情况确定一个基地址进行重定位,一旦载入就不能移动;

3、运行时重定位;

进程在内存中应该是可以移动的,因为进程上下文切换,内存中的代码总是可以重定位的;

可执行程序经过编译形成逻辑地址,运行时需要将逻辑地址转换成物理地址;

image.png

image.png

MMU:内存管理单元,将虚拟地址转换成物理地址

连续内存分配与管理

固定等长分区、固定变长分区、可变分区; 分区分配算法:首次适配、最佳适配、最差适配 外部碎片、内部碎片,碎片可以通过内存紧缩消除,但是时间成本太高

分段

通过段号和段内偏移确定一条指令或数据的位置,进程需要段表存储各个段的基址;

逻辑地址包括段号和段内偏移;

image.png 缺点:空间低效,碎片多

分页

没有外部碎片,内部碎片有上届;

依靠页表结构;逻辑地址包括页号和页内偏移;

多级页表:

image.png

页号连续,省略不记录,作为页表的下标来寻址对于的页表项;

通过页表访问,时间增加,引入TLB,存储页表;

image.png

image.png

段页结合

让段面向用户, 页面向硬件;

image.png 逻辑地址通过段表和页表转换成物理地址

image.png

王道考研

形成逻辑地址的阶段是链接;

使用交换技术时,如果一个进程正在进行IO操作,则不能换出内存;若正在临界区,可以;

段页结合存储管理中,每个进程一个段表,每个段一张页表;

内存保护需要由操作系统和硬件机构合作完成;

分段式内存管理没有内部碎片;

image.png 答案:C 这里提供给用户的物理地址空间是减去段表和页表之后的,由于段表和页表大小不确定,所以也不确定;

分页系统中的页面是由操作系统所感知的;

一个程序如何分段是在用户编程时决定的;

image.png 答案:A 其他选项和程序的动态链接无关

image.png

image.png

区分:可重入函数和可重入程序,上面是指可重入程序,可重入函数是指被多个线程调用时不会引入任何共享数据的函数;

引入段式管理方式,主要是为了满足用户下列要求:方便编程、分段共享、分段保护、动态链接和动态增长;

image.png 答案:B

image.png

image.png

image.png 答案:A 多个进程并发执行时,所有进程的页表大多数都驻留在内存中;

页式存储方式不能使用静态重定位;

image.png

image.png

最佳适配算法最容易产生内存碎片。