面试复习操作系统一

一、操作系统概述

1.操作系统概述

在这里插入图片描述

2.对操作系统四个特征知识的补充

a.并发:区分它与并行,并行是只有多核CPU才有;并发是宏观上的多个程序同时运行,但是微观是时间片轮转运行
b.共享:互斥共享的资源称临界资源,如打印机。
c.虚拟:
主要使用时分复用和空分复用两种技术。

多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。

虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
d.异步
来自https://cyc2018.github.io/CS-Notes/#/notes/计算机操作系统 - 概述

3.基本功能

四个管理(内存,文件,进程,设备)。

4.系统调用

操作系统有用户态和内核态,若一个进程在用户态需要使用内核态的功能,就进行系统调用,从而陷入内核。系统调用是一种特殊的中断,用户通过访管指令(陷入指令)来进行系统调用。
访管指令之所以叫访管指令是因为内核态也叫管理态,访管就是访问管理态,该指令给用户提供接口,用于调用操作系统的服务。

5.大内核与微内核

大内核:将操作系统的功能整体放到内核。
微内核:将操作系统的一部分功能移出内核,这一部分按分层的原则划分成若干服务,各自独立。在这种结构,只有微内核这一模块运行在内核态,其余运行在用户态。微内核结构的操作系统需要在用户态和内核态频繁切换,所以有一定的性能损失。

6.操作系统中断

中断是并发的前提,中断之前是用户态,中断时进入内核态,中断是进去内核态唯一的途径。
分类:外部中断、异常(内部中断)、陷入(系统调用)。

7.用户态和内核态

面试考点——内核态和用户态
计算机中通常运行着两类程序——系统程序和应用程序,为了应用程序运行时不破坏系统程序,设置了系统态和用户态两种状态。系统态也称内核态、管态,操作系统在内核态运行,只能运行系统程序;用户态也称目态,应用西程序只能在用户态运行,运行用户程序。
实际运行中,计算机会在用户态和内核态间切换。相应的,指令集也分为特权指令和非特权指令。
特权指令是在系统态时运行的指令,对内存空间的访问范围基本不受限制,能访问用户空间和系统存储空间。特权指令只允许操作系统使用。
非特权指令是在用户态时运行的指令,只能访问用户空间,不能对系统中的软件和硬件直接进行访问,一般应用程序使用的都是非特权指令。

UNIX系统把进程的执行状态分为两种:用户态执行和核心态执行。
处于用户态执行的进程,所能访问的内存空间和对象受限制,所占有的处理机是可以被抢占的。
处于核心态的进程则可以访问所有的内存空间和对象,所占用的处理机是不允许被抢占的。
来自https://blog.csdn.net/qq_29996285/article/details/88078906?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

二、进程管理

1.进程的描述与控制

在这里插入图片描述

2.进程和线程

进程是资源分配的基本单位,线程是独立调度的基本单位。
两者比较:
(1)拥有资源:进程本身拥有资源,同一进程的多个线程共享进程的资源。
(2)系统开销:进程不论是创建还是销毁开销都很大,线程切换时只是设置和保存少量寄存器的内容,开销很小
(3)开销:进程切换>>线程切换,进程通信>线程通信
(4)独立性:进程有自己的独立地址空间,线程没有,进程是更安全的。

3.进程状态的切换

只有就绪和执行是双向箭头的。

4.进程调度

方式:抢占和非抢占
非抢占:必须前一个进程处理完才能让出处理机,不适用分时系统和实时系统。
抢占:按照一定规则进行。
【面试题】进程调度常用算法

(1)批处理系统

a.先来先服务(FCFS) 非抢占

问题:先来的进程时间很长,后面要一直等

b.短作业优先(SJF)非抢占

可以缓解短作业的饥饿状态,但是长作业要一直等

c.最短剩余时间优先(shortest remaining time next,SRTN)抢占
d.高响应比优先

响应比=(预计服务时间+预计等待时间)/预计服务时间
是FCFS和SJF的中和版
当等待时间一样时短进程优先;当预计服务时间一样时,等待时间长的会优先调度。

(2)分时系统

a.时间片轮转

按照FCFS的顺序,多个进程轮流进行调度
时间片的长度很关键,太长影响实时性,太短切换太频繁开销大

b.优先级调度

根据优先级是否可变分为静态和动态
根据是否抢占分为可剥夺和非剥夺

c.多级反馈队列

1.是时间片的一种变形。
2.分为多个进程就绪队列,每个进程队列有优先级,优先级越高,进程运行时间片越小,时间片随着队列递增。
3.每次一个进程会先进到第一个队列,按FCFS来调度一轮,若在第一个队列调度完,进去第二个队列;仅在第1至i-1级队列为空,调度程序才调度第i级队列的进程;若处理机正在执行第i级队列的进程,有进程进入第1至i-1级队列,则新进程将抢占正在运行的进程的处理机,将这个正在运行的进程放回原先的就绪队列。
4.短作业很快调度完,长作业也不会一直得不到调度。

d.公平调度算法

1.保证调度算法:实际不公平,给每个进程分配同样的时间,但进程拥有的线程数目不一样,所以实际不公平
2.公平共享调度算法:考虑每个用户拥有的线程数,让每个用户的时间一样

(3)实时系统

对任务完成时间要求很高,需要提供必要信息,系统处理能力强,快速切换,抢占式机制。

a.最早截止时间优先(EDF,Earliest Deanline First)

按照截止时间先后设置优先级

b.最低松弛度优先(LLF,Least Laxity First)

按照还有多少时间必须开始设置优先级,即按照当前时间到开始截止时间的长度设置优先级。
松弛度=必须完成时间-当前时间-其本身运行时间

5.进程同步

对多个进程的执行次序进行协调,使并发的进程能够按照一定的次序共享资源。

1.临界区

进程访问临界资源的代码

while(true)
{
进入区//检查资源
临界区//访问资源
退出区//恢复资源
剩余区//剩余代码
}

同步机制应该遵循的规则:
空闲让进
忙则等待
有限等待:请求进入临界区的进程等待时间是有限的,不能让进程陷入“死等”状态,受惠的是进程自己。
让权等待:当进程不能进去自己的临界区,应该立即释放处理机,免得进程陷入死等状态,受惠的是其他进程。

其中,死等状态和忙等状态:
死等状态:
进程在有限时间内根本不能进入临界区,而一直在尝试进入,陷入一种无结果的等待状态。
(没有进入临界区的正在等待的某进程根本无法获得临界资源而进入进程,这种等待是无结果的,是死等状态~)-> 这个时候应该放弃这个无结果的事情,保证自己等待的时间是有限的

忙等状态:
当一个进程正处在某临界区内,任何试图进入其临界区的进程都必须进入代码连续循环,陷入忙等状态。连续测试一个变量直到某个值出现为止,称为忙等。
(没有进入临界区的正在等待的某进程不断的在测试循环代码段中的变量的值,占着处理机而不释放,这是一种忙等状态~)-> 这个时候应该释放处理机让给其他进程。

来自https://blog.csdn.net/liuchuo/article/details/51986201

2.进程同步机制

来自https://blog.csdn.net/bigpudding24/article/details/48608537和学长的笔记

(1)硬件机制

a.关中断:关闭中断,就不会发生进程切换
b.Test and set指令:给临界资源设置一个锁lock,在进程进入临界区之前,用testandset检查和修改标志lock,有进程已经访问互斥资源,设置为true,其他进程就无法访问了。
需要不断检测直到进程退出临界区。
c.swap指令:交换两个字节的内容。
在临界区设置一个共享布尔变量lock,初始值为false;在每个进程再设置一个局部布尔变量key。在进程要访问一个临界区时,先用swap指令交换key和lock的值,检测key的内容。有进程在临界区,重复检查和交换,直到进程退出临界区。
以上testandset指令和swap指令都是由硬件逻辑直接实现的原子操作,无法被中断。
硬件机制优点:适应任何进程数目,不管是单处理机还是多处理机;简单容易验证其正确性。

(2)常用

a.信号量机制:用一个整型数表示资源数目,只能通过原语操作down和up进行访问,即PV操作(二者成对出现)。
以下两段来自https://blog.csdn.net/bigpudding24/article/details/48608537
信号量机构是一种功能较强的机制,可用来解决互斥与同步的问题,它只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为“P操作”(通过)和“V操作(释放)”。
原语是指完成某种功能且不被分割不被中断执行的操作序列,通常可由硬件来实现完成不被分割执行特性的功能。如前述的“Test-and-Set”和“Swap”指令,就是由硬件实现的原子操作。原语功能的不被中断执行特性在单处理机时可由软件通过屏蔽中断方法实现。原语之所以不能被中断执行,是因为原语对变量的操作过程如果被打断,可能会去运行另一个对同一变量的操作过程,从而出现临界段问题。如果能够找到一种解决临界段问题的元方法,就可以实现对共享变量操作的原子性。

b.信号量机制的问题
累了,先不看了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值