操作系统原理


一、概述?

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述


二、进程管理

1.进程

在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ef528e19aa5e48f68d6c09397b36b1ba.p![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fbaff89d58df488a92c77b81f289f4c0.png![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5c584a4848dc46fba524e420b127bcf6.png在这里插入图片描述在这里插入图片描述

2.进程同步

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述生产者消费者
在这里插入图片描述在这里插入图片描述

读写
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

哲学家进餐

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、进程通信

在这里插入图片描述1管道通信:也称共享文件方式,是指能够连接一个读进程和一个写进程,并允许他们以生产者-消费者方式进行通信的一个共享文件
2消息传递系统:用消息传递的方式(传递数据块)达到通信的目的
在这里插入图片描述间接:借助于收发双方进程之外的共享数据结构作为通信中转,这种中间实体称为信箱。
3共享存储器

4、线程

引入线程的原因:在操作系统中引入线程,是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性,以改善资源利用率及提高系统的吞吐量。
引入线程,进程分为线程:线程是进程的一个实体,作为系统独立调度和分派的基本单位;由进程拥有资源。
★一个进程可建立多个线程,这些线程共享进程拥有的全部资源
★多个线程之间并发执行,切换时快速简便。
线程的特征:动态性、并发性、(运行)独立性、异步性
在这里插入图片描述线程执行时间
例:A进程中包含1个线程,B进程中包含100个线程
若是用户级线程,CPU的时间片分配以进程为单位;
若是内核级线程,CPU的时间片分配以线程为单位。
进程:资源分配的基本单位、独立调度和分派的基本单位
在这里插入图片描述

5、死锁

死锁发生原因:(1)竞争资源(2)进程推进顺序非法
在这里插入图片描述在这里插入图片描述在这里插入图片描述

★该系统不会发生死锁的最少资源数=(需要的同类资源数-1)*进程数+1
★某系统有同类资源m个,供n个进程共享,如果每个进程最多申请x(1≤x≤m)个资源,且各进程的最大需求量之和小于(m+n)个资源,证明该系统不会发生死锁

6、调度

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述SPF是进程调度作用于有批道限制的题目非抢占
SRTF(最短时间剩余)抢占式SPF

在这里插入图片描述HRNN是非抢占,每次都计算优先权
优先权调度算法可剥夺

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述


三、存储器管理

在这里插入图片描述在这里插入图片描述

1、连续分配

连续分配存储管理方式:1.单一连续分配2.固定分区分配3.动态分区分配4.动态重定位分区分配
固定分区分配会造成大量的内碎片!
内碎片:分配给用户但用户没有使用的空间,“多分配的空间”
外碎片:没有分配但无法分配的空间,太小而无法分配
动态分区分配解决了内碎片的问题,但却可能带来外碎片的问题
分配算法
a、首次适应:优先分配内存中低地址部分,优点:简单,缺点:在低地址部分会积累大量外碎片
b、循环首次适应(next fit):优点:可以均匀利用高址和低址内存, 缺点:外碎片虽然不集中在低址部分,但未得到有效解决
c、最佳适应(best fit):优点:大分区保证,缺点:效率不高,碎片更小
d、最差适应(worst fit):优点:查找效率显著提高,缺点:大作业容纳能力会下降
在这里插入图片描述

2、离散分配

分页存储管理方式:
优点:没有外碎片,每个页内碎片不超过页大小。一个程序不必连续存放。便于改变程序占用空间的大小。即随着程序运行而动态生成的数据增多,地址空间可相应增长。
缺点:程序全部装入内存。
虚拟地址(程序地址、逻辑地址)->页号+页内地址
物理地址<-块号+块内地址
将有效地址分解成页号和页内地址的依椐是页的大小!(1K=2^10,所以第十位是页内地址)
地址变换:
1、主存容量大小=2^n,n为虚拟地址位数
2、块数=主存容量/页大小(块大小)
3、页数可推出页号地址位(2^n,n为页号位数)
4、进程页表有多少项<->有多少页(一页占一项)
5、块数可推出进程页表项有多少位(2^n,n为进程页表项位数)
6、进程总长度=页大小页数
7、页内起始地址=块号
页大小
8、页表最大占用=页表项大小*页表项数
虚地址以十进制数给出
位移量(页内地址)=虚地址%页大小
页号=虚地址/页大小
物理地址=块号×页大小+位移量(起始地址+页内地址)
当没有该页号时,出现缺页中断

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述分段存储管理不会产生内碎片,有利于程序的动态链接
段页式存储管理:分段管理符合模块化思想,但会有外碎片
采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段的最大长度是( 2^16 )

在这里插入图片描述

3、虚拟存储

局部性原理(principle of locality,1968):程序在执行时将呈现出局部性规律,即在一较短时间内,程序的执行仅限于某个部分;相应地,它所访问的存储空间也局限于某个区域。
可以表现为:
时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内;
空间局部性:当前指令和邻近的几条指令,当前访问的数据和稍后要访问的邻近数据都集中在一个较小区域内。
虚拟存储技术的特征:
离散性:物理内存分配的离散(不连续),虚拟地址空间使用的离散
多次性:一个作业被分成多次地调入内存运行;
对换性:且为部分对换。虚拟存储器的调入和调出是对部分虚拟地址空间进行的;
虚拟性:通过物理内存和快速外存相结合,提供大范围的虚拟地址空间
总容量不超过物理内存和外存交换区容量之和
缺页中断在指令执行期间产生和进行处理,而不是在一条指令执行完毕之后。所缺的页面调入之后,重新执行被中断的指令。

在这里插入图片描述最简单、也最容易实现;
如果应用程序具有顺序存储引用特征,那么使用FIFO算法将获得很好的性能;
不过,大多数应用程序具有局部存储引用特征。对于此类应用程序,FIFO算法的性能是很差的。
在这里插入图片描述
特点:由于无法预测作业未来将用到哪些页!
所以此算法是一种理想情况,
是一种无法实现的——理论上的算法。
可用作性能评价的依据。
在这里插入图片描述
1.现有一个仅460个字节程序的下述地址访问序列(该序列的下标均从0开始):10、11、104、170、73、309、185、245、246、434、458、364。且页面大小为100字节:(1)写出页面的访问序列。(2)假设内存中仅有200字节可供程序使用且采用FIFO算法,那么共发生多少次缺页中断?(3)如果采用最近最久未使用(LRU)的算法,则又会发生多少次缺页中断?
1)地址访问序列:10 11 104 170 73 309 185 245 246 434 458 364
页面的访问顺序:0 0 1 1 0 3 1 2 2 4 4 3
2)采用FIFO算法产生的缺页中断为6次。
3)采用LRU算法产生的缺页中断为7次。
在这里插入图片描述遇到新的时需要查找一轮置0,替换0的,如果存在,则指针不变,0置1

现有一请求调页系统,页表保存在寄存器中。若有一个被替换的页未被修改过,则处理一个缺页中断需要8ms;若被替换的页被修改过,则处理一个缺页中断需要20ms。内存存取时间为1 s ,访问页表的时间可以忽略不计。假设70%被替换的页被修改过,为保证有效存取时间不超过2 s ,则可接受的最大缺页率是多少?
p*(0.720+0.38+0.001)+(1-p)*0.001<=0.002
16.4p+0.001<=0.002
16.4p<=0.001
P<=1/16400=0.00006
在这里插入图片描述在这里插入图片描述
在这里插入图片描述


四、文件管理

1、文件概念

在这里插入图片描述在这里插入图片描述文件逻辑结构的类型
1.按是否有结构分类

1)有结构文件:记录式文件

文件是记录的集合. 每个记录由彼此相关的数据项构成。
如果文件中所有记录的长度都相同,则这种文件为定长记录文件,
否则就是变长记录文件。
2)无结构文件
文件由字节流组成,称为流式文件。不划分记录,顺序访问,每次读写访问可以指定任意数据长度。
可以把流式文件看作是记录式文件的一个特例
3)两种文件的比较
流式文件就象给一张白纸给用户,用户可将他的信息意地写到纸上,没有任何格式上的限制。
记录式文件就象给一张表格给用户,用户要按表规定格式填信息。

显然,结构式文件对用户的限制很大,使用起来就不方便,

流式文件相比有结构的记录式文件好处:更加方便、OS 代码更加可靠、灵活,用户编程也更加方便。
文件的存取方法(访问方法)
顺序存取:是按照文件的逻辑地址顺序存取,后一次存取总是在前次存取的基础上进行的。
在有结构文件中,这反映为按记录的排列顺序来存取,
例如:当前记录为Ri,则下一条记录为Ri+1
在流式文件中,顺序存取反映当前读写指针的变化,
例如:当前指针rPtr,下一存取位置的指针为rPtr+1

随机存取(直接存取):允许用户根据记录的编号来存取文件的任一记录,或者是根据存取命令把读写指针移动到欲读写处来读写。每次存取操作都要指定存取操作的开始位置.
对于有结构文件:如果文件是定长记录的,只要给出记录号就能求出该记录的首地址。如果文件是变长记录结构的,直接存取将是非常困难的。
对于流式文件:

2、目录管理

为了对一个文件进行正确的存取,用文件控制块(FCB)描述和控制文件访问的控制信息(不包括文件内容)。即:文件属性信息(properties),其中的一部分是用户可获取的。
在这里插入图片描述文件与文件控制块一一对应。
文件目录是文件控制块(FCB)的有序集合。
文件目录也是一个文件。
在这里插入图片描述在这里插入图片描述目录部分——启动磁盘次数问题
在某个文件系统中,每个盘块512字节,文件控制块占64个字节,其中文件名占8个字节。如果索引结点编号占2个字节,对一个存放在磁盘上256个目录项的目录,试比较引入索引结点前后,为找到其中一个文件的FCB,平均启动磁盘的次数。

未引入索引结点时:FCB占64字节:则一个盘块可存放512/64=8个FCB。因此一个含有256个目录项的目录需要存放在256/8=32个盘块中。检索一个文件,需平均启动磁盘次数为(32+1)/2=16.5次
引入索引结点后:FCB被简化为由文件名和索引结点编号组成,即占8+2个字节。则一个盘块可存放512/10=51.2个FCB,因此一个含有256个目录项的目录需要存放在256/51.2=5个盘块中。找到匹配的目录项平均启动磁盘次数为(5+1)/2=3次,得到索引结点编号后,还需启动磁盘将对应的索引结点读入内存,故平均启动磁盘4次。
文件目录管理的设计要求:
1.实现按名存取
2.提高对目录的检索速度
3.实现文件共享
4.允许文件重名

3、磁盘访问时间与调度算法

容量 = 磁头数 ×柱面数 ×扇区数 × 每扇区字节数
三维物理地址:盘片(盘面):磁道(柱面):扇区(盘块)
在这里插入图片描述在这里插入图片描述在这里插入图片描述假定磁盘转速为20ms/周,每个磁道分成8个扇区,仅有8个记录要存放在同一磁道上供处理程序使用,每个记录放在一个扇区。处理程序每次从磁道上读出一个记录后要花费5ms处理时间,现用户要求顺序处理这8个记录,假设磁头正处于首个记录的始点位置。请回答下面问题:1)按逆时针方向安排这8个逻辑记录(磁盘逆时针方向旋转),则处理完这8条记录所花费的时间为多少?2)应该怎样安排这8个记录,使得处理它们时能保证最高效率?3)请计算出按照最优分布,连续处理完这8个记录所花费的时间。
数据处理时间=磁盘访问时间+数据实际处理时间磁盘访问时间=寻道时间+旋转延迟时间+传输时间本题中应该通过对旋转延迟时间的优化达到提高访问磁盘数据速度的目的。
(1)
读取每个记录的时间:20/8=2.5ms
实际处理该记录需要:5ms
因此,磁头位于记录始点时:
记录的处理时间共7.5ms.
旋转至下一个记录起点需要的时间:
4*2.5=10ms
因此, 总时间=7.5+(10+7.5)7=130ms
(2)
读取每个记录的时间:20/8=2.5ms
实际处理该记录需要:5ms
因此,每个记录的处理时间均为7.5ms.
因此, 总时间=7.5
8=60ms

五、某软盘有40个磁道,磁头从一个磁道移到另一个磁道需要6ms。文件在磁盘上非连续存放,逻辑上相邻的数据块的平均距离为13个磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms。问:
1)读取一个100块的文件需要多少时间?
2)如果对磁盘进行整理使得同一文件的磁盘块尽可能靠拢,从而使逻辑上相邻的数据块的平均距离降为2个磁道,这时读取100块的文件有需要多少时间?
读第一块时,无论是紧密存放还是不紧密存放,读取方式都一致。从第二块开始将不同。

读第一块时平均移动磁道(柱面)约为20个((0+39)/2).
需要时间:206ms;平均旋转延迟时间为100ms;传输时间为25ms。
读第一块时所需时间为:20
6+100+25=245ms

(1)非连续存放(不紧密存放):
从第二块开始,每块的处理时间平均是:136+100+25=203ms
传输100块共需时间:245ms+99
203ms=20.342s

(2)采用紧密存放
从第二块开始,每块的处理时间平均是:26+100+25=137ms
传输100块共需时间:245ms+99
137ms=13.808s
磁盘分配方式(即文件的物理组织) 问题:
例1:请分别解释在连续分配方式、隐式连接分配方式、显示连接分配方式和索引分配方式中如何将文件的字节偏移量3500转换为物理块号和块内位移量(设盘块大小为1KB,盘块号需占4个字节)
首先将逻辑地址转换成逻辑块号和块内偏移量:
3500/1024得到商为3,余数为428,即逻辑块号为3,块内偏移为428。
1)在连续分配方式中,可从相应文件的FCB中得到分配给该文件的首个盘块号,如:a0;则字节偏移量3500所对应的物理盘块号因为a0+3,块内偏移量为428
(2)在隐示连接方式中,由于每个盘块中需要留出4个字节(如最后4个字节)来存放分配给文件的下一个盘块的块号,因此逻辑块号为3500/1020=3,而块内偏移量为440。从相应文件的FCB中可得到分配给该文件的首个盘块号,如:b0;然后由b0找到b1,进而b2,b3。因此物理盘块号因为b3,块内偏移量为440。
(3)在显示连接方式中,可从文件的FCB中得到分配给文件的首个盘块号,如c0;然后在FAT的第c0项中得到分配给文件第一个盘块的块号c1;进而得到c2,c3。因此物理盘块号应为c3,块内偏移量为428
(4)在索引分配方式中,可从文件的FCB中得到索引表的地址。从索引表的第3项可以获得3500对应的物理块号,块内位移量为428。

例2:存放在某个磁盘上的文件系统,采用混合索引分配方式,其FCB中共有13个地址项,第0~9个地址项为直接地址,第10个地址项为一次间接地址,第11个地址项为二次间接地址,第12个地址项为三次间接地址。如果每个盘块大小为512字节,若盘块号需要3个字节来描述,而每个盘块最多存放170个盘块地址:
(1)该文件系统允许文件的最大长度是多少?(2)将文件的字节偏移量5 000,15 000,150 000转换为物理块号和块内偏移量。(3)假设某个文件的FCB已在内存,但其他信息均在外存,为了访问该文件中某个位置的内容,最少需要几次访问磁盘,最多需要几次访问磁盘?
(1)该文件的最大长度:10512+170512+170170512+170170170512
(2)5000/512得到商9,余数为392。即5000对应的逻辑块号为9<10,因此可从FCB的第9个地址项处得到物理块号。偏移量为392
15 000/512得到商29,余数为152。即15000对应的逻辑块号为10<29<10+170,而29-10=19,因此可从FCB的第10个地址项,即一次间址项中得到一次间址块的地址;并从一次间址块的第19项中得到物理块号。块内偏移量为152
150 000/512得到商292,余数为496。即150 000对应的逻辑块号为10+170<292<10+170+170
170,而292-(10+170)=112,112/170得商0,余数为112。因此可从FCB的第11个地址项,即二次间址项中得到二次间址块的地址;并从二次间址块的第0项中得到一次间址块的地址,再从该一次间址块的第112项中获得对应的物理块号。块内偏移量为496
(3) FCB已在内存:因此最少一次访问磁盘(即通过直接地址直接读取文件盘块就找到该位置)最多4次访问磁盘(当该位置处于3次间址的盘块中时) 第一次需要读三次间址块, 第二次需要读二次间址块, 第三次需要读一次间址块, 第四次读文件盘块。

磁盘调度算法
先来先服务FCFS:公平——但缺少对寻道的优化。
最短寻道时间优先(SSTF):考虑要访问的磁道与磁头所在磁道的距离问题——会出现“饥饿”现象
扫描算法(SCAN):解决“饥饿”现象。不仅考虑距离,还考虑磁头的移动方向问题(电梯调度算法)——某些进程被严重推迟。
循环扫描(CSCAN):考虑特殊请求进程被严重推迟的情况,规定磁头单向移动。
N-Step-SCAN调度算法:前面算法会出现“磁臂黏着”现象。为解决这一现象:将磁盘请求队列分成长度为N的子队列。(队列间FCFS,队列内SCAN)
FSCAN算法:N-Step-SCAN的简化。分成两个子队列:当前请求I/O的进程队列,SCAN;扫描期间新出现的请求队列。
在这里插入图片描述

4、外存分配

在这里插入图片描述

在这里插入图片描述

可以用紧凑的方法解决外碎片
Fat占用空间的计算
假定盘块的大小为1KB:
1)对于540MB的硬盘FAT需占用多少存储空间?
需要表项:540M/1K=540K
由于220=210210=1024K, 219=512K
故:540K介于512K和1024K之间.
一般,表项占用的空间为半个字节的整数倍。
因此,540K个表项可以用20位来描述.即2.5个字节.
所以,FAT占用空间为:540K
2.5=1350K
2)当硬盘容量为1.2G时,FAT需占用多少存储空间?
需要表项:1.2G/1K=1.2M
由于220=210210=1M, 221=2M
故:1.2M介于2M和1M之间.
因此,1.2M个表项需要用24位来描述.即3个字节.
所以,FAT表占用空间为:1.2M
3=3.6M
两级索引分配
如果:
盘块大小为1K,
盘块号占4个字节,
则每个盘块可存放256个盘块号。
则一级索引时:
所允许的文件最大长度是:
2561K=256K.
两级索引时:
所允许的文件最大长度是:
256
256*1K=226=64MB.
索引分配的特点:
优点:
支持直接存取,也不会产生外碎片
文件较大时,优于链接分配
缺点:
花费较多的外存空间,特别是对于小文件,索引块的利用率极低。

采用特定的索引分配时,计算文件系统所允许的最大文件长度.
假如盘块大小为4KB,每个盘块号占4个字节,对于上图中:
10个直接地址项,即iaddr(0)~iaddr(9),来存放直接地址,则可允许存储文件长度为:4K10=40K.
采用一级索引分配方式:
一个盘块可以存放4K/4=1K个盘块号,从而对应1K个存储文件的盘块,因此,允许存储文件长度为:1K
4K=4M.
采用二级索引分配方式:
可对应1K1K=1M个盘块 文件长度:1M4K=4GB
采用三级索引分配方式:
可对应1K1K1K=1G个盘块 文件长度: 1G*4K=4TB
可见最大文件长度为:
40K+4M+4G+4T (B)

例某操作系统的文件管理采用直接索引和多级索引混合方式,文件索引表共有10项,其中前8项是直接索引项,第9项是一次间接索引项,第10项是二次间接索引项,假定物理块的大小是2K,每个索引项占用4个字节,试问: 1)该文件系统中最大的文件可以达到多大?2)假定一个文件的实际大小是128M字节,该文件实际占用磁盘空间多大(包括间接索引块)?
在这里插入图片描述

5、位示图法

在这里插入图片描述
在这里插入图片描述在这里插入图片描述


五、设备管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述通道类型:
1)字节多路通道:以字节为单位;以“分时”方式服务于多个I/O设备——多路,多个非分配型子通道,按时间片轮转方式共享主通道。数据传送速率低,适于连接低速或中速设备
2)数组选择通道:以数组为单位,可以连接多台高速设备,只有一个分配型子通道,设备独占通道,数据传送速率高,通道利用率低
3)数组多路通道:将数组选择通道传输速率高和字节多路通道能使各,子通道分时并行操作的优点相结合形成。以数组为单位,分时服务于多个设备,数据传送速率高,通道利用率高

在这里插入图片描述在这里插入图片描述DMA的局限性
外设的管理和某些操作仍由处理器控制;
多个DMA控制器的同时使用会引起内存地址的冲突,并使得控制过程进一步复杂化。
通道控制 :是DMA方式的发展,把对一个数据块的读或写为单位的
干预,减少为对一组数据块为单位的读或写及有关的控制和管理的干预。(即多次读写的过程)
设备的分配 :按一定算法进行设备分配——包括设备、设备控制器及通道
在这里插入图片描述在这里插入图片描述设备独立性:应用程序独立于具体使用的物理设备,又称设备无关性。换句话说,用户编程时使用的设备与实际使用的设备无关,为了实现设备独立性,引入了逻辑设备和物理设备两个概念。
实现设备独立性的好处:(1)设备分配时的灵活性
(2)易于实现I/O重定向:用于I/O操作的设备可以更换,即重定向,而不必改变应用程序。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述spooling组成:输入井、输出井——磁盘 输入进程、输出进程 井管理程序 输入缓冲、输出缓冲——内存
特点:(1)提高了I/O速度,不再访问低速设备,而变为访问输入输出井
(2)独占设备成为共享设备
(3)实现了虚拟设备功能
在这里插入图片描述用 SPOOLing技术的计算机系统,外围计算机需要(0台
在采用 SPOOLing技术的系统中,用户的打印结果首先被送到( A.磁盘固定区域 )

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值