第四章-操作系统


1.基本概念

1.1 操作系统

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境它是计算机系统中最基本的系统软件。

1.2 操作系统的功能和目标

①作为系统资源的管理者。

②向上层(如用户)提供方便易用的服务。

③作为最接近硬件的层次。

请添加图片描述

1.3 操作系统的特征

最基本的特征互为存在条件:并发,共享

(1)并行:指两个或多个事件可以在同一个时刻发生,多核CPU可以实现并行,一个cpu同一时刻只有一个程序在运行;

(2)并发:指两个或多个事件可以在同一个时间间隔发生,用户看起来是每个程序都在运行,实际上是每个程序都交替执行

(3)共享性:操作系统的中资源可供多个并发的程序共同使用,这种形式称之为资源共享。

互斥共享:当资源被程序占用时,其它想使用的程序只能等待。
同时访问:某种资源并发的被多个程序访问。

虚拟和异步特性前提是具有并发性

(4)虚拟性:表现为把一个物理实体转变为若干个逻辑实体。

时分复用技术:资源在时间上进行复用,不同程序并发使用,多道程序分时使用计算机的硬件资源,提高资源的利用率。
空分复用技术:用来实现虚拟磁盘(物理磁盘虚拟为逻辑磁盘,电脑上的C盘、D盘等)、虚拟内存(在逻辑上扩大程序的存储容量)等,提高资源的利用率,提高编程效率。
(5)异步性:在多道程序环境下,允许多个进程并发执行,但由于资源等因素的限制,使进程的执行以“停停走走”的方式运行,而且每个进程执行的情况(运行、暂停、速度、完成)也是未知的。

1.4 操作系统的发展和分类

请添加图片描述


2.进程管理

2.1 进程的定义

为了能使程序并发执行,并且可以对并发执行的程序加以控制和描述,人们引入了“进程”的概念。

2.2 进程与程序的区别

进程实际上就是程序的一次执行。

①进程是动态的,程序是静态的。

②进程具有生命周期,程序是永久存在的。

③进程是由程序段、相关数据段和进程控制块(PCB)组成,程序是指令的有序集合。

用来描述和控制进程的运行的一个数据结构——进程控制块PCB(Process Control Block),是进程实体的一部分,是操作系统中最重要的记录型数据结构。
PCB是进程存在的唯一标志。系统能且只能通过PCB对进程进行控制和调度。
PCB记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。

2.3 进程的状态

创建态:进程正在被创建,为进程初始化资源、初始化PCB。

就绪态:进程获得了除处理机外的一切资源,一旦获得处理机(CPU使用权),便可立即运行。

运行态:进程正在处理机上运行。

阻塞态:进程正在等待某一事件而暂停运行。如等待除处理机外的某一资源或等待输入/输出完成。

终止态:进程正从系统中消失,可能是进程正常结束或其他原因中断退出运行,还要收回该进程的PCB。

请添加图片描述

2.4 前趋图

请添加图片描述

ABC都执行完,才能执行D,最后才能执行E

2.5 进程的同步与互斥

同步机制,其反义是异步

请添加图片描述

请添加图片描述

互斥机制,其反义是共享

请添加图片描述

请添加图片描述

请添加图片描述

2.6 PV操作

请添加图片描述

请添加图片描述
请添加图片描述

2.7 PV操作练习题

请添加图片描述

我们来看上面这道题,购书者和收银员两个进程,设置了三个信号量:S1、S2、Sn(初值分别为0、0、n),可以假设有两种情况:①先执行购书者进程,后执行收银员进程(此情况符合大家日常去书店买书的情形),②先执行收银员进程,后执行购书者进程(此情况不太符合常理,如果没有人来书店买书,那收银员去为谁结账呢???),所以我们只能采取第一种情况:先执行购书者进程、后执行收银员进程。

首先P(Sn):Sn=Sn-1,表示有一个购书者进入书店,此时书店最多允许进入的购书者人数就应该减少1;之后购书者可以进行购书,后面进入付款步骤(联系到a1和a2),此时我们想,在购书者没有选择购书付款之前,收银员应该是被阻塞的(通俗的讲:就是坐在那里喝茶,闲着没事干),所以在b1这里需要一个P操作来阻塞它,只有当购书者付款步骤中的a1来到收银员面前结账时,收银员才有事情可做,即a1这里应该是与b1(收银员为购书者结账)相对应的V操作,所以a1:V(S1)、b1:P(S1)。即购书者买书付款→收银员进行结账,购书者不买书或者没有购书者→收银员没事干(阻塞)。

下面我们这样考虑,因为购书者此时在收银员这里等待付款,并不是说购书者直接扔几张100的红票子直接就走人了,而是需要等待收银员把购书者所买书籍一一扫码消磁、计算出总价之后,再由购书者付款,所以在这期间,购书者是在等待(即购书者处于阻塞状态),也就是说a2这里需要一个P操作来阻塞购书者,而b2需要一个V操作与a2相对应,所以a2:P(S2)、b2:V(S2)。即收银员将总价计算好→购书者进行付款,收银员结账过程中→购书者等待(阻塞)。

综上所述,第一空选A,第二空选C!!!

请添加图片描述

这类题比较简单,有一个规律就是一个进程→另一个进程,就是先V后P,按照信号量变化的顺序对应好就可以了!!!

对照上面两张图,可以得出答案:C、A、A(这里我就不再详细讲解了。。。)

2.8 死锁问题

2.8.1 什么是死锁?

死锁是指多个进程在运行过程中,因争夺资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。

2.8.2 产生死锁的原因

①竞争资源。②进程间推进顺序非法。

2.8.3 产生死锁的4个条件

必须同时满足以下4个条件,死锁才成立。

①互斥条件: 只有对必须互斥使用的资源的争抢才会导导致死锁。

②请求和保持条件:进程已经保持了至少一个资源,但又提出新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对已有的资源保持不放。

③不剥夺条件: 进程获得的资源在未使用完前,不能由其他进程强行夺走,只能主动释放。

④循环等待条件: 存在一种进程资源的循环等待链,链中的每一个进程已获得资源的同时,被下一个进程请求。

2.8.4 处理死锁的4种方法

①预防死锁: 至少破坏4个必要条件中的一个。

②避免死锁: 用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)。

③检测死锁、④解除死锁: 允许死锁的发生,不过操作系统会负责检测出死锁,然后采取某种措施解除。

2.8.5 死锁例题

请添加图片描述
B 4*3+1=13

我们来看上面这道例题,一共3个进程,每个进程都需要5个系统资源。

①如果系统中有5个资源,A分配2个,B分配2个,C分配2个,此时所有进程不能得到满足,都在等待资源,无法正常运行,即发生死锁;如果将A分配5个,运行完再分配给B,B运行完再分配给C,这样并不会发生死锁。但是,这类题我们考虑的是无论怎样都不会发生死锁的情况,所以要考虑它的一般性!!!

②如果系统中有10个资源,A分配4个,B分配4个,C分配2个,显然每个进程都无法获得5个资源去运行,即发生死锁;11、12个资源也是同样的道理;而当系统中有13个资源的时候,我们可以看到A分配4个,B分配4个,C分配4个,此时还剩下1个空闲资源,无论我们将这1个空闲资源分配给哪个进程,系统都是可以正常运行的,因为一个进程再获得1个资源即得到满足,运行完释放资源,另外两个进程也可以正常运行,即不会发生死锁!!!所以系统至少需要13个资源,选B。

公式:假设有k个进程,每个进程都需要n个资源才可以正常运行,则系统不发生死锁的资源数至少为:k ×(n-1)+1。

2.8.6 银行家算法

安全序列:就指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。

如果分配了资源后,系统中找不到任何一个安全序列,系统就进入了不安全状态。这就意味着之后,可能所有进程都无法顺利的执行下去。

如果系统处于安全状态,就一定不会发生死锁。如果系统进入不安全状态,不安全状态未必是发生了死锁,但发生死锁时,一定是在不安全状态。

因此可以在资源分配前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。这也是银行家算法的核心思想

请添加图片描述
请添加图片描述

B

对于银行家算法这类问题,其实并不是太难。上面这道题,首先我们需要计算的就是当前系统中还有多少可用的资源,因为三类资源的总数分别为9、8、5,而已经分配给5个进程的三类资源数为:7、7、5,所以此时这三类资源还剩2、1、0。 下面的做法其实就是将当前可用的资源数分配给5个进程中的一个,看能否达到它的最大需求量, 如果不能,则选择其他进程;如果能,就加上该进程已分配的资源数,运行完释放,此时资源数=已分配给该进程的资源数+当前系统中剩余的资源数。 后面是同样的道理,继续分配给其他的进程,能满足最大需求量就分配,直到所有进程都可以顺序运行,就可以找到这样一条安全序列来保证系统不发生死锁。

而下面这种情况,当运行完P2进程,将可用资源数分配给P1进程时,无法达到P1的最大需求量,所以系统无法继续运行下去,就会发生死锁,这就是一个不安全序列!!!


3.存储管理

请添加图片描述
请添加图片描述

3.1 动态分区分配

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

首次适应算法:空闲分区以地址递增的次序链接。 对于上面这个题,作业4申请内存9k,按照地址递增的情况,此时作业4会被分配到25k的空闲分区,占用9k,剩余25-9=16k。

循环首次适应算法:与首次适应算法的区别是:不是每次都从链首开始查找,而是从上一次找到的空闲分区的下一个空闲分区开始查找。 所以作业4申请9k,而作业2和作业3所在的空闲分区的下一个空闲分区为28k,即作业4被分配到了28k这个空闲分区,占用9k,剩余28-9=19k。

最佳适应算法:空闲分区按其容量从小到大的顺序链接。 作业4申请9k,而当前空闲分区的容量从小到大依次为:10k、25k、28k,所以作业4被分配到10k这个空闲分区,占用9k,剩余10-9=1k。

最差适应算法:空闲分区按其容量从大到小的顺序链接(与最佳适应算法相反)。 作业4被分配到容量最大的空闲分区28k中,占用9k,剩余28-9=19k。

3.2 存储方式

3.2.1 页式存储

请添加图片描述

分页存储管理原理
①分页存储管理是将一个进程的地址空间划分成若干个大小相等的片,称为页面或页,相应地,将内存空间划分成与页相同大小的若干个块,称为 (物理)块或页框
②分页存储管理解决了“碎片”问题,提高了存储器的利用率。
③纯分页存储管理是指一个进程的所有页全部装入内存的物理块中才能运行。
④分页系统的地址结构由两部分组成:前一部分为页号P;后一部分为页内位移量W,即页内地址
页表
①将进程的每一页离散地分配到内存的各个物理块中后,为了保证进程的正确运行,能在内存中找到该进程每个页面所对应的物理块,系统需为每页配一个重定位寄存器,由于重定位寄存器是硬件,在页面数很多时实现困难。
②为此,系统在内存为每个进程建立了一张页面映射表,简称页表,每个页在页表中占一个表项,记录该页在内存中对应的物理块号(页号可以省略)

请添加图片描述

我们来看上面这道例题,首先页面大小为4K=2^12,表示页内地址为12位,所以在对逻辑地址变换的时候,就要保留它的低12位作为物理地址,因为逻辑地址是16进制数5A29H,它的低12为是A29,那么只需要对前面的页号进行变换就可以了,由页表可知,页号5对应的物理块号(页帧号)为6,所以经变换后的物理地址为:6A29H。

第二空,进程P要访问的页面4不在内存,应该淘汰哪个页面?这里我们考虑的是:只能淘汰在内存中的页面,因为如果一个页面压根就不在内存,那你是无法淘汰它的(换句话说,你淘汰它有何意义呢?),所以我们看到状态位是1表示在内存(有页面0、1、2、5),而对于淘汰而言,我们不能淘汰刚刚被访问过的页面,只能淘汰没有被访问过的页面(即访问位为0),查表得,页面1的访问位为0,所以将其淘汰。即第一空选D,第二空选B。

3.2.2 段式存储

分段存储方式的引入
从固定分区到可变分区,进而又发展到分页系统的目的都是为了提高内存的利用率,然而分段存储管理的引入,是为了满足用户需要。
分页存储管理时的进程地址空间结构都是线性的,这要求对各段源程序编译成目标程序后还要静态链接。
案例:把四个源程序段编译后的目标程序段:主程序段main(15KB)、子程序段X(5KB)、数据段D(6KB)、堆栈段S(7KB)按线性空间的一维地址顺序排列起来,再分成8页,每页为4KB。如图:

请添加图片描述

这时,一个页面中可能装有两个不同子程序段的指令代码

分段系统基本原理

  • 在分段存储管理方式中,作业的地址空间按逻辑信息完整性被划分为若干个段,每个段都有自己的名字,编译后都是从零开始编成的一段连续的地址空间,段的长度由相应逻辑信息组的长度决定,因而各段长度是不等的。
  • 逻辑地址由段号和段内地址两部分组成

段表

  • 类似分页式存储管理,在分段式存储管理系统中为每个进程建立一张段映射表,简称为“段表”。每个段在表中占有一表项,在其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度。
  • 为实现从逻辑地址到物理地址的变换功能,系统中设置了段表寄存器,用于存放段表始址和段表长度。
  • 在进行地址变换时,系统会将逻辑地址截成段号S与段内地址d

共享

  • 段是信息的逻辑单位,因此分段系统的一个突出的优点是易于实现段的共享。(即允许若干个进程共享一个或多个段)
  • 在实现段共享时,需要用到可重入代码又称为 “纯代码” 。它是一种允许多个进程同时访问的代码,是一种不允许任何进程对其进行修改的代码。

请添加图片描述

分页和分段的主要区别

分页分段
目的为了提高内存利用率为了更好的满足用户的需要
单位划分页是信息的物理单位,页的大小是固定的,而且由系统确定段是信息的逻辑单位,它含有一组意义相对完整的信息。段的长度是不固定的,由用户确定。
内存分配以页为单位离散分配,无外碎片,所以也无紧缩问题以段为单位离散分配,类同可变分区,会产生许多分散的小自由分区——外碎片,造成主存利用率低,需采用紧缩解决碎片问题,但紧缩需花费时间。
共享和保护在同一页面包含共享的程序和私用的数据,使共享和保护存取访问控制困难便于共享,段逻辑上完整信息共享是有价值的,提高主存利用率;便于控制存取访问,段是逻辑上完整信息可根据各段信息决定存取访问权
动态链接不能动态链接提供动态链接的便利,运行中不用的模块可以不连接调入,节省内存空间。
3.2.3 段页式存储

先分段,段内再分页

请添加图片描述

3.3 页面置换算法

请添加图片描述

考试一般考前3个算法

3.3.1 先进先出算法

选择先进入内存的页面予以淘汰。

请添加图片描述

3.3.2 最佳置换算法

选择永远不再需要的页面或者最长时间内不再使用的页面予以淘汰。

请添加图片描述

分析:向后(右)看,哪个没有或最晚访问,就淘汰对应的一个。

3.3.3 最近最久未使用算法

选择最近一段时间中最长时间没有被访问过的页面予以淘汰。

请添加图片描述

分析:往前(左)看,哪一个最久没有使用,就淘汰对应一个。


4.文件管理

4.1 文件目录

请添加图片描述
请添加图片描述

4.2 文件目录结构

请添加图片描述

重点掌握相对路径和绝对路径的表示方法!!!

4.2 索引分配

请添加图片描述
请添加图片描述
请添加图片描述

这道题中,物理块号50对应逻辑块号0,物理块号67对应逻辑块号1,物理块号68对应逻辑块号2,物理块号78对应逻辑块号3,物理块号89对应逻辑块号4,这五个采取的是直接地址索引;而物理块号90和91采取的是一级间接地址索引,90→58对应的是逻辑块号5,所以逻辑块号5对应的物理块号为58。

因为题目中说每个地址项的大小为4字节,而对于一级和二级间接地址索引,每个物理块可以存1024字节的内容,所以在每个一级、二级间接地址索引中,有1024/4=256个地址项。所以在物理块号90中,存放的是从5260(5+256-1);在物理块号91中,存放的就是从261516(261+256-1),所以逻辑块号261对应的物理块号为187。

观察上图可知,101号物理块显然采取的是二级间接地址索引的方式,所以其中存放的是二级地址索引表。

4.3 空闲存储空间管理——位示图法

请添加图片描述

请添加图片描述

这道例题,首先物理块是从0开始编号的,系统中字长为32位(相当于一个字中包含了32个物理块),那么对于4195号物理块,实际上是第4196个物理块,那么,每个字的长度均为32位,所以4196/32=131.125,表示的是超过第131个字了,要将前131个字都填满,而当前物理块是在第132个字中描述,第一空选D。

第二空问系统应该怎么样?既然要将物理块分配给某文件,必须取值为1(1表示占用),所以排除A和C;我们再来看,前131个字所表示的物理块范围是0131×31:04191,所以第132个字中,第0位置表示4192,第1位置表示4193,第2位置表示4194,第3位置表示4195,所以在第132个字的第3位置对应上了4195号物理块。所以第二空选B。


5.设备管理

5.1 IO设备基本概念

请添加图片描述

5.2 IO控制方式

请添加图片描述


6.微内核操作系统

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值