《Java 后端面试经》操作系统篇
什么是进程?什么是线程?进程和线程间的区别?
进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发。
线程是进程的子任务,是 CPU 调度的基本单位,用于保证程序的实时性 ,实现进程内部并发。
区别:
- 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
- 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。
- 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
- 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
并发和并行有什么区别?
串行在时间上不可能发生重叠,前一个任务结束之后,后一个任务才能开始。
并发:两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,微观上是交替发生的。
并行:两个或多个事件在同一时刻发生。
同步和异步的区别
同步:指一个进程在执行某个请求的时候,若该请求需要一段时间才能返 回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。
异步:指进程不需要一直等下去, 而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效 率。
死锁的产生条件与解决方案
- 互斥使用(资源独占):一个资源每次只能给一个进程使用
- 占有且等待(请求和保持,部分分配):进程在申请新的资源的同时保持对原有资源的占有
- 不可抢占(不可剥夺):资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放
- 循环等待:存在一个进程等待队列 {P1 , P2 , … , Pn},其中 P1 等待 P2 占有的资源,P2 等待 P3 占有的资源,…,Pn 等待 P1 占有的资源,形成一个进程等待环路。
当死锁产生的时候一定会有这四个条件,有一个条件不成立都不会造成死锁。
产⽣死锁的四个必要条件是:互斥条件、持有并等待条件、不可剥夺条件、循环等待条件。
那么避免死锁问题就只需要破环其中⼀个条件就可以,最常⻅的并且可⾏的就是使⽤资源有序分配法,来破坏循环等待条件。