答:内存保护的主要任务是确保每道程序都只在自己的内存区内运行。这就要求系统能对每条指令所访问的地址进行越界检查。若发生越界,系统应能立即发现,并发出越界中断请求,以抛弃该指令。若每次检查完全由软件实现,则每执行一条指令时,都要增加若干条指令去执行越界的检查功能,这无疑将降低程序的执行速度,因此,越界检查通常由硬件实现,并使指令的执行与越界检查功能并行执行,从而不使程序的运行速度降低。当然,对发现有越界后的处理需与软件配合来完成。因此说内存保护功能是由硬件和软件协同完成的。
答:重定位:允许作业在运行过程中在内存中移动的技术,必须获得硬件地址变换机构的支持。即在系统中增加一个重定位寄存器,用它来装入程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而成的,这就叫做重定位。在连续分配方式中,为了利用“碎片”将作业装入,需要将内存中分散的小分区拼接成大分区,称为”拼接”或”紧凑”,但由于经过紧凑后的用户程序在内存中的位置发生了变化,若不对程序和数据的地址进行修改, 程序将无法执行,所以必须进行重定位。
答:
答:
(1) 绝对装入方式,适用于单道程序系统。
(2) 可重定位装入方式,适用于分区式存储管理系统。
(3) 动态运行时装入方式,适用于分页、分段式存储管理系统。
根据信息的性质来划分。(3)分页的作业地址空间是一维的,而分段作业地址空间则是二维的。
答:
静态链接的定义:程序运行之前,先将各目标及它们所需的库函数链接成一个完整的装配模块,以后不再拆开,这种事先进行链接的方式称为。
答:
链接(Linking) 是计算机程序构建过程中的一个阶段,其主要任务是将一个或多个由编译器生成的目标文件(包括库文件)组合成一个可执行文件、共享库或者其他类型的目标代码。链接主要解决的问题包括:
符号解析 :编译时,函数和变量的具体地址尚未确定。这些未确定的函数和变量被称为“外部符号”。链接器的任务之一是找到这些符号的真实地址,并替换相应的引用。
空间和地址分配:链接器为每个模块分配空间,并决定每个函数和变量在最终输出中的地址。
库处理:程序员经常使用标准库或其他库中的函数。链接器从库中选择所需的模块并将其包含在最终的可执行文件中。
链接的主要类型包括:
静态链接
优点:
- 生成的可执行文件是独立的,不依赖于外部的库文件,方便部署和分发。
- 有时可能会有更好的性能,因为所有的代码都在一个单一的二进制文件中。
缺点:
- 如果多个程序使用相同的库,静态链接会导致每个程序都有库的一个副本,浪费磁盘和内存资源。
- 如果库更新,需要重新链接和部署应用程序。动态链接:
-优点:
- 节省磁盘空间和内存,因为多个运行的程序可以共享同一个库的副本。
- 库更新时,通常不需要重新链接和部署应用程序。
缺点:
- 运行时需要库文件。如果库文件丢失或与应用程序版本不兼容,可能会导致程序无法运行。
- 有时可能有额外的性能开销,因为需要解析动态符号和加载共享库。在实际开发中,静态链接和动态链接各有应用场景,选择哪种链接方式取决于项目的具体需求和目标。
答:答:在多道环境下,一方面,在内存中的某些进程由于某事件尚未发生而被阻塞,但它却占用了大量的内存空间,甚至有时可能出现在内存中所有进程都被阻塞而迫使CPU停止下来等待的情况;另一方面,却又有着许多作业在外存上等待,因无内存而不能进入内存运行的情况。显然这对系统资源是一种严重的浪费,且使系统吞吐量下降。为了解决这一问题,在操作系统中引入了对换(也称交换)技术。 可以将整个进程换入、换出,也可以将进程的一部分(页、段)换入、换出。前者主要用于缓解目前系统中内存的不足,后者主要用于实现虚拟存储。
答:
对文件区管理的主要目标是提高文件存储空间的利用率,然后才提高对文件的访问速度,因此,对文件区空间的管理采取离散分配方式。
对对换空间管理的主要目标是提高进程换入和换出的速度,然后才是提高文件存储空间的利用率,因此,对对换区空间的管理采取连续分配方式,较少的考虑外存中的碎片问题。
答:
无论是分页系统、还是分段系统,都允许多个进程共享程序中的代码或公共数据。分页系统实现页共享的方法是,在共享进程中将共享页对应的页表项指向同一个内存块。由于分页系统的地址空间是一维的,页的划分由系统自动进行,因此会造成共享代码或数据与非共享代码或数据共处一页的情况,从而使信息的共享变得十分困难。而分段系统则在用户编程时,自然地进行分段的划分,每个分段中的信息具有相对完整的逻辑意义,正好与分段存储系统相适应,因此它比分页更容易实现信息的共享。
对信息的保护来说,也是按信息的逻辑单位进行保护,也与分段存储系统相适应,OS应保证用户进程只按允许的方式访问共享信息,而对他人的非共享信息则不允许进行任何形式的访问。分段系统比分页系统更容易实现信息的保护,我们可按各个分段的含义来对每个分段进行不同的保护,如子程序段的存取权限是只能执行,数据段的存取权限是可读可写等。
答:
(1)改连续分配方式为离散分配方式;
(2)增加对换和覆盖机制;
(3)引入动态机制;
(4)引入虚拟存储器机制;
(5)引入存储器共享机制。
答:
在有快表的分页存储系统中,计算有效存取时间时,需注意访问快表与访问内存的时间关系。通常系统中,先访问快表,未命中时再访问内存;但如果题中有具体的说明,计算时则应注意区别。 计算过程:[(0.1+1)×85%+(0.1+1+1)×(1-85%)]μs=1.25μs。
答:
答:
段号 | 内存起始地址 | 段长 |
0 | 50K | 10KB |
1 | 60K | 3KB |
2 | 70K | 5KB |
3 | 120K | 8KB |
4 | 150K | 4KB |
18.某系统采用动态分区分配方式管理内存,内存空间为640KB,低端40KB存放OS。系统为用户作业分配空间时,从低地址区开始。针对下列作业请求序列,画图表示使用首次适应算法进行内存分配和回收后内存的最终映像。作业请求序列如下:
作业1申请200KB,作业2申请70KB;作业3申请150KB,作业2释放70KB;作业4申请80KB,作业3释放150KB;作业5申请100KB,作业6申请60KB;作业7申请50KB,作业6释放60KB。
19.某OS采用分段存储管理方式,用户区内存为512KB,空闲块链入空闲块表,分配时截取空闲块的前半部分(小地址部分)。初始时全部空闲。执行申请、释放操作序列request(300KB)、request(100KB)、release (300KB)、request (150KB)、request(5OKB)、request(90KB)后:
(1)若采用首次适应算法,则空闲块表中有哪些空闲块(指出大小及起始地址)?
(2)若采用最佳适应算法,则空闲块表中有哪些空闲块(指出大小及起始地址)?
(3)若随后又要申请80KB,则针对上述两种情况会产生什么后果?这说明了什么问题?
20.某系统的空闲分区如表5-3所示,采用可变分区分配策略处理作业。现有作业序列96KB、20KB、200KB,若采用首次适应算法和最佳适应算法来处理这些作业序列,则哪种算法能满足该作业序列的请求?为什么?
段号 | 内存起始地址 | 段长 |
0 | 32K | 100KB |
1 | 10KB | 150K |
2 | 5KB | 200K |
3 | 218KB | 220K |
4 | 96KB | 530K |