第二章.操作系统基本原理


第二章.操作系统基本原理

ps:在上午考试中一般占到5-7分
重点:银行家算法、pv操作、文件管理、存储管理、操作系统的分类及其特点

第一节.操作系统-概述

在这里插入图片描述

操作系统的作用

✓ 管 理 系 统 的 硬 件 、 软 件 、 数 据 资 源 ✓ 控 制 程 序 运 行 ✓ 人 机 之 间 的 接 口 ✓ 应 用 软 件 与 硬 件 之 间 的 接 口 \checkmark 管理系统的硬件、软件、数据资源 \\ \checkmark 控制程序运行 \\ \checkmark 人机之间的接口\\ \checkmark 应用软件与硬件之间的接口
如果说我们把计算机买回来后,没有装操作系统,你是没有办法控制计算机上的资源的。相反我们安装上操作系统就能管理系统的硬件、软件、数据资源,说明操作系统是人与硬件之间的一种接口。对人机之间来说接口往往是以命令的方式存在,在这个过程中不是很直观,后来就出现了windows系统,也就是图形化界面。故命令和窗口的方式就是人机之间的接口。应用软件与硬件之间的接口是指操作系统专门为应用软件提供的API接口来实现相关的功能。

操作系统具体有具备哪些管理职能呢?

  1. 进程管理包含 进程的状态、前趋图PV操作、死锁问题
  2. 存储管理包含 段页式存储、页面置换算法
  3. 文件管理包含 索引文件、位示图
  4. 作业管理
  5. 设备管理
  6. 微内核操作系统包含 虚设备与SPOOLING技术

第二节.进程管理

进程的状态

进程的状态是指在操作系统当中对进程进行管理的时候为进程指定相应的状态以便于为进程分配相应的资源,把进程管理起来。

最初的时候,我们把进程的状态分成三种状态——运行、等待、就绪。(三态模型)
在这里插入图片描述
图注:等待状态下的程序缺少除cpu资源以外的其他资源,如用户指令或外设支持等资源;就绪状态的程序除了CPU资源以外的所有资源都已经准备就绪;处于就绪状态的程序需要排队获取CPU资源,且即使获取到了CPU资源,他们的运行时间也是有限的,因此,时间片到了以后就会从运行状态退出到就绪状态,而程序在运行时出现了某些资源的缺失则会退出至等待状态。

最初的三种状态纯熟之后,我们发现一个问题,就是三种状态不足以涵盖我们常见的情况,故提出了 五 态 模 型 \color{red}{五态模型}
在这里插入图片描述
图注:五态模型中的运行态、活跃阻塞态、活跃就绪态对应着三态模型。增加了静止就绪态和静止阻塞态。静止就绪是该进程处于运行态,但由于人为需要,由运行状态将其退出至静止就绪状态,如我们在听歌时突然来了电话,我们暂时将音乐关闭,这种人为的将程序由运行态转至的静止就绪态,即挂起操作,再次恢复或激活该程序时,该程序就将由静止就绪转至活跃就绪进而被调度。同样,静止阻塞态也存在挂起和恢复(激活)的状态。


前趋图

明确前趋图试图解决什么样的问题和表达什么样的信息。

  1. 概念:前趋图是将一个完整的进程所需的工序按照是否具有先后关系和约束关系将进程进行再次区分的图像。

  2. 模型实例:
    在这里插入图片描述
    图注:该前趋图以包饺子所需的工序为例,首先将包饺子分为了五大骤,左图将步骤按照顺序的流程进行排列。右图是根据步骤之间是否具有先后约束关系将其分成了三步骤,这样做的好处是明确了A,B,C三个步骤是并行的,这样可以增大CPU的处理效率。
    前趋图能够是我们直观地知道哪些任务可以并行,哪些任务有先后关系。


了解PV操作之前,你需要知道同步在哪些地方,互斥在哪些地方,你才能定位哪里要写P操作,哪里要写V操作。

进程的同步和互斥

同步的反义词为异步,互斥的反义词为共享。
互斥就是在同一时刻只允许某一个进程使用这一个资源,即同一资源不能服务于多个进程。
如:千军万马过独木桥。所有人都使用这一个独木桥,但是在一个时间点只能由一个人通过。
在这里插入图片描述

同步就是运行速度有差异的多个进程同时开始运行,在一定情况下,速度较快的进程会停下来等待速度较慢的进程。
同步满足两个条件:速度之间存在差异,存在等待过程。
如:两人约定一起到达终点,但速度存在差异,在一定情况下速度快的人就会等待速度慢的人。
在这里插入图片描述

经典问题:生产者与消费者问题

在这里插入图片描述

图注:对于单缓存情况而言,市场是一个互斥资源只允许一个人进行操作,不允许多个人进行操作,操作包括生产者放置商品和消费者拿走商品。生产者放置一个商品在市场中,然后如果我们还想要再放置商品就会出现溢出情况,那么只有等待商品被消费者拿走,才能放置下一个商品;存在速度差异和等待过程,这就是同步的情况。多缓存情况一样,只不过放置商品变多了。


PV操作

1.临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机,磁带机等。
2.临界区:每个进程中访问临界资源的那段代码称为临界区。
3.信号量:是一种特殊的变量。特殊在专用于PV操作的变量。比如:P(S)、V(S)中的S就是信号量。
PV操作就是两种原子操作的组合。
在这里插入图片描述
P操作的主要动作是:
①S减1;
②若S减1后仍大于或等于0,则进程继续执行;
③若S减1后小于0,则该进程被阻塞后放入等待该信号量的进程队列中,然后转进程调度。
V操作的主要动作是:
①S加1;
②若相加后结果大于0,则进程继续执行;
③若相加后结果小于或等于0,则从该信号的等待队列中释放一个等待进程,然后再返回原进程继续执行或转进程调度。

单缓冲区生产者、消费者问题PV原语描述:
在这里插入图片描述
系统里面有两个进程——消费者和生产者。假设当前进程为生产者进程,我们进行首先生产一个产品P(s1),s1 = s1 - 1 = 0 ,进程继续向下执行即将产品放置到缓存区V(s2),s2 = s2 + 1 = 1,然后我们再执行一遍生产者进程,执行P(s1),s1 = s1 - 1 = -1 < 0,则该进程放置到进程队列中,也就是该进程阻塞起来了。我们再来执行消费者进程,执行P(s2),s2 = s2 - 1 = 0 ,继续向下执行V(s1),s1 = s1 + 1 = 0 <= 0,从S1信号的等待队列中释放一个等待进程,也就是生产者进程,生产者就继续向下执行。假设一开始先执行消费者进程,执行P(s2),s2 = s2 - 1 = -1,不能够继续执行,因为s2小于0会被阻塞,故消费者一开始就执行产生的错误可以使用PV操作进行避免。
所以从该题分析可以知道,PV操作所解决的问题其实并发进程之间某些约束关系之间的解决方案,因为没有加PV很多地方会产生异常,而
加了PV操作这些问题迎刃而解,所以在以后做题过程中,给你几个并发进程,分析走到哪一步需要其它进程来进行配合,所以应该有一个P操作来阻塞当前状态,然后对方执行完后,要通过V操作为阻塞的位置进行唤醒,或者说加锁减锁(P是加锁操作,V是减锁操作)来看待,我们把PV操作当作一种思想进行使用,在合适的位置管理进程。

例题:
在这里插入图片描述
解答:
假设没有b1,b2操作,收银员执行收费动作,但是没有付款哪来的收费,故b1就是一个P操作阻塞收银员进程。这个P操作由付款动作V操作进行唤醒,那么a1是一个V操作。同一对PV操作的信号量需要一样。另外,V操作不具有阻塞功能,故a2是P操作用于阻塞购书者进程然后转进程调度,因为顾客不是付款后就能走,还应该结账等到收银员同意之后才能走。
总结:
PV操作解题的核心关键点就是找出约束关系,在过程中模拟假设执行哪个进程会遇到什么问题,应该在哪里有什么约束,假设执行另外一个进程又会面临什么问题,把PV操作加进来能够解决就是正确答案了。


PV操作与前趋图的运用

通过前趋图我们能够很快地写出PV操作。
在这里插入图片描述
例题:
在这里插入图片描述
对于前趋图,箭线表示前趋和后继关系,前趋进程完成需要通知后继进程(用V()操作通知),后继进程开始前需要检查前趋进程是否完成(用P()操作检查)。也就是说,在前趋图中,每个箭头流出指向后继进程,都会有一个V()操作通知后继,每个箭头的流入都是始于前趋进程,需要检查前趋进程是否完成,用P()操作进程检查。标识如下:
在这里插入图片描述
这种题在做的时候,可以将信号量标出,每条线表示一个信号量,P1、P2、P3、P4的线上分别标注S1、S2、S3、S4。然后先减锁然后才有加锁,故选择CAA。
注:一个进程中可能存在多个操作,比如上方的P3和P5j操作。


死锁问题

  1. 问题描述:进程管理是操作系统的核心, 但如果设计不当, 就会出现死锁的问题。 如果一个进程在等待一件不可能发生的事, 则进程就死锁了。而如果一个或多个进程产生死锁, 就会造成系统死锁。
  2. 解决方案: 提高系统资源容量;常见题型:计算机系统至少需要多少资源将不可能发生死锁问题。
  3. 例: 系统有 3 个进程: A 、 B 、 C。这 3 个进程都需要 5 个系统资源。如果系统至少有多少个资源, 则不可能发生死锁。

在这里插入图片描述
图解:一个进程在得到所有所需资源并执行结束之后将释放自身占用的资源,如果3个进程恰好都分配4个资源就会出现死锁问题,那么我们再加上一个资源就能打破死锁情况,故该系统至少需要13个资源。
计算方法: k ∗ ( n − 1 ) + 1 ( n 表 示 系 统 资 源 , k 表 示 进 程 个 数 ) k*(n - 1) + 1(n表示系统资源,k表示进程个数) k(n1)+1(nk)

死锁的四大必要条件

  1. 互斥:如果进程使用的不是互斥资源,那么就不存在死锁的想法了。那么资源就是共享的。
  2. 保持和等待:在资源总量并未满足完成进程所需资源的总量前提下,每个进程都保持自身占用的资源不变并且一直等待其他进程完成以获取其释放的系统资源。
  3. 不剥夺:系统不会把已分配给一个进程的资源剥夺掉分配给其他进程。
  4. 环路等待:如总共有三个进程,A等待B给它释放资源,B等待C给它释放资源,C等待A给它释放资源,这样子就形成了环路等待。

解决死锁问题有两种方案——预防和避免。

死锁的预防和避免

  1. 死锁的预防就是通过打破四大必要条件来进行。
  2. 死锁的避免分成两种有序资源分配法和银行家算法。

有序资源分配法:就是将资源先分给A进程,再分给B进程,再分给C进程以此类推。将系统资源按照顺序分配给进程,一个进程完成后才能将资源分配给下一个进程。
该方法的资源的利用率比较低,所以一般我们会采取更加有效比较多的方案是银行家算法。

银行家算法:是以银行放贷的思路来做资源的分配。因为对于银行家而言他们眼中的资源就是钱,他们放贷时,考虑这个钱是否能够按时收回。如果这个钱一评估发现收不回来银行家就不会放这笔贷款出去。所以对于操作系统而言,如果系统把资源分配给一个进程,而这个进程没有办法偿还,会造成系统的一些风险,那么系统就不会分配给你资源。
银行家算法——分配资源的原则
✓ 当 一 个 进 程 对 资 源 的 最 大 需 求 量 不 超 过 系 统 中 的 资 源 数 时 可 以 接 纳 该 进 程 ✓ 进 程 可 以 分 期 请 求 资 源 , 但 请 求 的 总 数 不 能 超 过 最 大 需 求 量 ✓ 当 系 统 现 有 的 资 源 不 能 满 足 进 程 尚 需 资 源 数 时 , 对 进 程 的 请 求 可 以 推 迟 分 配 , 但 总 能 使 进 程 在 有 限 的 时 间 里 得 到 资 源 \checkmark 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程 \\ \checkmark 进程可以分期请求资源, 但请求的总数不能超过最大需求量\\ \checkmark 当系统现有的资源不能满足进程尚需资源数时, 对进程的请求可以推迟分配, 但总能使进程在有限的时间里得到资源 ,,,使

例题:
在这里插入图片描述
:系统状态是安全的,就是不出现死锁状态。
一个进程在得到所有所需资源并执行结束之后将释放自身占用的资源。
解题思路:首先求剩下的资源数,然后计算 已 经 分 配 资 源 数 + 现 有 资 源 数 已经分配资源数+现有资源数 +是否能够满足最大需求数,就能判断执行流程是否安全。
在这里插入图片描述


第三节.存储管理

分区存储组织

从软件角度考虑存储的管理机制。(之前第一章第六节是从计算机角度考虑)

通过例题了解四种不同的存储管理分配算法。
这些分配算法的应用场景:就是有一个存储区域,除了给系统使用的内存空间,还有一个连续的大的空白(或者用户)区域,用户区域是供应用程序调用内存的时候使用的。

某计算机系统的内存大小为 128 k 128k 128k, 采用可变分区分配方式进行内存分配, 当前系统的内存分块情况如下图所示, 现有作业4申请内存 9 k 9k 9k,几种不同的存储分配算法在分配中, 会产生什么样的结果呢?
在这里插入图片描述

  • 分配前:作业1、作业2、作业3分别分配了相应的空间。
    为什么作业1和作业2之间出现空白区域?可能原来内存中作业1有一个33k的空间,而下方有一个25k的空间给另一个作业,紧接着是作业2和作业3,等原来25k的作业执行完之后,系统会将该空间释放出来,所以就得到25k的空白区域。
    存储空间是动态分配的(用多少分多少)。分配的过程中需要注意一些细节,比如:例题一个9k的作业如何分配到三个空白区域中?这需要由相应的算法决定。
  • 首次适应法:即顺次寻找首个能够容纳9k空间的空白区域并在当中切割出一块9k的空间。
  • 最佳适应法:把即将执行的作业存放到空白区域与它最接近的空间进行存放,如例子中,作业四占据9k,通过该算法,计算机将其存放在了空间10k的空白区域中。
    采用最佳适应法很好理解,因为我们希望分配空间时,希望我们能够分配到与他接近的分配空间,这样能够让整个系统保留大块的空白区域。
    为什么提出最差适应算法呢?因为最佳适应法存在缺陷,由于在每次存放作业以后内存空间剩余量极低,长期以后该算法会造成内存空间碎片化,降低内存地址的利用率。
  • 最差适应法:把即将执行的作业存放到最大的空白区域。
  • 循环首次适应法:每次分配都是从刚分配的空白区域开始寻找一个满足需求的空白区域。

页式存储组织

  1. 提出背景:之前提出分区化存储管理,即在内存当中划分一个用户区域,用户区域是供用户调用内存使用的,在这种管理模式当中往往是把应用程序整体的调用到内存当中。比如:内存空间有4G,用户空间有2G,现在你运行2G以上的程序都不行,甚至是1G都够呛。因为用户空间经过分区存储组织后是碎片化的,不是连续的空间,不能一次性的装入。为了解决碎片化的存储提出了页式存储。
  2. 具体思路:把用户程序分成等份大小的页(比如:等分成n个4k大小的区域,每个区域称为页),把内存当中的存储区也分成等份大小(块大小与页的大小相同)的块,然后调用程序时,不再是将程序一次性地调入,而是需要哪些页就通过页表调用到相应的块中。(页表用于记录页和块的映射关系) 如果我们采用这种方式就能将之前超越内存容量的应用程序运行问题解决掉了。比如:你的内存是2G,也能运行4G的应用程序,因为用到哪些页就是调用,不用就调走,这样就能有效地处理大型任务了。
    在这里插入图片描述
  3. 优点: 利用率高, 碎片小, 分配及管理简单
  4. 缺点: 增加了系统开销(比如:读取页表和查找页表的映射关系都会增加系统开销); 可能产生抖动现象

逻辑地址和物理地址

  1. 高级程序语言使用逻辑地址;
    运行状态,内存中使用物理地址。

  2. 逻辑地址=页号+页内地址
    物理地址=块号+页内地址
    在这里插入图片描述

  3. 逻辑地址和物理地址的页内地址是相同的,因为我们调入的应用程序都是以页为单位,所以以页为单位的偏移量不会有变化。
    逻辑地址的页号与物理地址的块号是不相等的,当然你也可以做到相等。比如:将页号0对应块号0。因为这里没有严格的限制,所以页号和块号要通过查表才能够得知。

那么我们如何通过逻辑地址求物理地址呢?
首先知道逻辑地址中哪一部分是页号,哪一部分是页内地址,然后直接将页内地址写入到物理地址中,然后再通过页号去查找块号,将两者拼接起来即可。
在这里插入图片描述
我们通过一个例题进行了解逻辑地址如何求物理地址。
在这里插入图片描述
注:1.页面大小现在普遍是4K,所以该题目才出4K。
2.带有访问位和修改位的页表:访问位:0,最近没有被访问 ; 1,最近已被访问。修改位 :0,该页未被修改; 1,该页已被修改

解:转换为物理地址需要知道页内地址,而页内地址需要通过页面大小确定,页面大小转化为二进制为 4 K = 4 × 2 10 = 2 12 4K=4 \times 2^{10}=2^{12} 4K=4×210=212,那么也就是逻辑地址的二进制的后12位就是页内地址即A29(H表示十六机制),而前面的就是页号即为5,通过页表找到对应的块号(页帧号)即6,那么物理地址为6A29H。第二问:根据表中状态位等于1和0分别表示页面在内存和不在内存,页面的淘汰必然是淘汰在内存的页面,故应该从0,1,2,5页面中进行淘汰,至于淘汰哪一个就要看访问位了。访问位1说明访问过,还有可能接着访问,所以不能淘汰。比如循环里的语句,要循环100次,访问完还会访问,不要随便淘汰。这里可以用局部性原理解释,被访问过的下次可能还会访问,所以会调入快表,被访问过的不会立即淘汰。故需要淘汰1。答案为DB。


段式存储组织

  1. 段式存储中的段包含段号和段内地址 两个部分。
    在这里插入图片描述
  2. 具体思路:按逻辑结构进行划分,即将main主函数作为一个段,然后第一个f(x)子函数作为一个段,再来第二个子函数作为一个段,以此类推。段之间的大小不要求一致(页的大小需要相同),按这种逻辑方式划分最大的好处就是便于共享。
    段表:其中存储段号、段长(因为段的长度不同)、基址(基地址)就是段在内存空间中是从哪一个地址开始的一个连续空间段,比如:下方段表基址[40K,80K)之间的连续空间。
    段的长度是有限的,如果段号长度大于段表长度则判断越界,发出中断信号。
    在这里插入图片描述
  3. 优点: 多道程序共享内存, 各段程序修改互不影响
  4. 缺点: 内存利用率低, 内存碎片浪费大。因为它要根据段大小在内存空间中切割相应的区块来完成任务。
    在这里插入图片描述

段页式存储组织

  1. 段页式存储是结合了段式和页式的一种存储组织。先分段,再分页。
  2. 段页式存储属于折中产物,将两者的优点结合起来。
  3. 优点: 空间浪费小、存储共享容易、存储保护容易、能动态连接。
  4. 缺点: 由于管理软件的增加, 复杂性和开销也随之增加, 需要的硬件以及占用 的内容也有所增加, 使得执行速度大大下降(因为需要先查段表再查页表)。
    在这里插入图片描述

快表

快表是一块小容量的相联存储器 ( A s s o c i a t i v e M e m o r y ) (Associative Memory) (AssociativeMemory), 由高速缓存器组成, 速度快, 并且可以从硬件上保证按内容并行查找, 一般用来存放当前访问最频 繁的少数活动页面的页号。

  • 相联存储器是按内容进行存储的,速度非常快,效率非常高。
  • 快表是放在cache(高速缓存器)当中,而段表和页表放在内存当中的就称之为慢表。

页面置换(淘汰/调度)算法

该算法广泛运用于分层的存储体系当中。

  1. 应用背景:像我们之前讲cache的时候,已经提到过cache的数量有限,当cache的块都被占了,要调用新的块进来时,就涉及到页面的置换问题。再有就是内存这个体系中同样面临这样一个问题。比方:进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区。
  2. 选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出。
  3. 常见的置换算法有一下四种:

最佳(Optimal, OPT)置换算法所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。但由于人们目前无法预知进程在内存下的若千页面中哪个是未来最长时间内不再被访问的,因而该算法无法实现。但能够利用该算法去评价其它算法。

随机 (RAND) 置换算法:随机淘汰一个页面,具有不稳定性。

先进先出 (FIF0) 算法: 优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。该算法实现简单,只需把调入内存的页面根据先后次序链接成队列,设置一个指针总指向最早的页面。但该算法与进程实际运行时的规律不适应,因为在进程中,有的页面经常被访问。
缺点:有可能产生 “Belady异常”。例如, 432143543215 432143543215 432143543215序列, 用3个页面, 比4个缺页要少。 在这里插入图片描述
这里使上面的实例,釆用FIFO算法进行页面置换。进程访问页面2时,把最早进入内存的页面7换出。然后访问页面3时,再把2, 0, 1中最先进入内存的页换出。由图可以看出,利用FIFO算法时进行了 12次页面置换。

FIFO算法还会产生当所分配的物理块数增大而页故障数不减反增的异常现象,这是由 Belady于1969年发现,故称为Belady异常,如下图所示。只有FIFO算法可能出现Belady 异常,而LRU和OPT算法永远不会出现Belady异常。
在这里插入图片描述

最近最少使用 (LRU) 算法: 选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。该算法为每个页面设置一个访问字段,来记录页面自上次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大的予以淘汰。根据局部性原理解释。
优点:不会 “Belady异常”


我们通过例题对比FIFO算法和LRU算法的区别。
在 一 个 虚 存 系 统 中 , 进 程 的 内 存 空 间 为 3 页 , 开 始 内 存 为 空 , 有 以 下 访 问 页 序 列 : 5 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 5 0 1 , 分 别 计 算 缺 页 次 数 。 ( 1 ) 使 用 先 进 先 出 的 页 面 淘 汰 算 法 。 ( 2 ) 使 用 最 佳 适 应 算 法 。 ( 3 ) 使 用 最 近 最 少 使 用 算 法 。 在一个虚存系统中, 进程的内存空间为 3 页, 开始内存为空, 有以下访问页序 列: \\ \begin{array}{llllllllllllllllll}5 & 0 & 1 & 2 & 0 & 3 & 0 & 4 & 2 & 3 & 0 & 3 & 2 & 1 & 2 & 0 & 1 & 5 & 0 & 1\end{array} , 分别计算缺页次数。\\ (1)使用先进先出的页面淘汰算法。\\ (2)使用最佳适应算法。 (3)使用最近最少使用算法。 ,3,,访:50120304230321201501,1使2使3使使
在这里插入图片描述


考试实例:
在这里插入图片描述
解:”没有使用快表“即表示每读一次程序的块,需要**先在内存上面查表,才能读取相应的内存块,**所以每一个块需要两次内存的访问,所以6个块(在页式存储结构中,每一个页面对应一个块)总共会产生12次对内存的访问;内存的次数是为了读取信息然后进行操作,所以缺页中断和内存访问次数无关;一个内存单元占据1B的内存,所有的指令(无论占据了几个页面)都只产生一次缺页,而操作数A和操作数B则各自产生两次缺页中断,因此总共产生了5次缺页中断(规定记住就行)。


了解更多内存管理知识传送门


页面抖动(颠簸)

在页面置换过程中的一种最糟糕的情形是,刚刚换出的页面马上又要换入主存,刚刚换入的页面马上就要换出主存,这种频繁的页面调度行为称为抖动,或颠簸。如果一个进程在换页上用的时间多于执行时间,那么这个进程就在颠簸。

频繁的发生缺页中断(抖动),其主要原因是某个进程频繁访问的页面数目高于可用的物理页帧数目。虚拟内存技术可以在内存中保留更多的进程以提髙系统效率。在稳定状态,几乎主存的所有空间都被进程块占据,处理机和操作系统可以直接访问到尽可能多的进程。但如果管理不当,处理机的大部分时间都将用于交换块,即请求调入页面的操作,而不是执行进程的指令,这就会大大降低系统效率。


第四节.文件管理

索引文件结构

在这里插入图片描述

  • 该结构是一种非常巧妙的文件结构,因为该结构本身容量非常有限,但是引入了一种扩展机制能够很方便地将容量扩大很多倍。
  • 一般的索引文件结构是有13个节点,编号从0开始。当然考试中也会存在不是13个节点的文件结构,题目会说明多余节点是什么情况。没有说明就是标准的13结点结构。
  • 在索引文件结构中分成了直接索引、一级间接索引、二级间接索引、三级间接索引。分成不同索引等级主要是考虑到文件本身容量的扩展问题。
  • 假设一个物理盘块是4K大小,假设所有的结点都是直接索引,那么这个文件最大就是 4 K × 13 = 52 K 4K \times 13 = 52K 4K×13=52K,容量只有这些实在太小了,故有人引入了一种扩展机制。
  • 索引节点存储1~ 13的地址。
    我们规定0~ 9的地址是直接索引,地址对应的物理盘块,物理盘块存储内容。容量为 4 K × 10 = 40 K 4K \times 10 = 40K 4K×10=40K。第10个索引节点对应的盘块存储的是物理盘块的地址,每一个地址假设占4字节(byte,B),每个物理盘块为 4 ∗ 2 10 B ÷ 4 B = 1024 B 4 * 2^{10}B {\div} 4B = 1024B 4210B÷4B=1024B说明10号结点存储了1024个地址,每个地址对应一个物理盘块,那么容量为 4 K × 1024 = 4064 K 4K \times 1024 = 4064K 4K×1024=4064K。第11个索引节点对应的盘块存储的是地址,地址下一级对应的盘块存储的还是地址,最后才指向物理盘块,那么容量为 4 K × 1024 × 1024 4K \times 1024 \times 1024 4K×1024×1024。依次类推,第11个索引节点对应的盘块是三级索引文件结构,容量为 4 K × 1024 × 1024 × 1024 4K \times 1024 \times 1024 \times 1024 4K×1024×1024×1024
  • 虽然分级越多存储的内容越多,但相应的,效率也会更低。

练习题
在这里插入图片描述
解:逻辑块号往往是从0开始的。红字标注的为逻辑块号。
分析iaddr[5]为一级间接索引,那么能够存储 1 K B ÷ 4 = 256 1KB {\div} 4 = 256 1KB÷4=256个地址,那么187对应的物理块号就是第 256 + 4 + 1 256 + 4 + 1 256+4+1号。故答案选择C。而101号物理块是二级间接地址索引,存储的就是二级地址索引表。
在这里插入图片描述


文件和树型目录结构

很多操作系统采用树型的目录结构,比如:dos、windows、linux系统都是的。
在这里插入图片描述

  • 绝对路径:是从盘符开始的路径。
  • 相对路径:是从当前路径开始的路径。
  • 若当前目录为D1,要求F2路径,则绝对路径:/D1/W2/F2,相对路径:W2/F2。
  • 不仅仅是在计算机中运用了相对路径和绝对路径的表达方式,还有在拨打固定电话,需要加区域号才行。

文件属性
✓ R 只 读 文 件 属 性 ✓ A 存 档 属 性 ✓ S 系 统 文 件 ✓ H 隐 藏 文 件 \checkmark \quad R 只读文件属性 \\ \checkmark \quad A 存档属性\\ \checkmark \quad S 系统文件\\ \checkmark \quad H 隐藏文件 RASH

文件名的组成
✓ 驱 动 器 号 ✓ 路 径 ✓ 主 文 件 名 ✓ 扩 展 名 \checkmark 驱动器号\\ \checkmark 路径\\ \checkmark 主文件名\\ \checkmark 扩展名


空闲存储空间的管理

所谓空闲存储空间就是在磁盘上存在大量的空间,我们需将这些空间管理起来,以便在某一个文件申请一个空间时,能够有依据的分配给他相应的空间。
总共有四种管理方法,分别是:空闲区表法(空闲文件目录)、空闲链表法、位示图法、成组链接法。

  1. 空闲区表法:用一个表来记录哪些地方是空闲的,以便将其管理起来。
  2. 空闲链表法:把空闲区域都链起来,链成一个链表,然后需要空间分配的时候,从这条链表中划分出一部分出来即可。
  3. 成组链接法:分组也分链的方式进行管理。
  4. 位示图法(重点):先画一个位示图,该图当中1表示该区域已经被占用,0表示该区域还是空闲的,我们将存储空间分成若干个物理块,就能够直观的表达出物理块是否被占用。
    位示图在生活中应用比较广泛。比如:机舱座位编号图、电影院座位示意图 都是运用了位示图。

在这里插入图片描述
解:由题意可知,物理块号是从0开始编号的,每一位对应文件存储器上的一个物理块,故有 ( 4195 + 1 ) ÷ 32 = 131 ⋯ 4 (4195 + 1) {\div} 32 = 131 \cdots 4 (4195+1)÷32=1314,然后有图可知系统中字的编号是从0开始的,故该物理块由第131号字来描述,而题目是第几个字,编号从1开始,故从第132个字开始描述。我们要占用该物理块,毫无疑问该位置应该取“1”,位置是从第0位开始算的,故系统应该将该字的第3位置取“1”。
在这里插入图片描述


第五节.设备管理

设备管理的五个层次
从上到下依次为:用户进程、与设备无关的系统软件、设备驱动程序、中断处理程序、硬件

数据传输控制方式

数据传输控制 主要是指内存和外设之间的数据传输问题,解决方案包括 程序控制方式、程序中断方式、DMA方式、通道、输入输出处理机。前三种要求重点掌握,后两种一般是运用在特殊的计算机上解决数据传输问题。

  1. 程序控制方式:又被称为程序插叙方式,这种方式最为低级的,也是CPU介入最多的一种方式,即整个数据的传输控制需要CPU的介入。此时外设处于非常被动的地位,即不能主动的反馈信息,比如:是否完成是否中断等信息,而是由CPU发出相应的查询指令,进而对信息进行查询。
    这种方式存在一些弊端,老板下发任务给员工,而老板每个一段时间问员工完成没有,最终员工说老早就完成了,这就导致员工的工作效率降低了,故提出了程序中断方式。
  2. 程序中断方式:大部分与程序控制方式相同,但相较于程序控制方式,添加了中断机制,存在了主动性。即:如果外设完成了数据的传输或发布等操作,外设会发出中断指令,系统就会进行下一步处理,效率比程序控制方式更高。
  3. DMA方式(Direct Memory Access,直接存储器访问) :在该方式中,会有专门的DMA控制器管控外设与内存之间的数据交换过程,CPU只需要在开头进行一些介入,比如安排好事物、做好初始化等等,整个过程都有DMA控制器来完成,完成之后由CPU接管后续的工作,这样的方式效率就会高很多。

虚设备与SPOOLING技术

Spooling技术实现独占设备虚拟共享。

用一个实例说明其原理。
假设有4个人共用一台打印机,那么这台打印机是放在打印房中,A,B,C,D四个人是在不同的办公室,通过远程方式连接该台打印机,而打印机同一时间只能服务于一个用户,而一个用户远程打印时,提示有人使用,想了想后等待20分钟后再来,提示还是有人使用,这不过碰巧有人使用,实际上外设的利用率降低。这时就提出了Spooling技术,该技术应用非常广泛,比如:打印机和操作系统等等。

  1. SPOOLING技术的应用场景和相应概念:SPOOLing是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。 SPOOLing技术通过磁盘实现。

  2. 对于SPOOLING技术的过程:
    在这里插入图片描述

    • 对于多个输入设备
    • 将输入的任务放到输入缓冲区当中
    • 以输入进程,输入到输入井
    • 再从输入井,依次的输出
  3. 也就是说我们不需要以PV操作检查进程有没有开始,有没有做完,我们都将输入任务放到输入井中,然后从输入井依次输出任务。


第六节.微内核操作系统

即内核做得更小的操作系统。
那么为什么将操作系统做的更小呢?
那必然存在它的优点:可靠性、稳定性、安全性。
为什么会出现这些优点呢?
操作系统作为核心的系统软件,如果说操作系统出现问题,就会影响到整个系统的正常运行,如果说将操作系统的内核做的小一些,就会降低这种问题发生的概率。为什么?只把最为核心的部分放在内核当中,这样子只有小块部分出现故障才能产生根本性的影响,而原来放在操作系统的内核部分抽出去了,作为其它的外接系统,而这些系统即使出现故障问题,我们只需要去重启这一小块的功能部件东西即可,就能够解决问题。如果把文件系统、图形系统、设备驱动这些东西放在内核之外,假设文件系统崩溃了,对于微内核系统而言没有关系,我就把文件系统重启一下即可,而不用重启整个操作系统。但如果说是单体内核的操作系统,如果其中的系统出现故障了,那么就表现为整个系统出现了故障。比如:XP系统经常出现蓝屏现象。当你把内核缩小了,那么这种概率就大大降低了。

微内核操作系统分成用户态和核心态。核心态就是微内核中内核这一块运行的情况。然后用户态就是核心态之外运行的。也就是说用户态这一块出的故障都没有关系,都可以通过一定的处理方式解决,而核心态出现故障就会比较严重,然后用户态和核心态之间会有交互。意思就是普通的东西在用户态这里处理只有到了非常关键的部分(就是和系统内核紧密关联的部分)才回到核心态去处理。

哪些部分是在核心态,哪些部分是在用户态,请求这一块的情况也要了解。
在这里插入图片描述


第七节.其它

磁盘分区是指将一块容量相对较大的磁盘划分为多块容量相对较小的磁盘,磁盘分区并不删除磁盘上的数据,但一般情况下,磁盘分区后要经过格式化后才能正式使用。

磁盘格式化在往磁盘的所有数据区上写零的操作过程,它是一种纯物理操作,同时对硬盘介质做一致性检测,并且标记出不可读和坏的扇区。那么格式化后,磁盘原有的数据被清除。

磁盘清理也可以删除计算机上的文件,但它主要用于删除计算机上那些不需要的文件。

碎片整理是指通过系统软件或一些专业的磁盘碎片整理软件对计算机磁盘在长期使用过程中产生的碎片和凌乱文件重新整理,以释放出更多可用的存储空间。

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值