【操作系统笔记】第二章 进程管理

2.1 进程的基本概念: 状态转换

2.1.1 程序执行状态

程序执行分为顺序执行并发执行

顺序执行:
在这里插入图片描述

程序顺序执行特点

  • 顺序性:处理机的操作严格按程序所规定的顺序执行,即每一操作必须在上一个操作结束后开始。

  • 封闭性:程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响

  • 可再现性:只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。

(程序顺序执行的特性为程序员检测和校正程序错误带来很大的方便!)

程序并发执行:
在这里插入图片描述

  • 程序内保持 Ii→Ci→Pi 程序逻辑顺序性。
  • 存在Ii→Ii+1;Ci→Ci+1; Pi→Pi+1:表明系统资源竞争带来顺序性前趋关系。
  • 不同程序之间 Ii+2、Ci+1 和Pi ,没有前趋关系,说明可以并发执行,这是系统的并发性。

在这里插入图片描述

程序并发执行的特征

  • 间断性/异步性:程序在并发执行时,由于它们共享资源或为完成某一项任务而合作,致使在并发程序之间存在相互制约的关系。(当完成C2 ,但尚未完成I3 ,则无法进行C3 处理(暂停)。这时程序的顺序性演变成间断性。)
  • 非封闭性:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。(如:当处理机资源被其它程序占用时,有条件运行的任何程序都必须等待。)
  • 不可再现性:程序在并发执行时,由于失去了封闭性,也导致失去了可再现性。
    在这里插入图片描述

在某些情况下,程序的并发执行使得执行结果不再具有封闭性和可再现性,且可能造成出现错误(执行结果受执行速度影响的结果)。为了使在并发执行时不出现错误结果,必须采取某些措施来制约、控制各并发程序段执行速度(并发控制)为了控制和协调各程序执行过程中的软、硬件资源的共享和竞争,显然,必须应有一个描述各程序段执行过程和共享资源的基本单位,称为进程(或任务)

2.1.2 进程的定义、特征

本质定义:进程是一个动态的执行过程

进程process的基本特征:

  1. 结构性
    为了描述和记录进程的运动变化过程,并使之能正确运行,每个进程都应配置一个PCB。所以,从结构上看,每个进程(进程实体)都是由程序段、相关数据段及进程控制块PCB)组成。(进程=PCB+程序+数据集合)
  2. 动态性
    进程的实质是程序在处理机上的一次执行过程,因此是动态的。所以动态性是进程的最基本的特征。同时动态性还表现在进程是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤消而消亡。
  3. 并发性
    指多个进程实体同时存在于内存中,能在一段时间内同时运行。
  4. 独立性
    指进程是一个能独立运行的基本单位,也是系统进行资源分配和调度的独立单位。
  5. 异步性
    指进程以各自独立的、不可预知的速度向前推进。

注:进程与程序的主要区别:

  1. 进程动态的程序执行过程,程序静态的指令序列描述。

  2. 进程是暂时的(从创建到撤消),程序是永久的。

  3. 组成不同:进程(程序+数据+PCB)、程序(代码的集合)。

  4. 存在形式不同:进程存在于内存(至少其PCB在内存,如挂起状态时),程序存在于外存或纸张上甚至大脑里

  5. 进程与程序之间不是一一对应的。

程序进程
概念静态动态
所在存储器外存内存
存在时间永久有生命周期
组成有序指令程序段、数据段、PCB
对应关系一个程序可以对应一个或多个进程 一个进程可以对应一段程序、一个程序或(通过调用)多个程序

2.1.3 进程状态

由于多道程序系统中各进程之间存在相互制约关系,使得进程的状态不断发生变化(OS的异步性)。
进程的活动规律:执行—>暂停—>执行。

进程的三种基本状态

进程可能由于等待I/O操作、竞争资源、以及相互协作等原因产生了“走走停停”的动态性。因此,进程在生存期内至少具有三种基本状态就绪、运行、阻塞

进程在生存期间,可以多次地从一个状态转换到另一个状态,即多次地处于运行状态、就绪状态、阻塞状态,反映了并发程序“走走停停”的运行轨迹。进程不断地从一个状态转换到另一个状态是有条件或原因的。这些状态随着进程的执行和外界条件发生变化而转换。

2.2 进程控制:PCB

2.2.1 简介

进程控制块:是OS为了管理和控制进程的运行,而为每一个进程定义的一个数据结构,它记录了系统管理进程所需的全部信息。系统根据PCB而感知进程的存在,PCB是进程存在的唯一标志
在这里插入图片描述
进程控制块PCB中的信息主要包括4部分:

  1. 标识符信息:进程标识符PID、用户标识符UID
  2. 处理机状态信息:如PSW、PC等各寄存器的值(用于实现进程切换)
  3. 进程调度信息:进程状态(如就绪运行阻塞)
  4. 进程控制信息:如资源分配,程序和数据地址

2.2.2 进程控制块PCB的组织方式

常用组织方式:

  1. 链接方式
    把同一状态的PCB链接成一个队列,这样就形成了就绪队列、阻塞队列等。
    在这里插入图片描述

  2. 索引方式
    将同一状态的进程组织在一个索引表中,索引表的表项指向相应的PCB ,不同状态对应不同的索引表。
    在这里插入图片描述

2.2.3 补充:进程的创建、撤销、阻塞、唤醒

原语: OS内核中由若干条指令构成的用于完成特定功能的“原子操作”过程,作为一个整体且****不可分割—要么全部都完成,要么全部都不做。

进程的创建:
OS一旦发现了要求创建进程的事件后,便调用进程创建原语create()按以下过程创建一新进程:
在这里插入图片描述
进程的撤销:
如果系统中发生了要求撤消进程的事件,OS便调用撤消原语destroy()去撤消进程。
在这里插入图片描述

进程的阻塞与唤醒:
当一个进程期待的事件尚未出现时,该进程调用阻塞原语block()将自己阻塞起来。对于处于阻塞状态的进程,当该进程期待的事件出现时,由其它相关进程调用唤醒原语wakeup()将阻塞的进程唤醒,使其进入就绪状态

在这里插入图片描述

2.3 进程同步:临界区、信号量

进程同步是指对多个相关进程在执行次序上进行协调。
用来实现同步的机制称为同步机制。如:信号量机制

2.3.1 进程同步的基本概念

两种进程关系:

  • 进程同步:直接制约关系,进程之间为了协作完成某项任务而有意识地相互“交换信息”。如前分别将I、C和P都看成是进程。 (有先后次序关系
  • 进程互斥:间接制约关系,进程之间通过竞争系统某些资源产生的关系。原因是某些资源不能同时被 多个进程使用。

临界资源、临界区

  • 临界资源 (critical resource)
    系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源互斥资源共享变量

  • 临界区(互斥区,critical section )
    在进程中涉及到临界资源的程序段叫临界区
    多个进程的临界区称为相关临界区

  • 实现各进程互斥进入临界区
    进程须在临界区前面增加一段用于进行上述检查的代码,称为进入区(entry section)。在临界区后面加上一段称为退出区(exit section) 的代码。
    在这里插入图片描述
    在这里插入图片描述
    同步机制应遵循的规则:
    各进程需要互斥访问临界资源,即不能同时进入各自的临界区。应遵守的原则:

  • 有空让进:无进程在临界区时,要求进入临界区的进程可进入。

  • 忙则等待:不允许两个以上的进程同时进入临界区(互斥访问)。

  • 有限等待:要求进入临界区的进程不能无限等待,以免陷入“死等(饥饿)”。

  • 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”。

2.3.2 信号量机制

基本原则:在多个相互制约的进程之间使用简单的信号来同步,一个进程被强制停止在一个特定的地方直到收到一个专门的信号。

整型信号量:
除了初始化外,只能通过两个原子操作wait(P)和signal(V)来访问。
在这里插入图片描述

主要问题:只要S<=0, wait操作就不断地测试(忙等),因而,未做到“让权等待”。

记录型信号量:
基本思想

  1. 设置一个整型变量value代表资源数目。
  2. 设置一个链接所有等待进程的链表。
  3. 初始化一次后,仅能被wait(S)和signal(S)两个原语操作(同步原语,也称为P、V操作)访问。
    在这里插入图片描述

S.value的物理含义(P/V操作开始前)

  • S.value >0:表示有S.value个资源可用。S.value的初值应≥0
  • =0:表示无资源可用且无进程在等待该资源
  • <0:表示有|S.value|个进程在等待该资源

P、V操作的含义

  • P(S):表示申请一个资源(结果成功或不成功)
  • V(S):表示释放一个资源

在这里插入图片描述

2.3.3 信号量的应用

利用信号量实现进程互斥:
有多个进程互斥访问某类资源,则互斥进程Pi的代码如图所示(mutex初值为该类资源初始可用个数)
在这里插入图片描述

进程互斥问题解题思路

  • 一类临界资源设置一个互斥信号量 mutex,初值为其可用个数(如打印机台数),如:只有一台打印机可设置为1
  • 所有互斥进程在进入区执行P(mutex)退出区执行V(mutex);次序不能颠倒
  • P和V操作成对出现。遗漏P操作则不能保证互斥访问,遗漏V操作则可能造成死锁。

利用信号量实现前驱关系(同步):
为该前趋关系设置一个同步信号量S,其初值为0

在这里插入图片描述
如此即可实现先执行P1,再执行P2

进程同步问题的解题思路

  • 有几个同步关系,就设几个同步信号量。
  • 设定信号量初值=0。
  • 同一信号量的P、V操作要成对出现,但分别出现在不同进程的代码中。

2.4 经典进程的同步问题:3类

2.4.1 生产者—消费者问题

  • 生产者生产产品,放入缓冲区
  • 消费者从缓冲区取出产品消费
  • 生产者与消费者互斥访问缓冲区

请添加图片描述
请添加图片描述

2.4.2 “哲学家进餐”问题

5个哲学家围圆桌而坐,每人面前有一只空盘子,每2人之间放一只筷子;哲学家的动作包括思考和进餐,进餐时需要拿起他左右两边的两只筷子,思考时则将两只筷子放回原处。如何保证哲学家们的动作有序进行?

求解进程同步与互斥问题注意事项

  1. 进程应该先申请同步信号量再申请互斥信号量;释放顺序不要求,但建议嵌套出现
  2. 任何信号量的P和V操作都必须成对出现
    • 互斥信号量的操作成对出现在同一进程中
    • 同步信号量的操作成对出现在不同进程中

2.5 进程通信 (自学)

2.6 线程(自学)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
操作系统概念背诵 一、进程管理 1. 进程管理的功能 ① 进程控制 ② 进程同步 ③ 进程通信 ④ 进程(线程)调度 2. 程序顺序执行时的特征:顺序性、封闭性、可再现性。 3. 程序并发执行时的特征:间断性、失去封闭性、不可再现性。 4. 进程由程序段、数据段和进程控制块(PCB)组成。 5. 进程的定义 ① 进程是程序的一次执行。 ② 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。 ③ 进程进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。 ④ 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。 6. 进程的基本特征:动态性、并发性、独立性、异步性、结构特征(程序+数据+PCB) 7. 进程的状态 三态:就绪状态、运行状态、阻塞状态。 五态:活动就绪、静止就绪、活动阻塞、静止阻塞、运行。 8. 进程控制块(PCB)的组成:进程标识符、处理机状态、进程调度信息、进程控制信息。 9. 临界区:进程中访问临界资源的那段代码叫做临界区。 10. 同步机制必须遵循的原则:空闲让进、忙则等待、有限等待、让权等待。 11. P, V 操作的定义 P(S):S = S − 1; 若S≥0,则当前进程继续运行; 若S<0,则将当前进程插入到S 的等待队列中去。 V(S):S = S + 1; 若S>0,则当前进程继续运行; 若S≤0,则从S 的等待队列中移出一个进程放到就绪队列中去。 12. 信号量的物理意义 S = −n 时,表示有n 个等待进入临界区的进程,当前已有进程在临界区中访问临界资源; S = 0 时,表示不允许任何进程进入临界区,当前已有进程在临界区中访问临界资源; S = n 时,表示临界区是空闲的,该类资源的可用数目为n,可以有n 个进程访问该类资源。 13. 高级通信机制有:共享存储器系统、消息传递系统、管道通信系统。 14. 线程的定义:线程是进程内的一个实体,是处理机调度的基本单位,是程序内部一个单一的顺序控 制流。 15. 引入进程的目的:是为了使多个程序并发执行,提高资源利用率和系统吞吐量。 16. 引入线程的目的:是为了减少程序并发执行时的时空开销,使操作系统具有更好的并发性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值