操作系统面试题及解答
Question:进程的五种基本状态,以及转换过程?
Answer:
注意:阻塞状态不能直接变为运行状态,必须经过就绪之后,由就绪态转换为运行态。
Question:
进程和线程的区别?
Answer:
区别 进程 线程 根本区别 资源分配的基本单位 调度和执行的基本单位。 开销 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销 线程可以看做轻量级进程,一个进程的多个线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小 所处环境 在操作系统中能同时运行多任务(程序) 在同一应用程序(同一个进程中)有多个顺序流同时执行(前提是多核CPU) 分配内存 系统在运行时会为每个进程分配不同的内存区域,进程不可以共享内存 除了CPU之外,不会为线程分配内存(线程能使用的资源是他所属进程的资源),线程只能共享这些资源,线程可以共享内存 包含关系 没有线程的进程可以被看做单线程的,如果一个进程拥有多个线程,则执行过程不是一条线顺序执行的,而是多个线程并行执行共桶完成 线程是进程的一部分,不能脱离进程而存在
Question:
为何线程的切换开销小,而进程的切换开销比较大呢?
Answer:
因为
Question:
多进程和多线程?
Answer:
Question:
并行和并发的区别?
Answer:
并行:两个或者多个事件在同一时刻发生,只有在多CPU的机器上才行。
并发:在单核CPU的机器上,宏观上看,两个或者多个事件在同一时间间隔内发生;微观上看,每一时刻,仅有一道程序执行。利用时间片轮转切换进程。
Question:
进程间通信的方式?
Answer:
1、信号量(互斥信号量、整型信号量、记录型信号量、AND型信号量、信号量集)
2、共享内存
3、管道
4、RPC和Socket
Question:
进程调度的几种算法
Answer:
1、先到先服务(FCFS)
2、优先级调度算法
3、时间片轮转算法
4、多队列调度算法
Question:
死锁问题
Answer:
进程继续执行的条件是获得 其他进程所占有的资源,如果其他进程都发生阻塞,谁也不释放资源,每个进程都无限期地等待,出现死锁
Question:
产生死锁的条件
Answer:
1、互斥的资源:对申请到的资源进行排他性使用。
2、请求和保持资源:已申请到某些资源,但又需要申请新的资源,而需要申请的资源被其他进行占用,造成阻塞,并且不释放自己已申请的资源。
3、不可抢占型资源:一个资源在一个进程使用完之前,不能被强占,只能使用完之后自己释放。
4、循环等待:多个进程对资源的申请形成了一个环。
Question:
怎么避免死锁
Answer:
1、一个进程运行之前,一次性申请所需的全部资源。优点是不会造成死锁,缺点:造成资源浪费。
2、如果进程提出新资源的请求不能得到满足的时候,必须释放已经申请到了的资源。
Question:
怎么解除死锁
Answer:
终止进程,两种方式
1、终止所有进程2、逐个终止进程
存在的问题:使用什么策略终止进程,很难估计。
Question:
页面置换算法
Answer:
1、最佳置换算法(Optimal):选择淘汰的页都是以后永不使用的,或者说未来最长时间内不再访问的页面。优点:保证最低的缺页率;缺点:无法实现,因为无法预知进程运行过程需要那些也。但可以用来评价其他算。
2、先进先出算法(FIFO):优点:实现简单;缺点:只淘汰在主存中停留最久的,不考虑其他问题,可能最常使用的页面是最长访问的页面,所以效率不高。
3、最近最久未使用算法(LRU):优点:效率高;缺点:实现起来困难,需要硬件上的支持。
4、最少使用算法(LFU):缺点:并不能真正反应页面的使用情况。
Question
页面置换算法可能引起什么异常?为什么会出现这种异常?
Answer
可能会出现“抖动”现象。
当不断增加系统中运行的进程,那么分配给每一个进程的物理块(用来保存页)的数量就会减少,即使使用高效的页面置换算法,也会因为物理块的减少(能保留的页的数量减少),导致频繁的出现缺页现象,不能满足进程正常运行的基本要求,必须请求系统将所需要的页调入内存,使得系统中排队等待页面调进/调出的进程数目增加,降低对磁盘的有效访问,造成每个进程大部分的时间都用于页面的换入换出,几乎不能再去做任何工作,从而导致处理机的利用率急剧下降并趋于0的情况,这个情况就是“抖动”状态。
Question:
磁盘调度算法-扫描(scan)算法
Answer:
Question:磁盘调度算法-循环扫描(CSCAN)算法
Answer: