【例】在段式存储管理中代码共享是如何实现的?可共享代码的程序应具备怎样的特征?(南方名校经典试题) 【分析】由于在段式存储管理中段是具有逻辑意义的完成程序段那么就可以通过直接调用逻辑程序段来实现代码共享而可共享代码的程序应该是纯代码在执行过程中是不会被修改的 【解答】分区式管理和页式管理时的进程地址空间结构都是线性的也就是说编译程序将代码和数据按照连续的地址进行排列回忆前面页式管理介绍的内容类似的虚地址是在执行时进行地址变换中才被转换成页号(页号页内偏移)的二维形式所以页式管理的虚拟空间是连续的一维的 由于现代操作系统都是多道程序系统多个进程可能需要共享代码或数据在程序设计中这种共享往往是通过给出代码段(子程序)的名字的方式进行调用的在页式管理中虚拟地址是连续的映射到实际物理的页面是不连续的编译程序要能够预知代码段执行时实际存放的页面是不可能的同时考虑到同一页面中可能存放有多个子程序的代码因此通过页面号或页号来共享代码页式不可能的 因为上述代码共享困难的原因提出了段式存储管理段式管理的基本思想是把程序按内容或过程(函数)关系分成段每个段有自己的名字(编号)一个作业或进程的虚拟存储空间都对应于一个由段号(段号段内偏移)构成的二维地址编译程序在编译链接过程中就直接形成这样的二维地址形式段式管理以段为单位分配内存然后通过地址变换将段式虚拟地址转换成实际的内存物理地址和页式管理一样段式管理也采用只把那些经常访问的段驻留内存而把那些将来一段时间不被访问的段放入外存待需要时自动调入的方法实现虚拟存储器 段式管理把一个进程的虚拟地址空间设计成二维结构即段号(段号段内偏移)的形式前面己经谈到与页式管理编译程序产生一维连续地址不同段式管理系统中的编译程序编译形成多个段及段的名字或编号各个段号之间无顺序关系与页式管理页长度相同不一样段的长度是不同的每个段定义一组逻辑上完整的程序或数据例如在DOS操作系统中一个程序内部被分为了正文段数据段堆栈段等每个段是一个首地址为O并连续的一维线性空间 【例】解释请求页式内存管理与纯页式内存管理的主要区别(北方名校经典试题) 【分析】请求页式内存管理和纯页式内存管理主要区别在于前者允许作业分批调入那就实际上提供了虚拟存储功能而纯页式内存管理没有请求调页机制就必须将作业全部调入也不支持虚拟存储的功能 【解答】在简单分页系统中要求运行的作业必须全部装入内存也就是说简单分页不提供虚拟存储功能 请求分页与简单分页的根本区别是请求分页提供虚拟存储功能即运行的作业不必全部装入内存只装入需要的页面通过多次对换的方式进行页面的换入和换出需要指出的是这些功能都是系统自动完成的无须用户干预 【例】解释请求页式内存管理先进先出算法及最近最少使用算法的主要区别〔北方名校经典试题) 【分析】请求页式内存管理中先进先出算法和最近最少使用算法最大的区别在于前者并不能反映进程实际运行的规律 【解答】FIFO是最早出现的置换算法该算法总是淘汰最先进入内存的页面即选择在内存中驻留时间最久的页面予以淘汰该算法实现简单只需把一个进程已调入内存的页面按先后次序链接成一个队列并设置一个指针称为替换指针使它总是指向最老页面但该算法与进程实际运行的规律不相适应因为在进程中有些页面经常被访问比如含有全局变量常用函数例程等的页面FIFO置换算法并不能保证这些页面不被淘汰 FIFO置换算法之所以性能较差是它所依据的条件是各个页面调入内存的时间而页面调入的先后并不能反映页面的使用情况而最近最久未使用(LRU)的页面置换算法则是根据页面调入内存后的使用情况由于无法预测各页面将来的使用情况只能利用最近的过去作为最近的将来的近似因此LRU置换算法是选择最近最久未使用的页面予以淘汰该算法赋予每个页面一个访问字段用来记录一个页面自上次被访问以来所经历的时间当需淘汰一个页面时选择现有页面中其中值最大的即最近最久未使用的页面予以淘汰 返回《操作系统考研辅导教程》 [] [] [] [] [] [] [] [] |