操作系统相关面试总结

1.操作系统的四个特性

并发,共享,虚拟,异步

2.进程的状态与转换

 

3.进程和线程区别

(1)一个程序至少有一个进程,一个进程至少有一个线程。线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位;
(2)进程拥有独立的内存单元,而多个线程共享内存。从而线程效率更高;
(3)进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮;
(4)进程切换时,耗费资源较大,效率要差一些;
(5)进程是系统资源分配的基本单位,线程是调度的基本单位。

4.进程同步机制

空闲让进,忙则等待,有限等待,让权等待

5.死锁处理

预防死锁,避免死锁,检测死锁,解除死锁

6.进程调度算法

(1)先来先服务调度算法FCFS:既可以作为作业调度算法也可以作为进程调度算法;按作业或者进程到达的先后顺序依次调度;因此对于长作业比较有利;
(2)短作业优先调度算法SJF:作业调度算法,算法从就绪队列中选择估计时间最短的作业进行处理,直到得出结果或者无法继续执行;缺点:不利于长作业;未考虑作业的重要性;运行时间是预估的,并不靠谱 ;
(3)高响应比算法HRN:响应比=(等待时间+要求服务时间)/要求服务时间;
(4)时间片轮转调度RR:按到达的先后对进程放入队列中,然后给队首进程分配CPU时间片,时间片用完之后计时器发出中断,暂停当前进程并将其放到队列尾部,循环 ;
(5)多级反馈队列调度算法:目前公认较好的调度算法;设置多个就绪队列并为每个队列设置不同的优先级,第一个队列优先级最高,其余依次递减。优先级越高的队列分配的时间片越短,进程到达之后按FCFS放入第一个队列,如果调度执行后没有完成,那么放到第二个队列尾部等待调度,如果第二次调度仍然没有完成,放入第三队列尾部…。只有当前一个队列为空的时候才会去调度下一个队列的进程。

7.内存连续分配首次适应(First Fit)算法:

空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。
最佳适应(Best Fit)算法:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。
最坏适应(Worst Fit)算法:又称最大适应(Largest Fit)算法,空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是挑选出最大的分区。

8.用户态切换到内核态的3种方式

1. 系统调用:这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。
2. 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
3. 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
4. 外围设备的中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断

9.死锁产生的必要条件

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

10.进程线程形象描述

1.单进程单线程:一个人在一个桌子上吃菜。
2.单进程多线程:多个人在同一个桌子上一起吃菜。
3.多进程单线程:多个人每个人在自己的桌子上吃菜。

 

posted @ 2018-03-02 10:00  岁月无言成追忆  阅读(239)  评论(0编辑  收藏  举报