操作系统第四章.ppt
- 文档编号:2679909
- 上传时间:2022-11-07
- 格式:PPT
- 页数:29
- 大小:742KB
操作系统第四章.ppt
《操作系统第四章.ppt》由会员分享,可在线阅读,更多相关《操作系统第四章.ppt(29页珍藏版)》请在冰豆网上搜索。
第第44章章存储器管理存储器管理目标目标:
方便用户使用、提高内存的利用率以及从逻辑上扩充存储空间。
方便用户使用、提高内存的利用率以及从逻辑上扩充存储空间。
存储管理机构必须解决以下问题存储管理机构必须解决以下问题l内存分配:
内存分配:
为每道程序分配内存空间,分配时要尽量提高内存的利用率为每道程序分配内存空间,分配时要尽量提高内存的利用率l内存保护内存保护:
保证进程间互不干扰、相互保密:
保证进程间互不干扰、相互保密l地址映射(变换)地址映射(变换):
进程逻辑地址到内存物理地址的映射:
进程逻辑地址到内存物理地址的映射l内存扩充(覆盖、交换和虚拟存储)内存扩充(覆盖、交换和虚拟存储):
提高内存利用率、扩大进程的内:
提高内存利用率、扩大进程的内存空间存空间内存管理使用的技术内存管理使用的技术+分区式管理:
固定式、可变式分区分区式管理:
固定式、可变式分区+页式管理页式管理+段式管理段式管理+段页式管理段页式管理第第44章章存储器管理存储器管理程序的装入和链接程序的装入和链接连续分配方式(连续分配方式(单一连续分配、固定分区分配、动态分区单一连续分配、固定分区分配、动态分区分配、可重定位分配方式、分配、可重定位分配方式、覆盖和覆盖和对换对换)分页式存储管理方式分页式存储管理方式基本分页式存储管理(实存)基本分页式存储管理(实存)请求分页式存储管理(虚存)请求分页式存储管理(虚存)分段(包含段页式)存储管理分段(包含段页式)存储管理基本分段式存储管理(实存)基本分段式存储管理(实存)请求分段式存储管理(虚存)请求分段式存储管理(虚存)UNIXUNIX内存管理内存管理一、程序的装入和链接一、程序的装入和链接用户程序的处理步骤用户程序的处理步骤程序的装入和链接程序的装入和链接l程序的装入程序的装入+绝对装入方式绝对装入方式+可重定位装入方式可重定位装入方式+动态运行时装入方式动态运行时装入方式l程序的链接程序的链接+静态链接静态链接+装入时动态链接装入时动态链接+运行时动态链接运行时动态链接逻辑地址、物理地址和地址映射逻辑地址、物理地址和地址映射l逻辑地址逻辑地址(相对地址,虚地址):
用户的程序经过汇编或编译后形成(相对地址,虚地址):
用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式。
目标代码,目标代码通常采用相对地址的形式。
+其首地址为其首地址为0,其余指令中的地址都相对于首地址来编址,称为相,其余指令中的地址都相对于首地址来编址,称为相对地址。
而相对地址的集合称作对地址。
而相对地址的集合称作相对地址空间相对地址空间或简称或简称地址空间。
地址空间。
+不能用逻辑地址在内存中读取信息。
不能用逻辑地址在内存中读取信息。
l物理地址物理地址(绝对地址,实地址):
内存中存储单元的地址。
物理地址(绝对地址,实地址):
内存中存储单元的地址。
物理地址可直接寻址。
而内存单元的集合称作可直接寻址。
而内存单元的集合称作存储空间存储空间或或绝对地址空间绝对地址空间。
l地址映射地址映射(重定位重定位):
将用户程序中的逻辑地址转换为运行时由机器):
将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址。
直接寻址的物理地址。
+当程序装入内存时当程序装入内存时,操作系统要为该程序分配一个合适的内存空间,操作系统要为该程序分配一个合适的内存空间,由于由于程序的逻辑地址与分配到内存物理地址不一致程序的逻辑地址与分配到内存物理地址不一致,而而CPU执行指执行指令时,是按物理地址进行的,所以要进行地址转换。
令时,是按物理地址进行的,所以要进行地址转换。
逻辑地址、物理地址和地址映射绝对装入方式如果在编译时,事先能够知道程序将驻留在内存的如果在编译时,事先能够知道程序将驻留在内存的什么位置,则编译程序可直接将程序的符号地址转换成绝什么位置,则编译程序可直接将程序的符号地址转换成绝对地址,产生使用绝对地址的目标模块,进而链接成使用对地址,产生使用绝对地址的目标模块,进而链接成使用绝对地址的装入模块。
这样,装入程序便可按装入模块中绝对地址的装入模块。
这样,装入程序便可按装入模块中的地址将程序和数据装入内存,而不需对模块中的地址部的地址将程序和数据装入内存,而不需对模块中的地址部分进程修改。
分进程修改。
优点优点:
装入过程简单。
:
装入过程简单。
缺点缺点:
不适于多道程序系统。
:
不适于多道程序系统。
可重定位装入方式静态重定位静态重定位:
当用户程序装入内存时,由装入程序一:
当用户程序装入内存时,由装入程序一次性完成逻辑地址到物理地址的转换,以后不再转换。
次性完成逻辑地址到物理地址的转换,以后不再转换。
而相应的装入方式则称作而相应的装入方式则称作可重定位装入方式可重定位装入方式。
优点优点:
不需硬件支持,可以装入有限多道程序。
:
不需硬件支持,可以装入有限多道程序。
缺点缺点:
一个程序通常需要占用连续的内存空间,程序:
一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。
装入内存后不能移动。
静态重定位示意图静态重定位示意图:
LOAD1,300:
5678:
01003004001000110013001400:
LOAD1,1300:
5678:
某程序的地址空间某程序的地址空间内存内存动态运行时装入方式动态运行时装入方式动态重定位动态重定位:
重定位不是在装入时进行,而是必须将它推迟到:
重定位不是在装入时进行,而是必须将它推迟到程序真正执行时进行。
为了不影响指令的执行速度,在程序真正执行时进行。
为了不影响指令的执行速度,在系统中系统中增设一个重定位寄存器,用它来存放程序(数据)在内存中的增设一个重定位寄存器,用它来存放程序(数据)在内存中的起始地址。
程序执行时,真正访问的内存地址是相对地址与重起始地址。
程序执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而成的。
定位寄存器中的地址相加而成的。
(它是虚拟存储的基础它是虚拟存储的基础)采用动态重定位的装入方式被称为采用动态重定位的装入方式被称为动态运行时装入方式动态运行时装入方式。
优点优点:
允许运行中的进程在内存中移动,比如进行对换或紧凑:
允许运行中的进程在内存中移动,比如进行对换或紧凑后。
后。
缺点缺点:
需要硬件支持。
:
需要硬件支持。
动态重定位示意图动态重定位示意图1000110013001400LOAD1,3005678内存内存物理地址空间物理地址空间0100300400LOAD1,3005678某程序的逻辑地址空间某程序的逻辑地址空间1000+程序的链接链接是将编译后得到的各个目标模块以及所需的库函数连接在一起,形成一个完整的装入模块。
链接程序必须将个目标模块中的相对地址和外部调用符号转换成装入模块中的相对地址。
根据链接时间的不同,将链接分成三种方式。
+静态链接静态链接+装入时动态链接装入时动态链接+运行时动态链接运行时动态链接动态链接动态链接静态链接静态链接静态链接:
在程序运行之前,将各目标模块及它们所需的库:
在程序运行之前,将各目标模块及它们所需的库函数,连接成一个完整的装入模块。
函数,连接成一个完整的装入模块。
装入时动态链接装入时动态链接是指链接在装入时进行,即在装入一个目标装入时动态链接是指链接在装入时进行,即在装入一个目标时,若发生一个外部模块的调用事件,则由装入程序去找出相应时,若发生一个外部模块的调用事件,则由装入程序去找出相应的外部模块,将它装入内存,并把它链接到调用者模块上。
的外部模块,将它装入内存,并把它链接到调用者模块上。
在在装入或运行装入或运行时进行链接。
通常被链接的共享代码称为动态时进行链接。
通常被链接的共享代码称为动态链接库链接库(DLL,Dynamic-LinkLibrary)或共享库或共享库(sharedlibrary)。
例如:
使用一个外部声明子句,使例如:
使用一个外部声明子句,使DLLs在应用程序开始执行在应用程序开始执行前即被装入。
前即被装入。
procedure/function过程过程/函数名;函数名;externalDLL模块名;模块名;运行时动态链接运行时动态链接是指链接在运行时进行,即在执行过程中,运行时动态链接是指链接在运行时进行,即在执行过程中,当发现一个被调用模块还没有装入内存时,立即由当发现一个被调用模块还没有装入内存时,立即由os找出该模块,找出该模块,将它装入内存,并把它链接到调用者模块上。
将它装入内存,并把它链接到调用者模块上。
在在windows程序中,程序员使用程序中,程序员使用LoadLibrary把把DLL装入内装入内存并且映射存并且映射DLL到调用进程的虚拟地址空间(如果已经作了映射,到调用进程的虚拟地址空间(如果已经作了映射,则增加则增加DLL的引用计数)。
然后,使用的引用计数)。
然后,使用GetProcessAddress得得到到DLL中输出函数的地址,并调用它。
最后,使用中输出函数的地址,并调用它。
最后,使用FreeLibrary减少减少DLL的引用计数,当引用计数为的引用计数,当引用计数为0时,把时,把DLL模块从当前进模块从当前进程的虚拟空间移走。
程的虚拟空间移走。
(一个小例子一个小例子)运行时动态链接优点优点+共享共享:
多个进程可以共用一个:
多个进程可以共用一个DLL,节省内存,减少文件交换。
,节省内存,减少文件交换。
+便于局部代码修改便于局部代码修改:
即便于代码升级和代码重用;只要函数的接口:
即便于代码升级和代码重用;只要函数的接口参数(输入和输出)不变,则修改函数及其参数(输入和输出)不变,则修改函数及其DLL,无需对可执行文,无需对可执行文件重新编译或链接。
件重新编译或链接。
+便于运行环境适应便于运行环境适应:
调用不同的:
调用不同的DLL,就可以适应多种使用环境和,就可以适应多种使用环境和提供不同功能。
如:
不同的显示卡只需厂商为其提供特定的提供不同功能。
如:
不同的显示卡只需厂商为其提供特定的DLL,而而OS和应用程序不必修改。
和应用程序不必修改。
+部分装入部分装入:
一个进程可以将多种操作分散在不同的:
一个进程可以将多种操作分散在不同的DLL中实现,而中实现,而只将当前操作相应的只将当前操作相应的DLL装入内存。
装入内存。
l缺点:
缺点:
+链接开销链接开销:
增加了程序执行时的链接开销;:
增加了程序执行时的链接开销;+管理开销管理开销:
程序由多个文件组成,增加管理复杂度。
:
程序由多个文件组成,增加管理复杂度。
二、连续分配方式二、连续分配方式l单一连续分配方式单一连续分配方式:
这是最简单的一种存储管理方式,但只能用于单这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。
采用这种存储管理方式用户、单任务的操作系统中。
采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅时,可把内存分为系统区和用户区两部分,系统区仅提供给提供给OS使用,通常是放在内存的低址部分;用户使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间,区是指除系统区以外的全部内存空间,提供给用户提供给用户使用。
使用。
固定分区分配固定分区分配第第4分区分区(未分配)(未分配)分区号分区号大小大小起始地址起始地址标志标志123420K36K68K132K16K32K64K124K已分配已分配已分配已分配已分配已分配未分配未分配操作系统操作系统作业作业A作业作业C作业作业B020K36K68K132K第第1分区分区第第2分区分区第第3分区分区(b)内存分配图内存分配图(a)分区说明表分区说明表划分分区的方法:
(划分分区的方法:
(1)分区大小相等;)分区大小相等;
(2)分区大小不等。
分区大小不等。
动态分区分配动态分区分配序号序号F大小大小起址起址状态状态132K60K空闲空闲2300K212K空闲空闲3空表目空表目4空表目空表目5空表目空表目空闲分区表空闲分区表为了实现动态分区,必须配置相应的数据结构,用来描述空闲分为了实现动态分区,必须配置相应的数据结构,用来描述空闲分区和已分配分区的情况。
常用的数据结构有以下两种形式:
顺序表形区和已分配分区的情况。
常用的数据结构有以下两种形式:
顺序表形式和链表形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 第四