操作系统基本原理

Posted liheihei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统基本原理相关的知识,希望对你有一定的参考价值。

第一节.操作系统概述

操作系统与计算机体系结构之间的关系:

 

操作系统具备的管理职能:

1.进程管理:(1)进程的状态;(2)前趋图;(3)PV操作;(4)死锁问题。

2.存储管理:(1)段页式存储;(2)页面置换算法。

3.文件管理:(1)索引文件;(2)位示图

4.作业管理

5.设备管理:数据传输控制方式

6.微内核操作系统:虚拟设备与SPOOLING技术

第二节.进程管理——进程的状态

程序的三种基本状态(三态模型)

 

图注:等待状态下的程序缺少除CPU资源以外的其他资源,如用户指令或外设支持等资源;

就绪状态的程序除了CPU资源以外的所有资源都已经准备就绪;处于就绪状态的程序需要排队获取CPU资源,且即使获取到了 CPU资源,他们的运行时间也是有限的

因此,时间片到了以后就会从运行状态退出到就绪状态,而程序在运行时出现了某些资源的缺失则会退出至等待状态.

程序进程的五态模型(三态模型的发展)

 

图注:该模型是三态模型的发展,将就绪状态分为了静止就绪和活跃就绪,静止就绪是该进程已经获得了CPU资源,但由于人为 需要,由运行状态将其退出至就绪状态,如我们在听歌时突然来了电话,我们暂时将音乐关闭,这种人为的将程序由运行态 转至的就绪态,即为静止就绪,再次调动该程序时,该程序就将由静止就绪转至活跃就绪进而被调用;此外,阻塞态即为三 态模型中的等待态

进程控制块的组织方式:

1.链接方式:把具有同一状态的进程(PCB),用其中的链接字链接成一个队列。这样,可以形成就绪队列、若干个阻塞队列和空白队 列等。对其中的就绪队列常按进程优先级的高低排列,把优先级高的进程排在队列前面。此外,也可以根据阻塞原因 的不同而把处于阻塞状态的进程的PCB排成等待I/O操作完成的队列和等待分配内存的队列等

2.索引方式:系统根据所有进程的状态建立若干索引表。例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内 存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的位置

第三节.进程管理——前趋图

ps.常与pv操作结合起来考察

前趋图的概念

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

2.模型示例:

 

图注:该前趋图以包饺子这一工序为例,首先将包饺子分为了五大步骤,并根据步骤间是否具有先后约束关系将其分为三个大的步 骤,这样做的好处是明确了A,B,C三个步骤是平行的,他们之间可以同时进行,这样可以增大CPU的处理效率。

第四节.进程管理——进程的同步与互斥

ps.进程的同步与互斥是进行pv操作分析的前提

进程的同步

1.同步的概念:运行速度有差异的两个进程同时开始运行,在一定情况下,速度较快的进程会停下来等待速度较慢的进程

2.进程同步的实际应用实例:

 

图注:多缓冲区下生产者和消费者的关系即为同步,即生产者在将产品投入市场的同时,消费者也能够对产品进行消费。但若一 方速度较快,则另一方需要停下来等待

 

进程的互斥:

1.互斥的概念:在同一时刻只允许某一个进程使用的资源,即同一进程不能服务于多个资源

2.互斥的实际应用示例:

 

第五节.进程管理——PV操作

与PV操作相关的几个概念:

1.临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机,磁带机等

2.临界区:每个进程中访问临界资源的那段代码称为临界区

3.信号量:是一种特殊的变量,符号为S,只用于PV操作

P操作

 

图注:S代表信号量,该操作表示:S自减一,然后判断是否小于零,若小于零则将该进程阻塞起来,并将其放入进程队列中, 让进程处于等待状态,若不小于零,则表示可以往下面执行;该操作即为将进程“挂起”或“申请资源”,该操作一般用于”运 行需要条件的操作“

V操作

 

图注:该操作表示:S自增一,然后判断S是否小于等于零,若是,则从进程队列中拿出一个进程,并唤醒该进程,使其继续执行; 若不是,则可以继续往下面的步骤执行;该操作即将进程“唤醒”或“释放资源”,一般将该操作用于”没有任何约束的上来就可 以运行的操作“

PV操作实例:

 

图注:该图为单缓存区下生产者与消费者在市场消费中的PV模式图,生产者的操作有:生产产品,送产品到缓存区;消费者的操作 有:从缓存区取产品,消费产品;在这个模型中加如了PV操作后极大的提高了模型的效率,其中p(s1)表示将S1的值代入p操 作,V(s2)表示将S2的值代入v操作

此外:PV操作的根本目的是为了解决两个或多个进程运行时的约束关系造成的麻烦,如上例中的单缓存区市场消费问题;

此外,有制约关系的操作双方信号量相同

PV操作与前趋图:

即PV操作与前趋图结合起来考察

 

 

图注:这种例题通过观察箭头的指向来解题,被指箭头用p操作,指向箭头就用v操作,有几个箭头就用几次。

第六节.进程管理——死锁问题

死锁:

1.问题描述:进程管理是操作系统的核心,但如果设计不当,就会出现死锁问题。如果一个进程等待一个不可能完成的事,则进程就 会死锁,此刻进程将会一直占用部分系统资源,而如果多个进程死锁,就会造成系统资源占用完毕,进而造成系统死锁

2.解决方案:提高系统资源容量。常见习题:计算机系统至少需要多少资源将不可能发生死锁问题;例如:

 

图解:一个进程在得到所有所需资源之后将释放自身占用的资源,因此该例题至少需要13个资源则不可能发生死锁。计算方法: 每个进程所需资源减一,然后把他们相加,总数再加一,即为避免死锁所需的最少资源

发生死锁的四大必要条件:

1.进程互斥

2.保持和等待:在资源总量并未满足完成进程所需资源总量的前提下,每个进程都保持自身占用的资源不变且一直等待其它进程完成 以获取释放的系统资源

3.不剥夺:系统不会把已分配给一个进程的资源剥夺掉给其它进程

4.环路等待:如总共3个进程,A等待B,B等待C,C等待A,都如此类,等待的进程将形成一个闭合环状

注:死锁的预防就是打破四大条件来进行。

死锁的避免:

1.有序资源分配法:将系统资源按照顺序分配给进程,一个进程完成后才将释放出来的资源分配给下一个进程

2.银行家算法:即为分配资源的原则

(1)、当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程

(2)、进程可以分期请求资源,但请求的总数不能超过最大需求量

(3)、当系统现有资源不满足进程所需要的资源时,对进程请求可以推迟分配,但总能时该进程在有限时间里得到资源

银行家算法相关题型:

 

图解:解决该类问题,首先将系统所剩资源数计算出来,然后将每个进程还差的资源数计算出来,进行比较之后,将系统资源分配给差的 最少的进程,进而让其释放资源,然后进行下一个所需资源较少的进程的分配,,由此将进程执行的顺序计算出来

第七节.存储管理——分区存储组织

1.首次适应法:

 

图注:首次适应法会把即将执行的作业安排在第一个能够容纳它的空间

2.最佳适应法:

 

图注:该算法会把即将执行的作业安排在内存空间与它最接近的空间进行存放,如该例子中,作业4占据空间9k,通过该算法,计 算机就将其存放在了空间为10的地址中;由于在每次存放作业以后内存空间剩余量极低,长期以后该算法会造成内存空间 碎片化,降低内存地址的利用率

3.最差适应法:

 

图注:该算法能够解决内存空间碎片化的问题,如图所示:该算法优先将作业存放至内存空间最大的地址.

4.循环首次适应法:

 

图注:该算法是将空闲的区域连成环状,将作业在环状区域内顺次进行分配(从第二个空闲区域开始分配)

第八节.存储管理——页式存储、段式存储、段页式存储

页式存储组织:

1.提出背景:为了解决碎片化存储

2.概念:把用户程序分成等分大小的n个页(并将其编号),再在地址空间中以nk为基数划分等大小的块(同样将其编号,块号又称页帧 号),运行用户程序时不再将整个程序进行运行,而是根据需要分批次将页调入到块中运行,而页和块之间的对应关系用页 表来记录

3.页式存储组织的优缺点:

优点:利用率高,碎片小,分配及管理简单

缺点:增加了系统开销(系统每次读取程序都需要先读取页表将其定位,再进行程序的读取);可能产生抖动现象

4.如图

 

图注:页号与页帧号的关系必须通过表来进行查询

5.逻辑地址和物理地址

 

图注:要求物理地址,要先把逻辑地址(由图可知,逻辑地址由页号和页内地址组成)当中逻辑的页号和页内地址分开,要把它们 分开,首先将页面大小写成二进制的形式,等于2^n;则说明一个页的页内地址有n位,而在逻辑地址中高于(从右往左)n位 的部分就是页号,得到页号之后进行查表,得到相应的页帧号,而物理地址=页帧号+页内地址(该式子中的“+“是拼接,并非 做加法)

段式存储组织:

1.概念:按逻辑结构进行内存的划分,划分为n个段,每一个段的大小无要求,可以相等也可以不等,包括段号和段内地址,例如: 可以将main主函数作为一个段,然后将第一个子函数作为一个段,然后将第二个子函数作为一个段......

2.

图注:该种存储方法按函数之间的逻辑对内存进行划分,大小差异较大,存在段表,段表的内容包括段号,段长以及基址

基址:就是该段在地址的起始位置

优点:多到程序共享内存,各段程序修改互不影响。

缺点:内存利用率低,内存碎片浪费大

段页式存储组织:

 

图注:段页式存储是结合了段式和页式的一种存储组织,将内存先分段,再分页;优点:空间浪费小,存储共享容易,存储保护容 易,能够动态连接;缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得 执行速度大大下降(程序在执行时要先查段表,再查页表,使得系统资源消耗增加)

快表:

1.概念:快表是一块小容量的相连存储器,由高速缓存器(放在Cache中的)组成,速度快,并且可以从硬件上保证按内容并行查找, 一般用来存放当前访问最频繁的少数活动页面的页号

第九节.存储管理——页面置换算法

1.产生背景:当程序的需要与系统资源的供给发生矛盾时的一种解决方案,即将不用的页面淘汰掉置换为需要执行的页面

2.内容:有四种算法:

(1)最优算法:尚处于理论层面

(2)随机算法:随机淘汰一个页面

(3)先进先出算法(FIFO):即淘汰按之前执行的先后顺序进行淘汰,有可能产生抖动(抖动即:把经常用到的页置换出去,要用的 时候发现没有内存了,造成进程中断)。例如,432143543215用3个页面,比4个缺页要少

(4)最近最少使用算法(LUR):即在保证最近使用的页面不被中断情况下,将最少使用的页面淘汰,不会产生抖动

3.相关例题

 

图注:”没有使用快表“即表示每读一次程序的块,需要先在内存上面查表,才能读取相应的内存块,所以每一个块需要两次内存的 访问,所以6个块(在页式存储结构中,每一个页面对应一个块)总共会产生12次对内存的访问;一个内存单元占据1b的内存, 所有的指令(无论占据了几个页面)都只产生一次缺页中断,而操作数A和操作数B则各自产生两次缺页中断,因此总共产生了 5次缺页中断

第十节.文件管理——索引文件结构

 

图注:索引一般会有13个节点(默认情况下),从0开始编号,其中索引0到9这十个索引称为直接索引,直接对应物理盘块,每一个 物理盘块都对应了索引文件的内容,而索引10则称为间接索引,里面只存储地址,如一个物理盘块的地址大小为4个字节, 而一个物理盘块的大小为4k,则4k\\4字节等于1024,代表着1024个物理盘块的地址,因此该索引内可以存储的文件大小为 4k1024;该10号索引称之为一级间接索引;索引11则是二级间接索引,即索引的内容还是索引,再索引的内容才是物理盘 块,二级简介索引存储的文件大小即为:

$$
4k*1024*1024
$$

虽然分级越多存储的内容越多,但相应的,效率也会更低

第十节.文件管理——文件和树型目录结构

树形目录结构的路径:

1.绝对路径:是从盘符开始的路径

2.相对路径:是从当前路径开始的路径

 

图注:在该文件树型图中,若文件目录的位置是D1,若要求f2的路径,则绝对路径:/D1/W2/F2;相对路径:W2/F2

文件属性及文件名的组成

文件属性及文件名的组成:

1.文件属性: R:只读文件属性; A:存档属性; S:系统文件 H:隐藏文件

2.文件名的组成:驱动器号;路径;主文件名;扩展名

第十二节.文件管理——空闲存储空间的管理

在磁盘上面,会有大量的空间,我们需要把空闲的空间管理起来,以便在某个文件申请空间时,能够有依据的分配给他相应的空间

总共有四种管理方法:空闲区表法;空闲链表法;位示图法;成组链接法

空闲区表法:

1.概念:我们可以用一个表来记录哪些地方是空闲的。以便管理起来

空闲链表法:

1.概念:把空闲区域都链起来,连成一条链表,然后需要空降分配的时候,从这条链中划出一部分出来即可

位示图法:

1.概念:将所有存储区域分成无数个物理块,然后1表示被占用,0表示空闲,将所有空间进行标记

 

2.例题

 

(1)字长32位,所以每个字有32个物理块。

从0开始编号,所以(4195+1)/32 = 131.125

所以4195号物理块在第132个字中

选D

(2)131*32 = 4192,也就是前131个字的物理块是0到4191,所以第132个字的第0位是4192,第一为是4193,第二位是4194,第三位是4195

选D

第十三节.设备管理——数据传输控制方式

主要指内存和外设之间的数据传输控制问题。

解决方式包括:程序控制方式;程序中断方式;DMA方式;通道;输入输出处理机。(前三种重点掌握)

程序控制方式:

1.概念:也称程序查询方式,这种方式是最为低级的,也是CPU介入最多的一种机制,即整个数据的传输控制很多时候需要CPU介 入,此时外设会处于非常被动的位置,即不会主动去返回信息,如是否完成等信息,而是由CPU主动发出查询指令,进而 对信息进行查询。

程序中断方式:

1.概念:大部分与程序控制方式相同,但相较于程序控制方式,由于增加了中断方式,主动性更强;即如果外设完成了数据传输等操 作,外设会发出中断指令,效率比程序控制方式强。

DMA方式:

1.概念:也称为直接存储器存取方式,在该方法中,会有专门的DMA控制器,只要是外设和内存之间的数据交换过程,就有这个控制 器进行管控,CPU只需要开头的时候做一些介入,如初始化等

设备管理的五个层次

由上到下依次是:用户进程、与设备无关的系统软件、设备驱动程序、中断处理程序、硬件

第十四节.虚设备与SPOOLING技术

SPOOLING技术

1.概念:例如:四个人通过远程手段准备使用一台打印机,而这台打印机在同一段时间内只能让一个用户使用,若一个用户正在使用 该打印机,另一名用户试图使用该打印机时就会提示该打印机被占用,,事实上这样做使得打印机的技术非常的低,而面对 这个问提,采用了SPOOLING技术的打印机会进行如下操作:给打印机创建一个缓存区,每一个用户在打印时都会进入缓存 区,而从缓存区到真正打印则需要挨个排队,即打印机在打印时不再排斥其他用户的打印操作,而是将其缓存起来,在将当 前操作完成后立即进行第二个操作,这样做不仅使得用户的操作界面变得更为友好,也极大的提高了打印机的打印效率

第十五节.微内核操作系统

即把内核做得更小的操作系统

1.概念:把内核做得更小具有的好处和优势,如提高了可靠性,稳定性,安全性;因为操作系统为核心的系统软件,如果操作系统出 现故障,就会影响整个系统的运行,将内核做的更小就会降低故障发生率。

2.单体内核和微内核的区别及各自优缺点如下图所示

 

Linux系统的常用命令

attrib:声明

modify:修改

chmod:修改文件权限

change:改变

Prometheus Labeldrop 操作背后的基本原理

【中文标题】Prometheus Labeldrop 操作背后的基本原理【英文标题】:Rationale behind Prometheus Labeldrop Action 【发布时间】:2019-11-27 17:32:33 【问题描述】:

我知道为了限制向存储系统发送不必要的指标,我们可以使用 metrics_relabel_configs 和 action "labeldrop" 来删除某些标签。

在我看到的所有示例中,人们都在删除标签,就好像他们已经知道与指标相关的所有标签一样。

在为 kubernetes 使用诸如 node_exporters、process_exporter 和 kubestatemetrics 之类的导出器时,存在的指标太多了。你如何决定保留或放弃哪一个?

【问题讨论】:

【参考方案1】:

labeldrop 操作的存在是因为 cAdvisor 用于向每个 pod 指标添加大量不同且不需要的标签,并且它允许您删除它们。这就是 labeldrop 和 labelkeep 的用例,当目标在指标上公开标签时,实际上应该在信息指标上进行。

【讨论】:

【参考方案2】:

labeldrop 仅删除附加到指标的标签,正如 Brian 所说的那样,它可以修剪不必要的信息标签。完成该操作后,指标名称和标签集必须仍然是唯一的,以免与其他指标混淆。

为了删除整个指标,可以使用 drop 操作,它使用正则表达式来定位指标的特征 - 包括 __name__ 标签 - 来决定是否应该删除整个指标删除。

查看任何一个目标的可用标签的最快方法是查看目标部分中的 Prometheus UI,例如prometheus:9090/targets。在该页面上,您可以看到抓取作业的每个目标,以及附加到存储指标的标签。如果您将鼠标悬停在这些标签上,您还可以查看在对其应用任何重写之前的标签。

一些重新标记操作是自动的,例如__address__ 被重命名为instance,并且labeldrop 操作会自动应用于名称开头带有__double_underscore__ 的所有标签应用了所有重新标记规则之后。这意味着无需删除任何以双下划线开头的规则。

至于选择完全删除哪些指标,这取决于您的需求、您是否有任何recording rules 以及您在什么时候删除它们。

1234563删除所有原始指标。

将所有这些指标保留在短期本地存储中也可能有意义,但使用 write_relabel_configs 在将它们发送到长期 remote storage 之前删除它们。

另外值得注意的是,还有另一个名为keep 的操作与drop 相反,删除所有匹配的除了指标。此操作的一个很好的用途是使用应用于 pod 的注释来确保 Prometheus 仅获取特定作业的正确指标。 my blog post and video 中有一个示例,其中要为特定作业的指标抓取的 pod 被注释为 prometheus.io/scrape: "true"。该注释通过服务发现作为名为@9​​87654336@ 的标签传递,keep 规则基于标签的值是否为true

【讨论】:

以上是关于操作系统基本原理的主要内容,如果未能解决你的问题,请参考以下文章

操作系统基本原理

跳频系统基本原理

WINDOWS工作的基本原理

Prometheus Labeldrop 操作背后的基本原理

操作系统基本原理

Linux中断(interrupt)子系统之一:中断系统基本原理