代码改变世界

存储管理

2019-05-19 10:28  陆许  阅读(327)  评论(0编辑  收藏  举报

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

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

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

       编译:源程序经过编译程序或汇编程序的处理生成目标模块,也称目标代码。一个程序可由独立编写且具有不同功能的多个源程序模块组成,由于模块包含外部引用,或包含对库函数的引用,编译程序或汇编程序负责记录引用发生位置,其处理结果将产生相应的多个目标模块,每个目标模块都附有供引用使用的内部符号表和外部符号表。符号表中依次给出各个符号名以及在本目标模块中的名字地址,在模块被链接时进行转换。

       链接:链接程序的作用是根据目标模块之间的调用和依赖关系,经主调模块、被调模块以及所用到的库函数装配和链接成一个完整的可装载执行模块。(1)静态链接:静态链接是指在程序装载到内存和运行之前,就已将它的所有目标 模块以及所需要的库函数进行链接和装配成一个完整的可执行程序并且此后不再拆分。(2)动态链接:动态链接是指在程序装入内存之前并未事先进行程序各目标模块的链接,而是在程序装载时一遍=边装载一边链接,生成一个可执行程序。(3)运行时链接:运行时链接是指将某些目标模块或库函数的链接推迟到执行时才进行。在程序执行过程中,若发现被调用模块或库函数尚未链接,先在内存中进行搜索以查看其是否装入内存;若装入,则直接将其链接到调用者程序中,否则进行该模块在外存上的搜索,以及装入内存和进行链接,生成一个可执行程序。

       装载:(1)绝对装载:装载模块中的指令地址始终与其内存中的地址相同。(2)可重定位装载:根据内存的使用情况,决定将装载代码模块放入内存的物理位置,模块中使用的都是相对地址。(3)动态运行时装载:允许进程的内存映像在不同时候处于不同位置,此时模块中使用的是绝对地址。

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

       逻辑地址是指在计算机体系结构中应用程序角度看到的内存单元、存储单元、网络主机的地址。物理地址,又叫实际地址或绝对地址,在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址。

       由装载程序实现装载代码模块的加载和地址转换,把它装入分配给进程的内存指定区域,其中的所有逻辑地址修改成内存物理地址,称为静态地址重定位。程序执行过程中,每当CPU引用内存地址(访问程序和数据)时,由硬件截取此逻辑地址,并在它被发送之前加上重定位寄存器的值,以便实现地址转换,称为动态地址重定位。

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

   (1)由于预先已规定分区大小,使得大作业无法接入,用户不得不采用覆盖等技术加以补救,加重用户负担,并且极其不方便。(2)内存空间利用率不高,作业很少会恰好填满分区。(3)如果一个作业在运行过程中要求动态扩充内存空间,是无法实现的。(4)分区数目是系统初启时确定的,这会限制多道运行程序的道数。

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

       固定分区存储管理又称为静态分区模式,基本思想是:内存空间被划分为数目固定不变的分区,各分区大小不等,每个分区只装入一个作业,若多个分区中都装有作业,则他们可以并发执行,这是支持多道程序设计最简单的存储管理技术。为了说明各分区分配和使用情况,需要设置一张内存分配表,记录内存中划分的分区及其使用情况。固定分区管理的一项任务是何时及如何把内存空间划分成分区。

       可变分区存储管理又称为动态分区模式,按照作业大小来划分分区,但划分的时间、位置和大小都是动态的。系统把作业装入内存时,根据所需要的内存容量查看是否有足够的空间,若有则按需分割一个分区分配给此作业;若无则令此作业等待内存资源。可变分区能够克服固定分区内存资源的浪费问题,有利于多道程序设计,提高内存资源利用率。用于管理的数据结构可由已分配表和未分配表组成。

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

 

     

 

 

 

 

 

 

 

 

      用最先适应分配算法,按2341的作业顺序装入,描述作业装入内存的过程。

 

                       已分配表                                                  未分配表

 

 

内存分配表