操作系统面试点

版权声明:本文为RoundYuan原创文章,转载请注明出处! https://blog.csdn.net/ProgramMonika/article/details/83119927

一、操作系统的基本特性

1、并发:同一段时间内多个程序执行
注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件
2、共享:系统中的资源可以被内存中多个并发执行的进线程共同使用
互斥访问:如打印机
同时访问:只是看起来是同时的,其实底层不是同时的
3、虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟 为多个
4、异步:系统中的进程是以“走走停停”的方式执行的,且以一种不可预知的速度推进

二、操作系统的功能
1、处理机管理
进程控制、进程同步、进程通信、调度
2、存储器管理
内存分配 、内存保护、地址映射、内存扩充
3、设备管理功能
4、文件管理功能
文件存储空间的管理、目录管理、文件读/写保护和管理
5、操作系统和用户之间的接口
6、现代操作系统的新功能
三、进程状态与转换
在这里插入图片描述
四、进程与线程的区别
看我的另一篇帖子
https://blog.csdn.net/ProgramMonika/article/details/83007145

五、进程通信

在线程间的通信是较为方便的,
线程间的通信就要复杂点了。


0、进程通信是指进程间的信息交换。由于进程的互斥和同步,需要在进程间交换一定的信息,故不少学者归为进程通信,但只能把它们称为低级通信。效率低、通信对用户不透明

高级通信:
1、共享存储

a、基于共享数据结构的通信方式。
b、基于共享存储区的通信方式。

2、管道通信系统

所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件

3、消息传递系统(Message passing system)

1、直接通信方式,是指发送进程利用OS所提供的发送原语,直接把消息发送给目标进程
2、间接通信方式,是指发送和接受进程,都通过共享中间实体(称为邮箱)的方式进行消息的发送和接受,完成进程间的通信。

4、客户机-服务器系统

1、套接字
2、远程过程调用和远程方法调用

六、进程同步
多进程虽然提高了系统资源利用率和吞吐量,但是由于进程的异步性可能造成系统的混乱。进程同步的任务就是对多个相关进程在执行顺序上进行协调,使并发执行的多个进程之间可以有效的共享资源和相互合作,保证程序执行的可再现性

同步机制需要遵循的原则:

空闲让进:当没有进程处于临界区的时候,应该许可其他进程进入临界区的申请

忙则等待:当前如果有进程处于临界区,如果有其他进程申请进入,则必 须等待,保证对临界区的互斥访问

有限等待:对要求访问临界资源的进程,需要在有限时间内进入临界区,防止出现死等

让权等待:当进程无法进入临界区的时候,需要释放处理机,边陷入忙等 经典的进程同步问题:生产者-消费者问题;哲学家进餐问题;读者-写者问题 同步的解决方案:管程,信号量。

七、死锁
1、产生原因:

a、竞争资源
b、进程推进顺序不合理

2、死锁产生的必要条件

互斥条件:进程对所分配的资源进行排他性的使用
请求和保持条件:进程被阻塞的时候并不释放锁申请到的资源
不可剥夺(抢占)条件:进程对于已经申请到的资源在使用完成之前不可以被剥夺
环路等待条件(循环等待条件):发生死锁的时候存在的一个 进程-资源 环形等待链

3、处理死锁的方法

预防死锁:破坏产生死锁的4个必要条件中的一个或者多个;实现起来比较简单,但是如果限制过于严格会降低系统资源利用率以及吞吐量
!:银行家算法后期展开

避免死锁:在资源的动态分配中,防止系统进入不安全状态(可能产生死锁的状态)-如银行家算法

检测死锁:允许系统运行过程中产生死锁,在死锁发生之后,采用一定的算法进行检测,并确定与死锁相关的资源和进程,采取相关方法清除检测到的死锁。实现难度大

解除死锁:与死锁检测配合,将系统从死锁中解脱出来(撤销进程或者剥夺资源)。对检测到的和死锁相关的进程以及资源,通过撤销或者挂起的方式,释放一些资源并将其分配给处于阻塞状态的进程,使其转变为就绪态。实现难度大

八、进程调度算法

先来先服务调度算法FCFS:既可以作为作业调度算法也可以作为进程调度算法;按作业或者进程到达的先后顺序依次调度;因此对于长作业比较有利;

短作业优先调度算法SJF:作业调度算法,算法从就绪队列中选择估计时间最短的作业进行处理,直到得出结果或者无法继续执行;缺点:不利于长作业;未考虑作业的重要性;运行时间是预估的,并不靠谱 ;

高响应比算法HRN:响应比=(等待时间+要求服务时间)/要求服务时间;

时间片轮转调度RR:按到达的先后对进程放入队列中,然后给队首进程分配CPU时间片,时间片用完之后计时器发出中断,暂停当前进程并将其放到队列尾部,循环 ;

多级反馈队列调度算法:目前公认较好的调度算法;设置多个就绪队列并为每个队列设置不同的优先级,第一个队列优先级最高,其余依次递减。优先级越高的队列分配的时间片越短,进程到达之后按FCFS放入第一个队列,如果调度执行后没有完成,那么放到第二个队列尾部等待调度,如果第二次调度仍然没有完成,放入第三队列尾部…。只有当前一个队列为空的时候才会去调度下一个队列的进程。

九-1、基于顺序搜索的动态分区算法

首次适应(First Fit)算法:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。

循环首次适应算法:从上次找到的空闲分区的下一个空闲分区开始查找,直到找到合适的。到了最后再返回重新找

最佳适应(Best Fit)算法:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。

最坏适应(Worst Fit)算法:又称最大适应(Largest Fit)算法,空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是挑选出最大的分区。

九-2、基于索引搜索的动态分区分配算法
1、快速适应算法

step1:根据进程长度,从索引表中去寻找能容纳的最小空闲分区表
step2:从链表中取下一块分区就好

2、伙伴系统

十、页面置换算法

最佳置换算法:只具有理论意义的算法,用来评价其他页面置换算法。置换策略是将当前页面中在未来最长时间内不会被访问的页置换出去。

先进先出置换算法:简单粗暴的一种置换算法,没有考虑页面访问频率信息。每次淘汰最早调入的页面。

最近最久未使用算法LRU:算法赋予每个页面一个访问字段,用来记录上次页面被访问到现在所经历的时间t,每次置换的时候把t值最大的页面置换出去(实现方面可以采用寄存器或者栈的方式实现)。

时钟算法clock(也被称为是最近未使用算法NRU):页面设置一个访问位,并将页面链接为一个环形队列,页面被访问的时候访问位设置为1。页面置换的时候,如果当前指针所指页面访问为为0,那么置换,否则将其置为0,循环直到遇到一个访问为位0的页面。

改进型Clock算法:在Clock算法的基础上添加一个修改位,替换时根究访问位和修改位综合判断。优先替换访问位和修改位都是0的页面,其次是访问位为0修改位为1的页面。

最少使用算法LFU:设置寄存器记录页面被访问次数,每次置换的时候置换当前访问次数最少的。


猜你喜欢

转载自blog.csdn.net/ProgramMonika/article/details/83119927