计算机考研408 - 操作系统 - 核心知识点总结 - 第二章进程与线程(23考研408大纲)

本文详细介绍了操作系统中的核心知识点,包括进程的基本概念,如进程控制块(pcb)、进程状态及其转换,以及进程通信的方式。进一步讨论了线程的特性,区分了内核级线程和用户级线程。处理机调度方面,讲解了上下文切换、调度算法如FIFO、优先级调度,并探讨了死锁的预防和避免策略。此外,还涉及了进程同步与互斥的实现方法,如PV操作、管程以及经典同步问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统 - 核心知识点总结 - 第二章进程与线程

1.进程的基本概念

1)进程:即程序(静态代码)在一个数据集上的一次运行,是资源分配的基本单位。由程序段,数据段,pcb组成

2)pcb(进程控制块):是操作系统感知进程的唯一标识。pcb的组成包含:
(1)进程信息:进程id,进程状态,进程优先级等
(2)资源信息:代码段指针,数据段指针,堆栈段指针,文件描述符等
(3)处理机信息(cpu上下文):即为各种寄存器的值
在这里插入图片描述

3)进程控制(操作系统通过原语实现对进程的控制,下述为原语操作流程)
(1)创建操作:为进程分配pcb,分配进程所需资源(不分配cpu),初始化pcb,将进程插入就绪队列
(2)终止操作:根据进程标识符找到pcb,终止进程,终止其子孙进程,回收所有资源,删除进程pcb
(3)阻塞操作:根据进程标识符找到pcb,保存进程上下文到其pcb,插入阻塞队列
(4)唤醒操作:根据进程标识符找到pcb,将进程置为就绪态,插入就绪队列,等待分配cpu

4)进程的通信(3种方式)
(1)共享存储:通过共享的内存空间进行通信
(2)消息传递(一种系统调用):分为直接通信(直接将消息挂到进程的消息缓冲队列),间接通信(通过一种称为信箱的中介进行通信)
(3)管道通信:一种特殊的文件,存放在内存,半双工通信方式(即任一时刻仅能一个方向),不能同时读写,大小通常为4KB,写满则会阻塞写进程,要等到数据全部被读完才能继续写

5)进程(线程)的状态
在这里插入图片描述

2.线程

1)线程:又称轻量级进程,无独立的地址空间,同个进程内的线程共享进程的地址空间,基本不占有系统资源(除了一些线程私有指针),能共享所在进程的所有资源,是调度的基本单位

2)线程的实现
(1)内核级线程KLT:由操作系统提供,线程的切换需要用户态/核心态的转换
(2)用户及线程ULT:通过线程库实现(实质上就是通过程序模拟),可以在不支持线程的操作系统上实现,进程仍是系统调度的基本单位,由进程自行决定将获得的cpu分配给哪个线程,操作系统无感知

3.处理机(进程)调度

1)上下文切换:上下文即cpu中各种寄存器的值(cpu主要有两部分组成,分别为,运算器:包含通用寄存器组,程序状态字寄存器(也称标志寄存器)psw,变址寄存器,基址寄存器等;控制器:包含pc,IR寄存器,MAR寄存器,MDR寄存器等。可以结合计算机组成原理第5章进行理解),在进程切换时必定会引起cpu上下文的切换

2)上下文切换过程
(1)保存上下文到当前进程的pcb
(2)将当前进程插入就绪、阻塞队列
(3)选择新的进程,更新其pcb
(4)刷新上下文

3)调度程序(调度器)组成:排队器,分派器,上下文切换器
在这里插入图片描述4)调度的时机
(1)非剥夺方式:在进程运行结束,或者进程发生阻塞、异常时进行调度
(2)剥夺方式:在某进程处理中断返回时,进行cpu调度。
不允许进程调度的时机:中断处理过程,原语操作过程。注意:当进程在临界区时,允许将cpu分配给其他进程,但是其他进程若要进入相同的临界区则会被阻塞(真题考察过)

5)闲逛进程:当操作系统中没有就绪进程等待cpu时,则会运行闲逛进程,防止系统冻结(查过是这个原因但是没有深究)。当有进程进入就绪队列,闲逛进程则马上让出cpu,插回就绪队列。闲逛进程只有就绪和运行两种状态

6)进程调度算法
(1)先来先服务FIFS:按先来先服务的原则进行进程调度,有利于长作业/cpu密集型作业,不利于短作业/IO密集型作业。但是十分公平,不会引起进程的饥饿现象
(2)优先级调度算法:分为静态优先级(创建进程时确定优先级,运行期间不再改变);动态优先级(运行期间可以发生改变,一般的计算方法为等待时间越久优先级越大,占用cpu时间越长优先级越低)
(3)高响应比调度算法:响应比=(运行时间+等待时间)/运行时间。对短作业,或者等待时间较长的进程,有较高的响应比
(4)短作业优先调度算法SJF:优先调度运行时间最短的进程,对比其他调度算法具有最小的平均等待时间和平均周转时间(结论,真题考过)
(5)时间片轮转调度算法RR:每次为一个进程分配一个时间片的cpu,属于剥夺式调度算法,能较好的满足用户的交互性要求,但会频繁的进程上下文切换,效率较低
(6)多级反馈队列调度算法:操作系统设置多个优先级不同的就绪队列,每个队列可以使用不同的调度算法,当进程在优先级较高的队列的一次调度无法完成时,则插入优先级较低的队列继续等待cpu。只有当优先级高的队列均为空时,才会去调度优先级低的队列中的进程。

4.同步与互斥

1)临界资源:即操作系统中需要互斥访问(即任一时刻只能有一个进程使用)的资源(如打印机,缓冲区等)

2)临界区:进程中访问临界资源的那段代码

3)临界区应遵循的规则
(1)空闲让进
(2)忙则等待
(3)有限等待:即进程应在有限的时间内进入临界区
(4)让权等待:即进程无法进入临界区时主动让出cpu。其中1-3必须实现,而4不是实现临界区的强制性要求。

4)实现临界区互斥的基本方法
(1)软件实现:分为,
1.单标志法:通过一个整形变量,指定下一次准入的进程,不满足空闲让进
在这里插入图片描述2.双标志先检查法:通过扫描另一进程的flag判断另一个进程是否想要进入临界区,若另一进程不需要进入临界区,则将自己的flag置为1,表明将要进入临界区。注意:在机器指令层面,有可能是按照序号1,2,3,4的顺序执行(执行一条就切换到另一个进程),从而导致临界区不满足“忙则等待”的原则
在这里插入图片描述在这里插入图片描述3.双标志后检查法:先置自己的flag表明当前进程想要进入临界区,再扫描另一进程的flag。有可能导致两个进程都无法进入临界区(即两个进程先后分别将自己的flag置为true,然后两个都卡在while循环处),从而导致进程饥饿
在这里插入图片描述
4.Peterson算法:单标志法和双标志后检查法的结合,能正确实现临界区的互斥(注意上述1-3不能完全实现临界区的互斥),但未实现让权等待
在这里插入图片描述

(2)硬件指令实现:通过关中断实现(关中断后,无法进行进程的切换,因此当前进程能独占临界资源,从而实现互斥);通过testandset硬件指令实现;通过swap硬件指令实现

(3)通过pv操作实现:pv操作是一种系统原语,不是系统调用

5)进程的经典同步互斥问题
(关键要会根据经典模型,结合题目要求进行pv操作的安排,以及确定信号量,可以当成一道小代码题,实质就是通过pv操作实现进程的同步与互斥)
(1)生产者-消费者模型:模型简化为临界区需要互斥访问,且生产者-消费者之间存在同步关系。因此需要定义3个信号量,一个信号量用于临界区的互斥访问,且临界区有大小限制时,需要另外2个信号量用于进程同步以及控制临界区大小(若仅用一个信号量虽然可以实现同步,但无法控制临界区大小)
(2)读者-写者模型:读读共享,读写互斥,写写互斥。需要一个信号量mutex实现临界区互斥,然后为了实现读读共享,需要通过一个计数值,记录读进程个数,而这个计数值同样需要互斥访问,因此还需要一个信号量
(3)哲学家进餐模型:核心思想类似于防止死锁所需要的最少资源数这类题型,可以设想有n位哲学家,只需要最多允许n-1个哲学家竞争筷子,则一定会有一个顺利完成,然后释放资源,则其他进程也能顺利完成

6)管程
若由用户通过代码执行pv操作,十分容易造成死锁,因此将对临界资源的管理交由管程实现,能减少死锁出现的可能。注意:管程不经能实现进程的互斥,也能实现进程的同步。
(1)管程的组成:1.管程名称;2.对共享资源的抽象数据结构;3.对抽象数据结构的操作语句;4.设置初值语句
(2)条件变量:实质就是一个阻塞队列,用于配合管程管理需要阻塞的进程。不同的条件变量可以对应不同的阻塞原因。条件变量提供wait()和signal()两种操作,wait()操作是进程在知道有其他进程在访问管程的时候,自行调用将自己插入对应的条件变量;而signal()是访问管程的进程在退出管程时,用于将在条件变量的进程唤醒。注意:条件变量中的wait()和signal()操作不同于信号量的wait()和signal()操作(即pv操作),原因是条件变量中的wait()和signal()操作不会对共享资源的数量++或–,而pv操作会对临界资源的数量进行++或–

5.死锁

1)死锁:即进程间由于资源竞争,或者进程推进顺序不正确,所导致的一种系统僵持局面。注意:死锁所牵涉的进程数量一定 >= 2个,仅一个进程自己不可能发生死锁。

2)产生死锁的4个必要条件
(1)互斥:解决方法,通过诸如spooling等技术,将设备改为共享设备
(2)不可剥夺
(3)请求与保持:解决方法,一次分配给进程其所需要的所有资源
(4)循环请求:解决方法,给资源编号,仅允许进程按编号递增的方式申请资源

3)死锁的避免
(避免系统进入不安全状态,只要系统处于安全状态,则一定不会发生死锁;但是当系统处于不安全状态时,可能会发生死锁;死锁则一定为不安全状态)
银行家算法:根据题目分析出各种可用资源个数,查找是否存在安全分配序列

4)死锁的检测与解除
(1)死锁检测:通过资源分配图,判断资源分配图能否完全化简,若能完全化简则系统没有发生死锁,否则发生死锁。什么是资源分配图的完全化简?就是根据进程的请求,先满足某个进程,然后删除该进程以及其所连接的边(申请边/分配边),对所有进程逐一完成上述操作,若所有进程都能满足需求,则称资源分配图能完全化简

2)死锁解除方法:1.资源剥夺法;2.进程回撤法;3.进程撤销法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值