操作系统面试题整理-四年经验
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1.进程的通信方式
管道
管道pipe及命名管道named pipe 管道可用于具有亲缘关系的父子进程间的通信有名管道除了具有管道所具有的功能外它还允许无亲缘关系进程间的通信
信号
信号signal 信号是一种比较复杂的通信方式用于通知接收进程某个事件已经发生
消息队列
消息队列 消息队列是消息的链接表它克服了上两种通信方式中信号量有限的缺点具有写权限得进程可以按照一定得规则向消息队列中添加新信息对消息队列有读权限得进程则可以从消息队列中读取信息
共享内存
共享内存 可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作如互斥锁和信号量等
信号量
信号量 主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段
套接字
套接字 这是一种更为一般得进程间通信机制它可用于网络中不同机器之间的进程间通信应用非常广泛。
几种方式的比较
- 管道速度慢、容量有限
- 消息队列容量收到系统限制且要注意第一次读的时候要考虑上一次没有读完数据的问题。
- 信号量不能传递复杂信息只能用来同步。
- 共享内存能够很容易控制容量速度快但要保持同步比如一个进程在写的时候另一个进程要注意读写的问题相当于线程中的线程安全。
2.操作系统死锁
在两个或者多个并发进程中如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源在未改变这种状态之前都不能向前推进称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。
造成死锁的条件
互斥至少有一个资源必须属于非共享模式即一次只能被一个进程使用若其他申请使用该资源那么申请进程必须等到该资源被释放为止
占有并等待一个进程必须占有至少一个资源并等待另一个资源而该资源为其他进程所占有
非抢占进程不能被抢占即资源只能被进程在完成任务后自愿释放
循环等待若干进程之间形成一种头尾相接的环形等待资源关系
解除死锁可以简单选择一个牺牲品强制回收资源来解除。
3.进程的状态
就绪获得除处理资源外的所有资源等待分配资源
运行占用CPU资源运行这类进程数量小于CPU核心数
阻塞进程处于等待状态条件满足前无法运行。
4.进程调度
-
FCFS(先来先服务队列实现非抢占的)先请求CPU的进程先分配到CPU
-
SJF(最短作业优先调度算法)平均等待时间最短但难以知道下一个CPU区间长度
-
优先级调度算法(可以是抢占的也可以是非抢占的)优先级越高越先分配到CPU相同优先级先到先服务存在的主要问题是低优先级进程无穷等待CPU会导致无穷阻塞或饥饿解决方案老化
-
时间片轮转调度算法(可抢占的)队列中没有进程被分配超过一个时间片的CPU时间除非它是唯一可运行的进程。如果进程的CPU区间超过了一个时间片那么该进程就被抢占并放回就绪队列。
-
多级队列调度算法将就绪队列分成多个独立的队列每个队列都有自己的调度算法队列之间采用固定优先级抢占调度。其中一个进程根据自身属性被永久地分配到一个队列中。
-
多级反馈队列调度算法与多级队列调度算法相比其允许进程在队列之间移动若进程使用过多CPU时间那么它会被转移到更低的优先级队列在较低优先级队列等待时间过长的进程会被转移到更高优先级队列以防止饥饿发生。
5.进程和线程的区别
进程指在系统中正在运行的一个应用程序程序一旦运行就是进程进程——资源分配的最小单位。
线程系统分配处理器时间资源的基本单元或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。