存储管理
1.试述计算机系统中的存储器层次。为什么要配置层次式的存储器?
目前,计算机系统均采用层次结构的存储子系统,以便在容量大小、速度快慢、价格高低等诸多因素中取得平衡点,获得较好的性能价格比。计算机系统的存储器层次结构自上而下依次为:寄存器、缓存、内存、磁盘、磁带5层。
多层次的存储体系十分有效和可靠,能达到很高的性能价格比。
2.简述不同编译、链接、装载与地址定位过程。
编译:源程序经过编译程序或汇编程序的处理生成目标模块。一个程序可由独立编写且具有不同功能的多个源程序模块组成,由于模块包含外部引用,即指向其他模块中的数据或指令地址,或包含对库函数的引用,编译程序或汇编程序负责记录引用发生位置,其处理结果将产生相应的多个目标模块,每个目标模块都附有供引用使用的内部符号表和外部符号表。
链接:
(1)静态链接:指在程序装载到内存和运行前,就已将它的所有目标模块及所需要的库函数进行链接和装配成一个完整的可执行的程序且此后不再拆分。
(2)动态链接:指在程序装入内存前并未事先进行程序各目标模块链接,而是在程序装载时一边装载一边链接,生成一个可执行程序。
(3)运行时链接:指将某些目标模块或库函数的链接推迟到执行时才进行。
装载:
(1)绝对装载:在模块中出现的所有地址都是内存的绝对地址。
(2)可重定位装载:模块内使用的地址都是相对地址。
(3)动态运行时装载:允许进程的内存映像在不同时候处于不同位置,此时模块内使用的地址必定为相对地址。
地址定位:
(1)静态地址重定位:由装载程序实现装载代码模块的加载和地址转换,把它装入分配给进程的内存指定区域,其中的所有逻辑地址修改成内存物理地址。
(2)动态地址重定位:由装载程序实现装载代码模块的加载,把它装入分配给进程的内存指定区域,但对链接程序处理过的应用程序的逻辑地址则不做任何修改,程序内存起始地址被置入硬件专用寄存器——重定位寄存器。
(3)运行时链接地址重定位:对于静态和动态地址重定位装载方式而言,装载代码模块是由整个程序的所有目标模块及库函数目标模块经链接和整合构成的可执行程序,即在程序启动执行前已经完成了程序的链接过程。
3.什么是逻辑地址、物理地址?什么是静态地址重定位、动态地址重定位?
逻辑地址: 是指由程序产生的与段相关的偏移地址部分。
物理地址:是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。
静态地址重定位:由装载程序实现装载代码模块的加载和地址转换,把它装入分配给进程的内存指定区域,其中的所有逻辑地址修改成内存物理地址。
动态地址重定位:由装载程序实现装载代码模块的加载,把它装入分配给进程的内存指定区域,但对链接程序处理过的应用程序的逻辑地址则不做任何修改,程序内存起始地址被置入硬件专用寄存器——重定位寄存器。
4.固定分区管理的缺点是什么?
(1)由于预先已规定分区大小,使得大作业无法装入,用户不得不采用覆盖等技术加以补救,这样不但加重用户负担,而且极不方便。
(2)内存空间利用率不高,作业很少会恰好填满分区。
(3)如果一个作业在运行过程中要求动态扩充内存空间,采用固定分区是相当困难的。
(4)分区数目在系统初启动时确定的,这就会限制多道运行程序的道数,特别不适应分时系统交互型用户及内存需求变化很大的情形。
5.简述固定分区存储管理和可变分区存储管理的区别
可变分区存储管理不是预先把内存中的用户区域划分成若干固定分区,而是在作业要求装入内存时,根据用户作业的大小和当时内存空间使用情况决定是否为该作业分配一个分区。因此分区大小不是预先固定的,而是按作业需求量来划分的;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空置造成浪费的问题