考研复试操作系统面试题(二)-进程管理

写作目的:为了应对考研复试中的面试,我整理了导师可能提问的地方,力求用口语化的语言描述出来。

这只是一部分,陆续还有操作系统的其它章节,还会推出数据结构、计算机网络、数据库的复试题整理

思维导图在我的processon。如果对你有帮助就打赏一下吧。

https://www.processon.com/view/link/5e79c7ede4b06b852ff3a8e2

目录

进程的定义是什么?

进程的状态与状态之间的转换

进程间的三种通讯方式

管道通信的特点

线程的定义是什么?

线程与进程的区别

线程的两种实现方式

三种多线程模型

处理机的三级调度

三级调度之间的联系

为什么要进行处理机调度

不能进行进程调度与切换的情况

应该进行进程调度和切换的情况

经典的调度算法的特点

概念:临界资源、临界区、互斥、同步

同步机制遵循的原则

实现临界区互斥的基本方法

什么是管程

死锁的定义和形成的原因

描述三种死锁处理策略

比较三种策略的优缺点

如何预防死锁

描述银行家算法

死锁的解除方法


进程的定义是什么?

进程是进程实体运行的过程,是系统资源分配和调度的独立单位。进程实体是由PCB块、相关的数据段、程序段三部分组成。

进程的状态与状态之间的转换

进程有 新建、就绪、运行、阻塞、终止五个状态。

新建可以到就绪状态,就绪可以到运行状态,运行可以到阻塞状态也可以就绪状态

阻塞可以到就绪状态但不能直接到运行状态。

当进程等待某一资源到来是就由就绪状态变成了阻塞状态,这是后剥夺了处理机的使用权,但等待的资源得到满足之后,就由阻塞状态变成了就绪状态。

进程间的三种通讯方式

共享存储、消息传递、管道通信

共享存储:通信进程之间存在一块可以直接访问的共享空间,通过对这块空间进行读写操作实现进程之间的信息交换。操作系统会为进程提供可共享使用的存储空间和同步互斥工具。

消息传递:进程间的数据交换以格式化的消息为单位,操作系统提供发送消息和接受消息的两个原语进行数据交换。有分为直接通信方式和间接通信方式。

管道通信:管道是指用于连接一个读进程和一个写进程以实现他们之间的通信的一个共享文件。写进程向管道写入数据,读进程向管道读取数据,所以管道机制必须提供:互斥、共享、确定对方存在的功能。

管道通信的特点

1、管道大小有限制,一般为4kb。2、读进程可能比写进程快。发生这种情况,读进程被默认阻塞。

3、半双工通信,某一时刻是能单向传输,如果要实现两个进程双向通信,只能申请两个管道。

线程的定义是什么?

线程可以理解为轻量级的进程,它是基本的CPU执行单元。由线程id、程序计数器、寄存器集合、和堆栈组成。线程不独立拥有资源。

线程与进程的区别

1、调度。线程是CPU调度的基本单位。

2、资源。进程是资源分配的基本单位,线程不独立拥有资源,但可以访问隶属进程的资源。

3、并发性。引入线程就是为了获得更好的并发性。

4、开销。进程的创建、撤销和切换都要有资源的分配和回收,开销远大于线程的切换。

5、地址空间和其它资源。进程的地址空间都是独立的,而线程可以共享隶属进程的地址空间和资源。

6、通信方面。进程之间通信需要用进程通信手段实现,而线程间通信可以直接读写数据段。

线程的两种实现方式

两种:用户级线程、内核级线程

用户级线程中,线程的管理都在应用程序中进行,系统会提供一个多线程的函数库,系统感知不到用户定义的多线程的存在。

内核级线程:线程的管理都在操作系统中完成,用户只有一个到内核级线程的编程接口。

三种多线程模型

多对一:多个用户级线程映射到一个内核级线程上。优点是线程管理在用户空间,效率高。缺点是一个线程阻塞,所有的线程都会阻塞。

一对一:一个用户级线程对应一个内核级线程。优点是一个线程阻塞之后,其它线程还可以继续运行,提高了效率。缺点是开销比较大。

多对多线程。是一个折中。

处理机的三级调度

作业调度(高级调度)、内存调度(中级调度)、进程调度(低级调度)。

高级调度:把作业从外存中取出,给它分配内存和其它资源,让它称为一个进程,是其能具备竞争处理机的条件。它是主存和辅存之间的调度。一个作业只调入一次调出一次。

中级调度:作用是提高内存利用率和系统吞吐量。将那些不能运行的进程挂起到外存,如果他们已经具备运行条件,有稍微有些空闲,由中级调度决定外存上的进程重新调入内存,并修改为就绪态。

进程调度:是操作系统最基本的调度。按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。调度频率非常高。

三级调度之间的联系

①作业调度为进程活动做准备,进程调度使进程被执行,中级调度将不能运行的进程挂起,将具备条件的进程设置就绪。②作业调度、内存调度、进程调度频率递增;③进程调度使最基本的不能缺少。

为什么要进行处理机调度

如果没有处理机调度,意味着当前进程运行完之后,下一个进程才能执行,进程运行的时候通常会等待IO设备,就造成了出来及资源的浪费。有了处理机调度,可以在IO等待的时候,让处理机处理其它的就绪进程,提高了系统效率。

不能进行进程调度与切换的情况

1、处理中断的过程中;2、进程在操作系统内核临界区;3、其它完全需要屏蔽中断的原子操作过程中。

应该进行进程调度和切换的情况

1、发生引起调度的条件且当前进程无法继续运行下去

2、中断处理结束或陷入处理结束,返回被中断进程的用户态程序执行线程,若置上请求调度标志,可以马上进行调度和切换。

经典的调度算法的特点

1、先来先服务。有利于CPU繁忙作业,不利于IO繁忙作业。有利于长作业,不利于短作业。

2、短作业优先。不利于长作业,未考虑作业的紧迫程度;平均等待时间和平均周转时间最少。

3、优先级调度算法。可以设置紧迫程度、参照以下原则设计:系统进程大于用户进程、交互进程大于非交互进程、IO进程大于计算进程。

4、高响应比优先算法。克服饥饿,兼顾了场作业。

5、时间片轮转。用于分时系统,需要选择合适大小的时间片。

6、多级反馈队列调度算法。优点如下:终端型作业,短作业优先;短批处理作业,周转时间短;长批处理作业,经过前几个队列得到部分执行,不会长期不执行。

概念:临界资源、临界区、互斥、同步

临界资源:每次只允许一个进程访问的资源称为临界资源。

临界区:访问临界资源的那段代码称为临界区

同步:直接制约关系,两个进程在时间上有先后关系。

互斥:简介制约关系,当一个进程进入临界区,另一个必须等待。

同步机制遵循的原则

空闲让进、忙则等待、有限等待、让权等待。

实现临界区互斥的基本方法

单标志法、双标志先检查、双标志后检查、皮特森算法。硬件方法。信号量法。

什么是管程

管程是由一组数据及定义在这组数据上的对数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。

管程的组成:局部于管程的数据,对数据结构的操作,对局部于管程的数据设置的初始化语句。

管程的基本特性:局部于管程的数据只能被局部与管程的过程访问;一个进程只有调用管程内的过程才能进入管程访问共享数据;每次就允许一个进程在管程内执行某内部操作。

死锁的定义和形成的原因

死锁是多个进程因竞争资源而造成的一种僵局,没有外力作用,都无法继续执行。

原因:对不可剥夺的资源你的竞争;进程的非法顺序推进;满足死锁产生的必要条件。

死锁产生的必要条件:请求保持、不可剥夺、循环等待、互斥条件

描述三种死锁处理策略

死锁预防、避免死锁、死锁的检测和解除

比较三种策略的优缺点

 

如何预防死锁

破坏死锁形成的四个必要条件之一就可以。

描述银行家算法

进程首次申请资源,测试最大申请量(max),如果系统满足就按照当前申请量(now)分配,否则就推迟。再次提起申请时,测试本次申请量加已经分配的资源量(now2+now)是否大于最大申请量max,如果大于就推迟分配,如果小于等于就测试当前的申请量是否大于系统空闲资源量,如果大于就推迟分配,否则按照当前申请量(now2)分配.

死锁的解除方法

先用资源换分配图判定死锁。通过撤销某死锁进行、回退进程、剥夺进程资源法可以解除死锁。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章