奥鹏易百

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

帮助中心知识拓展客服QQ 515224986
查看: 400|回复: 0

大工20秋《操作系统》辅导资料九

[复制链接]

1万

主题

3

回帖

2万

积分

论坛元老

积分
29086
发表于 2021-3-7 15:20:08 | 显示全部楼层 |阅读模式
扫码加微信
操作系统辅导资料九主    题:第八章的辅导资料
学习时间:2020年11月23日--11月29日 “不忘初心、牢记使命”主题理论学习:
“我们既要绿水青山,也要金山银山。宁要绿水青山,不要金山银山,而且绿水青山就是金山银山。”要按照绿色发展理念,树立大局观、长远观、整体观,坚持保护优先,坚持节约资源和保护环境的基本国策,把生态文明建设融入经济建设、政治建设、文化建设、社会建设各方面和全过程,建设美丽中国,努力开创社会主义生态文明新时代。
摘选自《习近平总书记系列重要讲话读本》内    容:第八章
这周我们将学习课件第八章(程序的链接和装入,分区式存储管理)。本章的学习要求及需要掌握的重点内容如下:
1.掌握分区式存储管理
2. 了解分页式存储管理
3. 了解分段式存储管理
4. 了解段页式存储管理
        5. 掌握虚拟存储管理
重点掌握内容:
1.重点:逻辑地址和物理地址,静态重定位和动态重定位,可变分区存储管理分配算法,虚拟存储技术,页面置换算法。
2.难点:可变分区存储管理分配算法,页面置换算法。程序的链接和装入
课前问题
1.什么是逻辑地址、物理地址?
2.程序的链接方式都有哪些?
3.什么是程序装入?
4.什么是静态重定位?
5.什么是动态重定位?1.源程序转变为可执行程序,首先由编译程序把源程序编译成若干个目标模块,在通过链接程序把所有目标模块和它们需要的库函数链接在一起,形成可装入模块。通过装入程序把可装入模块装入内存而运行。
/(1)逻辑地址
用户源程序经编译、链接后得到可装入程序。由于无法预知程序装入内存的具体位置,因此不可能在程序中直接使用内存地址,只能规定程序的起始地址为0,而程序中指令和数据的地址都是相对0起始地址进行计算。按照这种方法确定的地址称为逻辑地址或相对地址。一般情况下,目标模块(程序)和装入模块(程序)中的地址都是逻辑地址。
(2)逻辑地址空间
一个目标模块(程序)或装入模块(程序)的所有逻辑地址的集合,称为逻辑地址空间或相对地址空间。
(3)物理地址
内存中实际存储单元的地址称为物理地址。物理地址也称为绝对地址,内存地址等。当程序被装入内存后,要使程序能够运行,必须将代码和数据的逻辑地址转换为物理地址,这个转换操作称为“地址变换”。
/
(4)物理地址空间
内存中全部存储单元的物理地址集合称为物理地址空间、绝对地址空间或内存地址空间。由于每个内存单元都有唯一的内存地址编号,因而物理地址空间是一个一维的线性空间。为了使程序在装入后能够正常运行,互不干扰,必须将不同程序装入到不同的内存空间位置。
(5)虚拟地址空间和虚拟地址
CPU支持的地址范围一般远大于机器实际主存的大小,对多出来的那部分地址,程序仍然可以使用,程序能使用的整个地址范围称为虚拟地址空间(虚空间),该空间中的某个地址称为虚拟地址。在大多数系统中,物理地址空间只是虚拟地址空间的一个子集。2.源程序经过编译后所得到的目标模块,必须由链接程序将其链接成一个完整的可装入模块后,方能装入内存运行。链接程序在将几个目标模块装配成一个装入模块时,需要解决以下问题:
(1)修改模块的相对地址
(2)变换外部调用符号
/
针对链接时间的不同,存在3种链接的方式:
/3. 要使装入内存的程序能够运行,必须将程序中的逻辑地址转换为机器能直接寻址的物理地址,这种地址转换操作称为“地址映射”、“地址变换”或“重定位”。
静态装入
在程序运行之前一次性地将装入模块装入内存,且在装入过程中同时完成相对地址到绝对地址的变换工作。
运行时动态装入:
把装入模块装入内存后,并不立刻完成地址转换,而把地址转换工作推迟到程序真正执行时才进行。
静态装入时进行的地址变换称为静态地址变换或静态重定位,运行时动态装入涉及的地址变换称为动态地址变换或运行时动态重定位。4. 静态重定位(静态地址变换)
装入程序将装入模块装入到内存适当位置后,在程序运行前,一次性地将所有指令要访问的地址全部由相对地址转换为绝对地址,并在程序执行过程中不再改变。静态重定位不允许程序运行时在内存中移动位置,因为移动位置则意味着要对程序和数据的地址进行修改。
/
静态重定位的优缺点
优点:简单、容易实现
缺点:
(1)内存的利用率不高
程序装入内存后,若在运行期间不允许它在内存中移动,则无法实现内存重新分配。
(2)增加了程序员的负担
若内存提供的物理存储空间无法满足当前程序的存储容量,则必须由程序员在程序设计时采用某种方式来解决存储空间不足问题,。
(3)浪费了内存资源。
不利于用户共享存放在内存中的同一个程序,如果几个用户要使用同一个程序,就必须在各自的主存空间中存放该程序的副本。5. 动态重定位(动态地址变换)
动态重定位指将装入模块装入内存后,并不立即完成相对地址到绝对地址的转换,地址的变换工作直到程序运行时才进行。为了提高地址变换的速度,动态重定位要依靠硬件地址变换机构完成。
地址重定位机构需要一个(或多个)基地址寄存器BR和一个(或多个)程序逻辑地址寄存器VR。指令或数据在内存中的绝对地址与逻辑地址的关系为:
绝对地址=(BR)+(VR)(BR)与(VR)分别表示寄存器中的内容
动态重定位:装入程序将程序段装入内存,然后将程序段装入到的内存区首址送入BR中;在程序运行过程中,将所要访问的逻辑地址送入VR中;地址变换机构把BR和VR中的内容相加,得到实际访问的物理地址
/
动态重定位优点:
(1)提高了内存利用率
指令和数据的物理地址在程序运行时由硬件动态形成。将进程各程序段在内存区中的首址存放到基地址寄存器中,就能由地址变换机构得到正确的物理地址,可以为同一进程的不同程序段以非连续方式分配内存,
(2)构成了虚拟存储器的基础
地址转换工作在程序真正执行时才完成,在程序运行时,没有必要将它的所有模块都装入内存,可以在程序运行期间通过请求调入方式装入需要的模块。按照这种方式使用内存,可以使有限的内存运行更大或更多的程序,
(3)动态重定位有利于对程序段进行共享,多个进程可以共享位于内存区中的同一程序段
动态重定位缺点:
(1)需要有硬件支持;
(2)实现存储管理的软件在算法上比较复杂。分区式存储管理(一)
课前问题:
1.分区式存储管理可进一步划分为几部分?
2.单一连续分区存储管理的实现原理是什么?
3.什么是固定分区存储管理?
4.什么是覆盖与交换技术?1. 分区式存储管理对内存采用连续分配方式,即根据用户程序的需求为之在内存中分配一段连续的存储空间,它属于最简单的内存管理方式,主要应用20世纪60~70年代的OS中,至今仍在内存分配方式中占有一席之地。
分区式存储管理可以进一步划分:
/
单一连续分区存储管理
1.实现原理
该方式只适合单用户单任务操作系统,是一种最简单的存储管理方式。内存空间被分为系统区和用户区两部分。
/
单一连续分区的优缺点
优点:
(1)不需要硬件支持
(2)管理简单,开销小,装入内存的程序仅由分配程序参与管理;
(3)安全性高,除了系统区以外,用户区中只有一个程序,不存在多个程序相互影响问题
缺点:
(1)程序的地址空间受用户区地址空间的限制,这是因为程序在运行前必须一次性连续装入内存,若程序的地址空间比用户区大,则无法装入。
(2)由一个程序独占系统资源,会造成系统资源严重浪费。
(3)不支持多用户。 。
固定分区存储管理
实现原理
固定分区存储管理方式是最简单的一种可运行多道程序的存储管理方式。将内存用户空间划分成若干个固定大小的区域,每个区域称为一个分区,可以装入一个用户程序运行,分区一旦划分完成,便在系统整个运行期间保持不变。
/
在固定分区存储管理方式中,分区的数目和每个分区的大小一般由系统操作员或操作系统决定,分区划分一般采用以下两种方式:
(1)分区大小相等,即所有内存分区的大小相等。这种分配方式管理简单,但缺乏灵活性。
(2)分区大小不相等。为了克服分区大小相等时缺乏灵活性的缺点,可以把内存空间划分成若干个大小不等的分区,使得内存空间含有较多的小分区、适量的中分区、较少的大分区。装入程序可以根据用户程序的大小将它装入至适当的分区。
固定分区分配的优缺点
优点:简单易行、CPU的利用率较高。
缺点:程序大小受分区大小限制、存储空间存在浪费3. 为了提高内存资源的利用率,存储管理的一个重要功能是实现内存容量的扩充。在多道程序环境下,当程序的大小超过内存的空闲空间时,操作系统应采用相应技术,将暂时不需要的信息放在外存,当需要时再调入内存,实现在逻辑上对内存容量进行扩充。
覆盖技术和交换技术就是两种典型的在多道程序环境下扩充内存的技术,其中覆盖技术用在早期的操作系统中,而交换技术在现代操作系统中仍然占据重要的一席之地。
采用覆盖技术实现内存扩充时,最初应用程序的所有程序段都保存在外存,当程序的先头部分执行结束后,再把后续要执行的部分陆续调入内存去覆盖前面已执行结束的程序段,达到了逻辑上扩充内存的目的。
进程的程序正文段包括6个程序段,分别是A、B、C、D、E、F,它们之间的调用关系如图(a)所示;程序段A调用程序段B和C,程序段B调用程序段D和E,程序段C调用程序段F。通过调用关系可以知道,程序段B和C之间相互没有调用关系,它们不需要同时驻留在内存,可以共享同一覆盖区。同理,程序段D、E、F也可以共享同一覆盖区,其覆盖结构如图(b)所示。
/
程序的正文段被分为两个部分。一个是根程序,它与所有被调用的程序段有关,不允许被其它程序段覆盖。在图4-9(a)中,程序段A就是根程序,它要求常驻内存。除了根程序外,其余的所有程序段都属于可覆盖部分。在图4-9中存在两个覆盖区,一个由程序段B和C共享,另一个由程序段D、E、F共享。覆盖区的大小取决于共享程序段中最大程序段的大小,于是图4-9中覆盖区1和2的大小分别为40K 和30K。显然,在图4-9中,虽然进程所需要的内存总空间大小为:A(10K)+B(20K)+C(30K)+D(15K)+E(30K)+F(40K)=145K,但在运用覆盖技术后,实际所需的内存空间只有80K。
覆盖技术在某种意义上解决了用较小内存运行大进程的问题,但覆盖技术存在局限性,因此主要应用在早期的操作系统中。
交换技术
在多道程序环境下,内存中可以同时存在多个进程,这些进程中的一部分由于等待某些事件而处于阻塞状态,处于阻塞状态的进程仍然占据着内存空间;另一方面,在外存上可能有大量作业在等待,因内存不足而无法装入运行。显然,这是系统资源的一种严重浪费,且会使系统吞吐量下降。为了解决这个问题,可以在操作系统中增加交换(对换)功能,即由操作系统根据需要,将内存中暂时不具备执行条件的某部分程序或数据暂时移到外存,以便腾出足够的内存空间,再将外存中急需运行的程序或数据调入内存,使之投入运行。在操作系统中引入交换(对换)技术,可以显著提高内存资源的利用率,改善系统性能。
/分区式存储管理(二)
课前问题:
1.什么是可变分区存储管理?
2.可变分区存储管理的分配算法都有哪些?
3.什么是碎片?1. 实现原理
该方式在程序运行前并不建立分区,内存分区在程序运行时根据程序对内存空间的需要而动态建立,分区的划分时间、大小及位置都是动态的,因此这种管理方式又称为“动态分区分配”。
分区的大小完全按照装入进程的实际大小确定,且分区的数目可变,这种分配方式能够有效减少固定分区方式中出现的内存空间浪费,进一步提高内存资源的利用率。
在实现可变分区分配时,将涉及到分区分配中所用的数据结构、分区分配算法和分区的分配和回收。2. 分配算法
(1)最先适应算法(首次适应算法)
算法要求按内存中地址递增的次序排列空闲分区,每当一个程序申请装入内存时,管理程序从内存的低地址部分开始查找空闲分区,直到找到一个最先能满足程序要求的空闲分区,接着从该分区中将程序需要的那部分内存空间分配给它,而分区中剩下的部分仍保留在空闲区表中,不过要修改相应空闲分区的起始地址及长度。若未找到能满足程序要求的空闲分区,则此次分配操作失败。
该算法每次都从内存的低址部分开始查找满足要求的空闲分区,对低址部分的空闲分区不断地进行分配,而保留了高址部分的大空闲区,这就给未来大程序的分配预留了内存空间;但随着低址部分的分区不断被分配,在低地址区域,会留下很多零散的小空闲分区无法再利用。
(2)最佳适应算法
算法要求按空闲分区的长度从小到大组织空闲分区。当为用户程序分配内存空间时,从空闲分区表的第一个表项(第一个空闲分区)开始查找,找到的第一个其大小满足要求的空闲分区就是最佳空闲分区,该分区能满足程序的内存要求,并且在分配后分区中剩余的空闲空间最小。
注意:算法中的“最佳”仅仅是针对每一次分配而言,若从分配的整体看,由于该算法每次分配后所剩余的空闲部分总是最小,那么随着分配的不断进行,就会在内存中留下越来越多的小空闲分区无法再利用。
(3)最差适应算法
最差适应算法与最佳适应算法在分配时对空闲分区的选择恰好相反,该算法在分配时总是把内存中最大的空闲分区分配给请求装入的程序。要实现最差适应算法,空闲分区可以按照分区的长度从大到小组织。进行分配时,总是选择空闲分区表的第一个空闲分区进行分配,分配后把该空闲分区中剩余的部分重新插入到空闲区表中。
该算法在分配时总是选择内存中最大的空闲分区进行分配,所以分配后所剩余的部分也可能相对较大,有利于以后再装入其它程序;但随着分配进行,也有可能出现一个大程序因没有足够大的空闲分区而无法装入内存的情况。3. 在采用动态分区分配方式下,随着分配与回收的不断进行,内存中会出现很多离散分布且容量非常小的空闲小分区,虽然这些空闲小分区的总容量能满足程序对内存的要求,但由于一个程序需要装入一个连续的内存分区,而这些空闲小分区单个又不足以满足程序运行对内存的需求,于是这些小的空闲区就成为内存中无法再利用的资源,我们把它们称为内存碎片或零头。碎片的出现造成了内存空间资源的浪费。重要考点
一、名词解释汇总
1.逻辑地址:参见教材4.1.1“逻辑地址、物理地址和虚拟地址”。规定程序的起始地址为0,而程序中指令和数据的地址都是相对0起始地址进行计算。按照这种方法确定的地址称为逻辑地址。
2.逻辑地址空间:参见教材4.1.1“逻辑地址、物理地址和虚拟地址”一个目标模块(程序)或装入模块(程序)的所有逻辑地址的集合,称为逻辑地址空间。
3.物理地址:参见教材4.1.1“逻辑地址、物理地址和虚拟地址”。内存中实际存储单元的地址称为物理地址。
4.地址变换:参见教材4.1.1“逻辑地址、物理地址和虚拟地址”。将代码和数据的逻辑地址转换为物理地址,这个转换操作称为地址变换。
5.物理地址空间:参见教材4.1.1“逻辑地址、物理地址和虚拟地址”。内存中全部存储单元的物理地址集合称为物理地址空间。
6.虚拟地址空间:参见教材4.1.1“逻辑地址、物理地址和虚拟地址”。程序能使用的整个地址范围称为虚拟地址空间。
7.重定位:参见教材4.1.3“程序装入”。将程序中的逻辑地址转换为机器能直接寻址的物理地址,这种地址转换操作称为重定位。
8.静态重定位:参见教材4.1.3“程序装入”。静态装入时进行的地址变换。
9.动态重定位:参见教材4.1.3“程序装入”。运行时动态装入涉及的地址变换。
10.动态分区分配:参见教材4.2.3“可变分区存储管理”。该方式在程序运行前并不建立分区,内存分区在程序运行时根据程序对内存空间的需要而动态建立,分区的划分时间、大小及位置都是动态的。二、简答题
1.某系统采用动态分区管理技术,某时刻内存有8个空闲区(编号是空闲1区到8区),按地址从低到高排列的空闲空间长度是:10KB、4KB、20KB、18KB、7KB、9KB、12KB、15KB。对于下列顺序的段请求:(1)12 KB、(2)10KB、(3)15KB、(4)18KB、(5)12KB使用最先适应法的存储分配算法,请回答每个段使用的哪个空闲区,如果没有分配上空闲区,则标示出分配失败。
答:
(1)12KB(3区)
(2)10KB(1区)
(3)15KB(4区)
(4)18KB(失败)
(5)12KB(7区)本内容由易百教育整理发布
网址www.openhelp100.com
QQ 515224986
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|www.openhelp100.com ( 冀ICP备19026749号-1 )

GMT+8, 2024-7-1 22:00

Powered by openhelp100 X3.5

Copyright © 2001-2024 5u.studio.

快速回复 返回顶部 返回列表