欢迎来到天天文库
浏览记录
ID:50145510
大小:2.00 MB
页数:176页
时间:2020-03-09
《操作系统教程——Linux实例分析 教学课件 作者 孟庆昌 第1-8章第4章 存储器管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章存储器管理4.1引言4.2基本的内存管理技术4.3对换技术4.4分页技术4.5分段技术4.6虚拟存储器4.7请求分页技术4.8页面置换算法4.9内存块分配算法和抖动问题4.10段式虚拟存储器4.11段页式结合系统4.12Linux系统的存储管理习题4.1引言内存(MainMemory或PrimaryMemory或RealMemory)也称主存,是指CPU能直接存取指令和数据的存储器。磁盘、磁鼓和磁带等存储器,一般称为外存或辅存(SecondaryStorage)。内存是现代计算机系统进行操作的中心,如图4-1所示,CPU和I/O系统都要和内存打交道。图4-1内存在计算机系统中
2、的地位4.1.1用户程序的主要处理阶段我们用高级语言编程解决某个特定的任务时,通常先对它进行数学抽象,确定相应的数据结构和算法,然后用高级程序设计语言(如PASCAL、C语言等)或者汇编语言进行程序设计。这种用高级语言或汇编语言编写的程序就称为源程序。从用户的源程序进入系统到相应程序在机器上运行,要经历一系列步骤,主要处理阶段有:编辑、编译、连接、装入和运行。如图4-2所示。图4-2用户程序的主要处理阶段1.编辑阶段用户键入编辑命令,如vi,进入编辑方式。在编辑方式下用户将所编写的源程序输入到机器内,存放在相应的文件(如filel.c)中。这种存放源程序的文件叫做源文件。2.编译阶
3、段源程序并不能直接在机器上运行,因为CPU不能识别源程序,它仅仅认识由规定范围内的一系列二进制代码所组成的指令和数据,并按预定含义执行一系列动作。3.连接阶段用户程序可以分别进行编译,从而得到不同的目标模块。而且用户程序中往往要调用系统库程序和应用程序,这些程序是预先就编译好的。这些目标代码不能简单地合并在一起,因为各自分配的内存地址可能有冲突,并且调用者还不知道被调用模块放在什么地方,仅知道它的符号名称。4.装入阶段程序必须装到内存才能运行。这就需要装入程序根据内存的使用情况和分配策略,将上述装入模块放入分到的内存区中。5.运行阶段为了运行装入内存中的程序,需要键入运行命令。在U
4、NIX/Linux环境中,可直接键入可执行文件的名称。此时,终端进程创建一个子进程。当这个进程被调度程序选中后,CPU就去执行该进程的可执行代码。就是说,该用户程序被执行了。4.1.2重定位由于内存地址是从统一的一个基址0开始按序编号的,就像是一个大数组那样,因此,内存空间是一维的线性空间。用户程序和数据装入内存时,需要进行重定位。例如,图4-3表示程序A装入内存前后的情况。在地址空间100号单元处有一条指令“LOAD1,500”,它实现把500号单元中的数据12345装到寄存器1中去。图4-3程序装入内存时的情况1.静态重定位静态重定位是在目标程序装入内存时,由装入程序对目标程序
5、中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的内存地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。按照静态重定位方式,图4-3所示的程序A装入内存时的情况就变成如图4-4所示的样子。图4-4静态重定位示意图它的主要缺点是:(1)程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动。这不利于内存空间的有效使用。(2)各个用户进程很难共享内存中的同一程序的副本。2.动态重定位动态重定位是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空
6、间中的起始地址,而地址空间中的代码在装入过程中不发生变化。动态重定位的过程如图4-5所示。图4-5动态重定位示意图如果用(BR)表示重定位寄存器中的内容,用addr表示操作对象的相对地址,则操作对象的绝对地址就是(BR)+addr的值。动态重定位的主要优点是:(1)程序占用的内存空间动态可变,不必连续存放在一处。(2)比较容易实现几个进程对同一程序副本的共享使用。4.2基本的内存管理技术内存的一部分是固定分配给操作系统的,可以位于内存最低端的RAM(随机存取存储器)中,如图4-6(a)所示;也可位于内存最高端的ROM(只读存储器)中,如图4-6(b)所示;还可以让设备驱动程序位于内
7、存高端的ROM中,而让操作系统的其他部分位于低端的RAM中,如图4-6(c)中所示。图4-6单一连续分配4.2.2分区法分区分配是为支持多道程序开发、运行的一种最简单的存储管理方式。在这种方式下,要把内存划分成若干分区,每个分区里容纳一个作业。按照分区的划分方式,可归纳为两种常见的分配方法:固定分区法和可变分区法。图4-7固定分区1.固定分区法“固定”包含两个意思:一个是内存中分区的个数固定,不能随机变动;另一个是各分区的大小固定。当然各个分区的大小可以不同。但是,一
此文档下载收益归作者所有