内容发布更新时间 : 2024/12/23 21:33:35星期一 下面是文章的全部内容请认真阅读。
第四章
2.可采用哪几种方式将程序装入内存?它们分别适用于何种场合? 答: (1)绝对装入方式,只适用于单道程序环境。 (2)可重定位装入方式,适用于多道程序环境。
(3)动态运行时装入方式,用于多道程序环境;不允许程序运行时在内存中移位置。 3.何谓静态链接?何谓装入时动态链接和运行时的动态链接?P120
答:静态链接是指在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的 装配模块,以后不再拆开的链接方式。
装入时动态链接是指将用户源程序编译后得到的一组目标模块,在装入内存时采用边装 入边链接的链接方式。
运行时动态链接是指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对 它进行的链接。
4.何谓装入时动态链接?装入时动态链接方式有何优点?
答:这是指将用户源程序编译后所得到的一组目标模块,再装入内存时,采用边装入边链接的链接方式。即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出对应的外部目标模块,并将它装入内存。 装入时动态链接方式有以下优点:
①便于修改和更新。采用动态链接方式,由于各目标模块是分开存放的,所以要修改或更新个目标模块是件非常容易的事。
②便于实现对目标模块的共享。再采用静态链接方式时,每个应用模块都必须含有其目标模块的拷贝,无法实现对目标模块的共享。但采用装入时动态链接方式时,OS就很容易将一个目标模块链接到几个应用模块上,实现多个应用程序对该模块的共享。 5.何谓运行时动态链接?运行时动态链接有何优点?
答:在许多情况下,应用程序在运行时,每次要运行的模块可能都是不相同的。但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要运行到的模块全部都装入内存,并在装入时全部链接在一起,显然这是低效的,因为往往会有部分目标模块根本就不运行。近几年流行起来的运行时动态链接方式,是对上述装入时链接方式的一种改进。这种链接方式是,将对某些模块的链接推迟到程序执行时才进行。亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立刻由OS去找到该模块,将之装入内存,将其链接到调用者模块上,这样不仅能加快程序的装入过程,而且可节省大量的内存空间。 7.为什么要引入动态重定位?如何实现?
答:在动态运行时装入的方式中,作业装入内存后的所有地址仍然都是相对(逻辑)地址。而将相对地址转换为绝对(物理)地址的工作被推迟到程序指令要真正执行时进行。为使地址的转换不会影响到指令的执行速度,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放数据在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。当系统对内存进行了“紧凑”,而使若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该程序在内存中的新起始地址去置换原来的起始地址即可。
11.令Buddyk(x)为大小为2k、地址为x的块的伙伴系统地址,试写出Buddyk(x)的通用表达式
13.为什么要引入对换?对换可分为哪几种类型?
答:对换技术也称为交换技术,由于当时计算机的内存都非常小,为了使该系统能分时运行读个用户程序而引入了对换技术。根据每次对换时所兑换的数量,可将对换分为如下两类: 整体对换。处理机中级调度实际上就是存储器的对换功能,其目的是用来解决内存紧张问题,并进一步提高内存的利用率和系统的吞吐量。由于在中级调度中对换是以整个进程为单位的,
故称之为“进程对换”或“整体对换”。这种对换被广泛地应用于多道程序系统中,并作为处理机的中级调度。
页面(分段)对换,如果对换是以进程的一个“页面”或“分段”为单位进行的,则分别称之为“页面对换”或“分段对换”,又统称为“部分对换”。这种对换方法的目的是为了支持虚拟存储系统。
18.什么是页面?什么是物理块?页面的大小应如何确定?
答:页面。分页存储管理将进程的逻辑空间分成若干个页,并为各页加以编号,从0开始, 如第0页、第1页等。
物理块。相应的,也把内存的物理地址空间分成若干个块,同样也为它们加以编号,如0#块、1#块等等。
页面大小。在分页系统中,若选择过小的页面大小,虽然一方面可以减小内存的碎片, 起到减少内存碎片总空间的作用,有利于内存利用率的提高,但另一方面却会造成每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存。此外,还会降低页面的换出的效率。然而,如果选择的页面过大,虽然可以减少页表的长度,提高页面换进换出的效率,但却又会使页内碎片增大。因此,页面的大小应选择适中,且页面大小应是2的幂, 通常为1KB~8KB。 19.什么是页表?页表的作用是什么?
答:在分页系统中,允许将进程的各个页离散的存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表。在进程地址空间内的所有页(0~N),依次在页表中有一页表项,其中记录了相应页表在内存中对应的物理块号。在配置了页表后,进程执行时,通过查找该表,即了找到每页在内存中的物理块号。可见,也表的作用是实现从页号到物理块号的地址映射。 21.在分页系统中是如何实现地址变换的?
答:页表功能是由一组专门的寄存器来实现的。一个页表项用一个寄存器。由于寄存器具有较高的访问速度,因而有利于提高地址变换的速度,但由于寄存器成本较高,页表又可能很大,因此,页表大多驻留在内存中,在系统中只设置一个页表寄存器,在其中存放页表在内存的始址和页表的长度。当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动将有效地址分为页号和页内地址两部分,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度, 则表示本次所访问的地址已超越进程的地址空间。于是,这一错误将被系统发现,并产生已地址越界中断。若未出现越界中断,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址到物理地址的变换。
26.分页和分段存储管理有何区别?
答:页是信息的物理单位,采用分页存储管理方式是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅只是系统管理上的需要,完全是系统的行为, 多用户是不可见的。而段是信息的逻辑单位。它通常包含的是一组意义相对完整的信息。分段的目的主要在于能更好地满足用户的需要。
页的大小固定而且由系统决定,在采用分页存储管理系统中,在硬件结构上,就是把用户程序的逻辑地址划分为页号和页内地址两部分,是直接由硬件实现的,因而在每个系统中只能有一种大小的页面。而段的大小不固定,通常由编译程序根据信息的性质来划分
分页用户程序地址空间是一维的,分页完全是系统的行为,故在分页系统中,用户程序的地址是属于单一的线性地址空间,程序员只需利用一个记忆符即可表示一个地址。而分段是用户的行为,故在分段系统中,用户程序的地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。