🥪🥪🥪各位好,我是小饼干🍪,一个编程界的小学生,每天都希望学习一点点编程相关。最近在学操作系统,整理了一些笔记,如果有不足,非常感谢指正,欢迎跟我一起学习呀,感谢各位的驻足,笔芯♥。
目录
4.3进程的阻塞(block原语)与唤醒(wakeup原语)
1.前趋图和程序执行
1.1前趋图
是一个有向无循环图,图中的每个结点可用来表示一个进程或者程序段,乃至一个语句,结点间的有向边则表示两个结点之间存在偏序或前驱关系。
1.2程序顺序执行
1.2.2特征
①顺序性
②可再现性
1.3程序并发执行
只有不存在前趋关系的程序之间才有可能并发执行,否则无法并发执行。
1.3.1程序的并发执行
1.3.2特征
①间断性
②失去封闭性
2.进程
2.1进程的定义
🍇进程:由程序段,相关的数据段和PCB三部分构成进程实体。(一般情况下我们把进程实体称为进程)
🍈所谓创建进程就是创建进程实体中的PCB,撤销进程就是撤销进程的PCB(PCB是进程存在的唯一标准)
🍉进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
PCB介绍
🌽PCB记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息
🌶OS是根据PCB来对并发执行的进程进行控制和管理的。
🫑PCB记录操作系统所需数据,而程序段和数据段记录程序本身运行所需数据
2.2进程的特征
🥑动态性:进程是程序的一次执行过程,是动态地产生,变化和消亡、
🍆并发性:内存中有多个进程实体,各进程可并发执行
🥔独立性:进程是能独立运行,独立获得资源,独立接受调度的基本单位
🥕异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
3.进程的基本状态以及转换
3.1基本状态
①就绪:进程已分配到除了CPU以外的所有必要资源后,只需要再获得CPU,便可立即执行。
②运行:指进程已获得CPU,程序正在执行的状态
③阻塞:正在执行的进程由于发生某件事暂时无法继续执行的状态,(等待操作系统分配打印机,等待读磁盘操作的结果,CPU是计算机中最昂贵的部件,为了提高CPU的利用率,需要首先将其他进程需要的资源分配到位,才能得到CPU的服务)
3.2转换
3.3创建状态和终止状态
创建状态:进程正在被创建,操作系统为进程初始化PCB,分配资源。创建状态结束后,该进程转入就绪状态。
终止状态:进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB
3.4挂起操作和进程状态的转换
挂起
激活
3.5进程管理中的数据结构
3.5.1操作系统中用于管理控制的数据结构
①在计算机系统中,对于每个资源和每个进程都设置了一个数据结构,用于表征其实体,我们称之为资源信息表或进程信息报表。
②OS管理的这些数据结构一般分为以下四类:内存表、设备表、文件表PCB。
3.5.2PCB的作用
① 作为独立运行基本单位标志
②能实现间断性运行方式
③提供进程管理所需要的信息
④实现与其他进程的同步与通信
3.5.3PCB中的信息
①进程标识符:外部标识符和内部标识符
②处理机状态
③进程调度信息:进程调度状态和进程优先级
④进程控制信息
4.进程控制
4.1概念
进程控制:是对系统中所有的进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换等功能
原子操作:一个操作中的所有动作,要么全做,要么全不做,换言之,它是一个不可分割的基本单位。
4.1创建进程(用Creat原语)
①申请空白PCB
②为新进程分配其运行所需的资源,包括各种物理和逻辑资源,如内存、文件、I/O设备被和CPU时间
③初始化进程控制块:初始化标识信息,初始化处理机状态信息,初始化处理机控制信息
④如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
4.2进程的终止
①正常结束
②异常结束
③外界干预
4.3进程的阻塞(block原语)与唤醒(wakeup原语)
4.3.1引起阻塞和唤醒的事件
①向系统请求共分享资源失败,进程会转为阻塞状态。在其他进程释放资源时,请求进程才被唤醒。
②等待某种操作的完成。操作完成后由中断处理程序将该进程唤醒。
③新数据尚未到达。数据到达后便可唤醒。
④等待新任务到达。
4.4进程的挂起(suspend)与激活(active)
5.进程同步
5.1进程同步的基本概念
如果不能采取有效的措施,对多个进程的运行进行妥善的管理,必然会因为这些进程对系统资源的无序争夺给系统造成混乱,致使每次处理结果存在着不确定性,即显现出其不可再现性。所以进入了进程同步机制。
5.1.1两种形式的制约关系
①直接相互制约关系
②间接相互制约关系
5.1.2临界资源
在生产者与消费者问题中,解决问题的关键是把变量counter作为临界资源处理,亦即,令生产者和消费者进程互斥地访问变量counter
5.1.3临界区
5.1.4同步机制应遵循地规则
①空闲让等
②忙则等待
③有限等待
④让权等待
5.2硬件同步机制
5.3信号量机制
为了解决进程同步和进程互斥问题
5.3.1整型信号量
🍞用一个整数型变量作为信号量,数值表示某种资源
🥐对信号量只能进行初始化、P、V三种操作(wait(S)、signal(S))
🥖不遵循让权等待
5.3.2记录型信号量
🥩S.value表示某种资源数,S.L指向等待该资源的队列
🍱P操作中,一定是S.value--,之后可能执行block原语
🍘V操作中,一定是S.value++,之后可能执行wakeup原语
🍠注意:需要自己推断什么条件下执行block或者wakeup
5.3.3AND型信号量
5.3.4信号量集
6.经典进程同步的问题
6.1生产者-消费者问题
🏟实现互斥的wait(mutex)和signal(mutex)必须成对出现
🏛对资源信号量empty和full的wait和signal操作,同样需要成对地出现
6.2哲学家进餐问题
6.2.1解决方案
⛲最多只允许有四位哲学家同时去拿他左边地筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时释放出他用过地两个筷子,从而使更多地哲学家能够进餐。
⛺仅当哲学家的左、右两只筷子均可使用时,才允许他拿起筷子进餐。
🌁规定奇数号哲学家先拿起他左边的筷子,然后再去拿右边的筷子,而偶数号哲学家则相反,按此规定,将是1、2号哲学家竞争1号筷子,3、4号哲学家竞争3号筷子,即五位哲学家都先竞争奇数号筷子,获得后,再去争夺偶数号筷子,最后总会有一位哲学家能获得两只筷子而进餐