存储管理

 

1.试述计算机系统中的存储器层次。为什么要配置层次式的存储器?

计算机系统的存储器层次结构分为寄存器、高速缓存、主存储器、磁盘、磁带等5层。计算机系统均采用层次结构的存储子系统,以便在容量大小、速度快慢、价格高低等诸多因素中取得平衡点,获得较好的性能/价格比。

 

2.简述不同编译、链接、装载与地址定位过程。

一般的编译过程可以分解为4个步骤,预处理,编译,汇编和链接:

  • 预编译:处理源代码中的以”#”开始的预编译指令,如”#include”、”#define”等。
  • 编译:把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后产生相应的汇编代码文件,是程序构建的核心部分,也是最复杂的部分之一。
  • 汇编:将汇编代码根据指令对照表转变成机器可以执行的指令,一个汇编语句一般对应一条机器指令。
  • 链接:将多个目标文件综合起来形成一个可执行文件。

而对于第2步,编译由编译器完成器,编译器是将高级语言翻译成机器语言的一个工具,其具体步骤包括:

  • 词法分析:将源代码程序输入扫描器,将源代码字符序列分割成一系列记号(Token)。
  • 语法分析:对产生的记号使用上下文无关语法进行语法分析,产生语法树。
  • 语义分析:进行静态语义分析,通常包括声明和类型的匹配,类型的转换。
  • 中间语言生成:使用源代码优化器将语法树转换成中间代码并进行源码级的优化。
  • 目标代码生成:使用代码生成器将中间代码转成依赖于具体机器的目标机器代码。
  • 目标代码优化:使用目标代码优化器对目标代码进行优化,比如选择合适的寻址方式、使用位移替代乘法、删除多余指令等。

如果一个源代码文件中有变量或函数等符号定义在其他模块,那么编译后得到的目标代码中,该符号的地址并没有确定下来,因为编译器不知道到哪里去找这些符号,事实上这些变量和函数的最终地址要在链接的时候才能确定。现代的编译器只是将一个源代码编译成一个未链接的目标文件,最终由链接器将这些目标文件链接起来形成可执行文件。

 

3.什么是逻辑地址、物理地址?什么是静态地址重定位、动态地址重定位?

逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是完全透明的,仅由系统编程人员涉及。应用程序员虽然自己可以直接操作内存,那也只能在操作系统给你分配的内存段操作。

 

物理地址(Physical Address) 是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。

 

静态地址重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故成为静态重定位。

 

动态地址重定位:不是在程序执行之前而是在程序执行过程中进行地址重定位。更确切的说,是在每次访问内存单元前才进行地址变换。动态重定位可使装配模块不加任何修改而装入内存,但是它需要硬件一定位寄存器的支持。

 

 

4.固定分区管理的缺点是什么? 

 答:用固定分区方式管理主存储器时,总是为作业分配一个不小于作业长度的分区。因此,有许多作业实际上只占用了分区的一部分,使分区中有一部分区域闲置不用,降低了主存空间的利用率。

 

5.简述固定分区存储管理和可变分区存储管理的区别

 答:固定分区存储管理是把主存储器中可分配的用户区域预先划分成若干个连续区,每一个连续区称为一个分区。一旦划分好后,主存储器中分区的个数就固定了。各个分区的大小可以相同,也可以不同,但每个分区的大小固定不变。每个分区可以装入一个作业,所以 当有多个分区时,就可同时在每个分区中装入一个作业,但不允许多个作业同时存入在同一个分区中。  可变分区存储管理不是预先把主存储器中的用户区域划成分区,而是在作业要求装入主存储器时,根据作业需要的主存空间大小和当时主存空间使用情况来决定是否为作业分配一个分区。因此分区的长度不是预先固定的,而是按作业的实际需求来划分的;分区的个数也不是预先确定的,而是由装入的作业数决定的。

6.某系统采用可变分区方式管理主存储器,在主存分配情况如图所示时,有4个作业要求装入主存,它们各自所需的主存空间为:J1:8KB,J2:15KB,J3:30KB,J4:115KB,系统不允许移动。
用最先适应分配算法,按2341的作业顺序装入,描述作业装入内存的过程。

 

 

 

posted @ 2019-05-15 21:08  谢锐朗  阅读(455)  评论(0编辑  收藏  举报