1.试述计算机系统中的存储器层次。为什么要配置层次式的存储器?
设置多个存储器可以使存储器两端的硬件能并行工作。采用多级存储系统,特别是Cache技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。增加CPU中寄存器的数量,也可大大缓解对存储器的压力。
2.简述不同编译、链接、装载与地址定位过程。
预处理:源代码和相关的头文件被预编译器cpp预编译为一个 .i 文件(#define ,#include,#if,删除注释行)。
编译:将预处理之后的文件进行一系列词法分析,语法分析,语义分析及优化后生产相应的汇编代码文件。
汇编:将汇编代码转化为机器可以执行的机器代码,例如使用gcc命令从C源代码文件开始,经过预编译,编译和汇编直接输出目标文件(Object File)(还没有经过链接的过程)。
链接:目标文件和库一起链接形成最中的可执行文件。
装载:程序是一个静态的概念:预编译好的指令和数据集合的一个文件。进程则是一个动态的概念:是程序运行时的一个过程。
3.什么是逻辑地址、物理地址?什么是静态地址重定位、动态地址重定位?
操作系统给每个应用程序都分配了一个4G的虚拟的空间,这个空间的编址就称为“逻辑地址”。
物理地址是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。
静态重定位是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。
动态重定位是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。
4.固定分区管理的缺点是什么?
存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。
5.简述固定分区存储管理和可变分区存储管理的区别
可变分区存储管理不是预先把内存中的用户区域划分成若干固定分区,而是在作业要求装入内存时,根据用户作业的大小和当时内存空间使用情况决定是否为该作业分配一个分区。因此分区大小不是预先固定的,而是按作业需求量来划分的;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空置造成浪费的问题。
6.某系统采用可变分区方式管理主存储器,在主存分配情况如图所示时,有4个作业要求装入主存,它们各自所需的主存空间为:J1:8KB,J2:15KB,J3:30KB,J4:115KB,系统不允许移动。用最先适应分配算法,按2341的作业顺序装入,描述作业装入内存的过程。
7.