3. 操作系统的概述
1. 进程管理
对于操作系统,我们首先要明确一些基本的概念
操作系统主要是用于管理系统的硬件 软件,数据资源
控制程序的运行,利用命令作为人机之间的接口,也是软件和硬件之间的接口
有着 进程管理 存储管理 文件管理 作业管理 设备管理
其次我们看进程管理中的概念
进程的状态转换
基本可以分为下图
分为三个状态,运行,就绪,等待
就绪即这个进程准备好了,但是并没分配时间片进行执行
运行不必说,处于运行状态
最后是等待,可能在等待时间的发生,比如读取文件
在这三个基本的状态之上,我们引入两个状态,分别是主动和被动
也就是主动暂停称为挂起
需要注意的是,从等待态不能直接进入到运行态,因为即使事件完成了,或者事件发生了,也需要先进入到就绪态,等待分配时间片进行运行
其次在进程管理中,还有前趋图这个概念
主要用来描述进程之间的依赖关系
比如我们拿包饺子举例
如果是合适的话,可以将ABC进行并行运行
进程管理中的同步和互斥概念
在进程管理中,互斥意味着同一时间内,只能有一个进程可以进行某些操作
同步问题则是不同的进程,在一定情况下进行等待,
PV操作,对于PV操作,可以简单的分为三个部分
这里我们先理解临界区和信号量
信号量可以认为是数值为0的变量
临界区可以分为P和V, 对于P 则是则是将信号量减一的操作
对于V,则是将信号量加一的操作
在实际的代码中
对于P操作,则是先将S进行减一,如果大于等于0,则会继续进行,如果小于0,则会阻塞
对于V操作,则是相反,进行加一后判断是否 小于0
这里我们直接拿一个例题来看
对于这道题,我们先看Sn
这是用来控制进店人数的,进入要减一,如果小于0则阻塞,离开要加一,如果大于0则阻塞
其次是付款和收费,由于收银员会不断地自我轮训,所以我们需要先在b1将其阻塞,所以应该是p(s1) 对应的a1也就是要进行收费的操作,就是v(s1)
同理,在收费完成之后,不应该立刻进行轮训,所以b2 应该是一个p操作,就是p(s2)
A2 对应就是v(s2)
如何将其和前趋图进行结合的话,我们看如下例题
P1和p2 需要让p3阻塞,所以p1 和p2 分别是vs1和vs2
P3之后就是要让p4 p5执行,所以c应该是 ps1 和ps2
D应该是 vs3 vs4, e和f应该是gs3 和 gs4
进程管理的死锁问题
这里主要考验的是多个进程,每个进程需要不同的资源数,那么我们需要计算一个最低值,当满足这个值的时候不会发生死锁
比如
上面我们直接给出计算公式
每个进程数量减一后相加,最后再加上1即可
上面就是
4 + 4 + 4 + 1 也就是13
除此之外,关于死锁,还可能会考的是他的概念
也就是死锁的四大条件
互斥,保持和等待,不进行剥夺,环路等待
以及银行家算法,一种资源分配的套路
当一个进程队资源的最大需求不超过当前资源数的时候可以接纳
当不能满足所需资源数的时候,可以进行推迟分配,使得其可以在有限时间内得到资源
考验形式主要如下
这时候我们需要先计算剩余资源数
分别是9-1-2-2-1-1 = 2, 8 -2-1-1-2-1 = 1,5-1-1-3 = 0
然后计算每个线程的所需资源数
然后按照他们的当前所需分配资源数进行分配
满足 2 1 0 的只有= P2
然后是P4 P5 P1 P3
2. 存储管理
首先是分区存储组织
在系统中,申请内存的时候,可能会存在不同的存储分配算法,主要有如下几种
我们这里简单的说下,不同的方法,我们先看下需求,我们现在有如上的内存图,现在有一个新的9k的内存块的申请,如何分配
首先是首次适应法,对于这种方法,则是将新申请的代码块放到第一个有空位的地方
其次是最佳适应法,对于这种方法,则是将所有空闲块进行排序,从小到大,依次看哪个可以放进去
之后是最差适应法,按照排序,从大到小,从25k放进去
最后是循环首次适应法,将代码夸形成链式,依次排序分配
之后就是更为具体的页式存储组织
用户程序利用页表从找到实际的内存地址
主要的结构为 页号 + 页内地址,根据逻辑地址查找物理地址
其特点为
这里我们主要看一道例题
我们首先根据上面给出的逻辑地址,划分逻辑地址的页号和页内地址
页内地址需要根据页面大小进行确定,比如我们的页面大小是4K,那么也就是2的12次方,对应的就是三位十六进制,也就是A29H,那么页内地址就是A29,剩下的5就是页号了
然后我们根据页号确定物理地址,也就是页帧
对应的就是6,拼接后面的A29也就是D选项
其次是淘汰那一页,我们访问的第四页不存在,那么就需要淘汰在内存的页
抛开状态位为0的3,4 之后看哪个页不被访问,也就是访问位为0的页
对应的就是B选项
之后是段式存储,也是包含段号和段内地址
而对应的段表,则是分为段长和基址
需要注意的是,段长可以是不定长的,基址则是开始地址
最后是段页式的存储组织
对应的特点为
存储管理的页面置换算法
关于相关的页面置换算法,我们总结为4类
这里我们主要阐述后两种算法
也就是先进先出算法和LRU,我们直接以例题举例
假设有三页,那么计算缺页次数,也就是需要将对应的页读入内存
可以如上看到对应的淘汰次数
初次之外,我们还有一道题,来看例题
上面我们每一共有6个页,那么我们在访问的时候需要先利用页表确定对应的页,然后在进行访问,所以一个页需要访问两次内存,故1选B选项
其次对于指令,读入内存的时候只需要产生一次缺页中断,而读取数据则需要产生两次缺页中断,一共就是5次
3. 文件管理
对于文件管理,一般这么考,给一个索引结点,分别是具有直接索引,一级间接索引 二级间接索引以及三级简介索引
求对应的物理盘块位置
默认情况下是0~9是直接索引
其次是10为一级间接索引 11为二级间接索引 12为三级间接索引
这里我们直接看一道例题
由于0到4都是直接索引,所以直接看就行,但是对于5,则是需要我们看一级间接索引的
对应的就是58,这里我们直接选C
而101号物理块则是存储着二级地址索引表
然后是文件系统的一个概念,可能会考概念题
其一,文件属性,其中R是只读文件属性,A是存档属性,S是系统文件, H是隐藏文件
文件名的组成
驱动器号,路径,主文件名,扩展名
然后就是绝对路径和相对路径
绝对路径是从盘符开始的路径,相对路径是从当前路径开始的,比如
当前是D1,要求F2路径,则相对路径是 W2/F2
然后是绝对路径是 /D1/W2/F2
然后是文件管理中空闲存储空间的管理
主要有四种方法
其中我们主要说位示图法,依旧是上例题来看
首先是求第几个字,由于字长为32,而且物理块由0开始,所以我们直接计算
4196 / 32
得到131.125,所以应该是D 132为,然后换算下字的位置,我们用 131 * 32 得到4192,所以4195 应该是第三个位置
最后是三个小概念
其一为数据传输控制方式
程序控制方式,就是程序一直不断轮询数据传输状态
程序中断方式,则是在数据传输结束后,发出中断信号
DMA方法,则是由一个其他程序负责等待程序中断之后继续工作
然后是虚设备和SPOOLING技术
其实就是有一个缓冲区,在多个有人共用一个设备的话,会将数据先放入缓冲区,然后由设备不断地执行
最后是微内核操作系统
微内核和单体内核之间的区别在于
微内核的核心态代码更少,切换更频繁,但是由于核心小,更不容易崩溃