第二章C 进程的通信与线程PPT课件

合集下载

操作系统第二章PPT课件

操作系统第二章PPT课件

-
12
2.1.3 进程挂起
有挂起状态的进程转换图
创建 准许 就绪
激活 事件 发生
挂起
就绪 挂起
分派 超时
运行 准许
等待 事件
消失
(a) 带有一个挂起状态
创建
准许
准许
挂起
就绪, 挂起
事件 发生
阻塞 挂起
激活 挂起
激活
就绪
事件 发生 阻塞
分派 超时
运行
等待 事件
释放
-
消失
(b) 带有两个挂起状态
13
2.1.3 进程挂起
-
38
2.4.1 线程及其管理
2.线程的定义及特征
线程是进程内的一个相对独立的、可独立调度 和指派的执行单元。
线程具有以下性质:
• 线程是进程内的一个相对独立的可执行单元。
• 线程是操作系统中的基本调度单元 。
• 一个进程中至少应有一个线程 。
• 线程并不拥有资源,而是共享和使用包含它的 进程所拥有的所有资源。
• ③当运行中获取用户程序提出的某种请求后,OS可以 代用户程序产生进程以实现某种功能,使用户不必等 待。
• ④基于应用进程的需要,由已存在的进程产生另一个 进程,以便使新程序以并发运行方式完成特定任务。
-
5
2.1.1 进程产生和终止
2.进程终止 导致进程终止的事件大致有14种 :正常 结束 、超时限制 、内存不足 、超界 、 保护错误 、算术错误 、超越时限 、I/O 失败 、非法指令 、特权指令 、错误使 用数据 、操作员或OS干预 、父进程终 止 、父进程需要 。
-
27
2.3.1 执行模式
大多数处理器都至少支持两种执行模式, 一种是同操作系统有关的模式,另一种则 是同用户程序有关的模式。较低特权模式 称为用户模式。较高特权模式指系统模式、 控制模式或内核模式。内核是操作系统中 最核心功能的集合。

第2章 进程的描述和控制 (2)

第2章 进程的描述和控制 (2)

链接方式
执行指针 就绪队列指针
PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 PCB8 PCB9 4 3 0 8
阻塞队列指针 空闲队列指针
7 9 0 0
索引方式
执行指针
PCB1 PCB2
PCB3
就绪表指针
PCB4 PCB5 PCB6
阻塞表指针
PCB7
进程调度队列
• 作业队列——系统中所有进程集合 • 就绪队列——驻留主存的所有就绪态进 程集合 • 设备队列——等待I/O设备的进程集合 • 进程在各种队列中迁移
程序段 数据段
操作对象及工作区
1. 进程控制块 (PCB, process control block) 的作用
• PCB是OS中最重要的记录型结构,记录用于描 述进程执行情况及控制进程运行的全部信 息。 。 • PCB是进程存在的唯一标志,是每个进程在OS 中的登记表项,OS据此对并发进程进行控制和 管理。 • PCB常驻于由OS维护的内存核心区,不能由应 用程序自身的代码来直接访问,而要通过系统 调用间接访问。 • OS专门开辟PCB区将所有的PCB组织成若干个链 表或队列。
进程图 A
B D C
E
F
G
H
引起创建进程的事件 (1) 用户登录。 (2) 作业调度。 由系统内核创建 (3) 提供服务。 (4) 应用请求。 由自己创建
进程的创建
• 原语CREAT()按下述步骤创建一个新 进程: (1) 申请空白PCB。 (2) 为新进程分配资源:为代码、数据、 用户栈分配空间。 (3) 初始化进程控制块:初始化标识信 息、处理机状态(PC、SP)、处理机控制 信息(进程状态、优先级)。 (4) 将新进程插入就绪队列 。

计算机操作系统原理 第二章 进程描述与控制

计算机操作系统原理 第二章 进程描述与控制

13
两个并发程序方案

设有一台标准输入设备(键盘),和一台标准 输出设备(显示器或打印机),输入程序负责 从标准设备中读取一个字符,送缓冲区中。输 出程序从缓冲区中取数据,送标准设备输出。
14
两个并发程序方案
f
标准输入 (键盘)
输入程序 缓冲区 输出程序
g
标准输出 (打印机)
15
两个并发程序方案
6
前趋图
前趋图(Precedence Graph)是一个有向无循环图,记 为DAG(Directed Acyclic Graph),用于描述进程之间执行 的前后关系。 结点:一个程序段或进程,乃至一条语句
有向边:偏序或前趋关系
把没有前趋的结点称为初始结点(Initial Node) 没有后继的结点称为终止结点(Final Node) 每个结点还具有一个重量(Weight),用于表示该结点 所含有的程序量或结点的执行时间。
38
进程状态模型
进程状态转换
原状态 创建 OS根据作业控制请求; 分时系统用户登录; 进程产生子进程而创 建进程 转换后状态 运行 × 就绪 × 阻塞 × 终止 ×
创建
×
×
OS准备运 行新的进 程
×
×
(转下表)
39
进程状态模型
原状态 创建 运行 × 运行 × 转换后状态 就绪 超时;OS服务 请求;OS响应 具有更高优先 级的进程;进 程释放控制 阻塞 OS服务 请求; 资源请 求;事 件请求 终止 进程完 成,进 程夭折
2.5 进程同步 2.6 经典进程的同步问题 2.7 管程机制 2.8 进程通信
3
2.1 进程描述

2.1.1 程序的顺序执行 2.1.2 程序的并发执行 2.1.3 进程的定义

chap2 进程管理

chap2 进程管理

2· 2 进程的状态及转换
状态及其转换 静止就绪状态:表明进程具备运行条件但目前在二级存储器中,当它被 对换到主存才能被调度执行 静止阻塞状态:表明进程正在等待某一事件且在二级存储器中 ①运行或活动就绪→静止就绪,活动阻塞→静止阻塞 通过挂起操作(suspend)。 ②静止就绪→活动就绪, 静止阻塞→活动阻塞 通过激活操作(activate)。 ③静止阻塞→静止就绪: 当等待的事件发生时。 挂起进程的特征: (1)该进程不能立即执行。(2)挂起进程可能会等待事件,但所等待 事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 (3)进程进入挂起状态是由于操作系统、父进程或进程本身阻止它 的运行。(4)结束进程挂起状态的命令只能通过操作系统或父进程 发出。
题目:
4、进程执行时的间断性,决定了进程可能具有多种状态。进程的基 本状态有三种,在分时系统中,当一个进程拥有的时间片到时, 则该进程即由[1]进入[2]。如果出现因某种原因使得处理机空闲时, 则需要从就绪队列中选择一进程,并将处理机分配给它,此时该 进程进入[3],这个过程是由[4]来完成。 供选择的答案: [1][2][3] A、就绪状态 B、静止状态 C、阻塞状态 D、运行状态 [4] A、进程控制程序 B、资源分配程序 C、进程调度程序 D、处理机分配程序 5、下列进程状态的转换中,哪一个是不正确的( )。 A. 就绪->运行 B. 运行->就绪 C. 就绪->阻塞 D. 阻塞->就绪 6、一个进程被唤醒意味着( )。 A.该进程重新占有了CPU B.进程状态变为就绪 C.它的优先权变为最大 D.其PCB移至就绪队列的队首
2· 2 进程的状态及转换
3、细分5种状态的进程状态及其转换 新建、就绪、运行、阻塞、终止 新建:对应进程刚被创建的状态,为一个新进程 创建必要的管理信息,它并没有被提交运行, 而是等待操作系统完成创建进程的必要操作。 终止:进程已完成执行就变为终止状态。进入终 止态的进程不再执行,但依然临时保留在系统 中等待善后。一旦其他进程完成了终止进程的 信息抽取后,系统将删除该进程。

操作系统原理第二章进程管理

操作系统原理第二章进程管理

2.1 前趋图和程序执行
例:有7个结点的前趋图。
P = { P1,P2,P3,P4,P5,P6,P7 } → = {(P1,P2),(P1,P3),(P1,P4), (P2,P5),
(P3,P5),(P4,P6),(P5,P7),(P6,P7)}
2
1 3
4
5
7 6
2.1 前趋图和程序执行
➢ 程序的顺序执行
打印三项操作。其程序段并发执行的前趋图:
I1 → I2 → I3 → I4 →
↘↘↘↘
C1 → C2 → C3 → C4 →
↘↘↘↘
P1 → P2 → P3 → P4 →
2.1 前趋图和程序执行
例2.Begin integer N:=0;
Cobegin
Program A : begin
Program B : begin
void popaddr (top) { top --; r=*top; return (r) }
void pushaddr(blk) { *top = blk; top++;
}
先执行 popaddr 的top--,接着执行pushaddr的*top=blk
2.1 前趋图和程序执行
➢ 程序并发执行过程及条件 (Bernstein条件)
果必相同。
2.1 前趋图和程序执行
➢ 程序的并发执行
➢ 程序执行环境
➢ 独立性,逻辑上是独立的。 ➢ 随机性:输入和执行开始时间都是随机的。 ➢ 资源共享:资源共享导致对进程执行速度
的制约。
2.1 前趋图和程序执行
➢ 程序的并发执行
并发执行是指两个程序执行时间上是重叠 的。凡是能由一组并发程序完成的任务,都 能由相应的单个程序完成。 例1:有一批程序,而每个程序需输入,计算,

计算机程序设计语言ppt课件

计算机程序设计语言ppt课件
发展历程
从机器语言、汇编语言到高级语 言,计算机程序设计语言经历了 从低级到高级、从具体到抽象的 发展过程。
编程语言分类及特点
分类
根据编程范式的不同,编程语言可分为命令式语言、函数式语言、逻辑式语言 等;根据运行方式的不同,可分为编译型语言和解释型语言。
特点
各类编程语言具有不同的特点,如命令式语言强调状态和变量的变化,函数式 语言强调函数的作用和计算过程的不变性,逻辑式语言则强调逻辑推理和证明 。

未来编程语言发展趋势预测
多模态编程语言的兴起
支持文本、语音、图像等多种输入方式的编程语言,提高编程的 便捷性和普适性。
自适应编程语言的发展
能够根据不同应用场景和需求自动调整和优化代码结构和性能的编 程语言。
跨平台、跨语言编程的普及
实现不同平台和语言之间的无缝对接和互操作性,提高开发效率和 代码复用率。
03
04
函数库与模块 化设计思想
05
高级编程技巧与方法探讨
面向对象编程思想及实践
类的设计与实现:属性、方 法、构造函数和析构函数
面向对象编程(OOP)的基 本概念:类、对象、封装、
继承和多态
01
02
03
访问控制修饰符:public、 private、protected和默认
访问级别
继承与多态的实现方式:方 法重写、方法重载和接口实
量子计算对编程语言影响展望
量子编程语言的兴起
01
Q#、Quipper等量子编程语言为量子计算提供了高效的开发环
境。
量子算法与经典算法的融合
02
通过将量子算法与经典算法相结合,实现更高效的计算任务。
量子计算对并行计算和分布式计算的影响

第二章 - 进程和线程

第二章 - 进程和线程

2.4 线

2.4.1 线程概念 现代操作系统中,进程只作为资源拥有者, 而调度和运行的属性赋予新的实体——线 而调度和运行的属性赋予新的实体——线 程。 线程(Thread)是进程中实施调度和分派 线程(Thread)是进程中实施调度和分派 的基本单位
2.4.1 线程概念
1.线程的组成 每个线程有一个 thread结构,即 thread结构,即 线程控制块,用 于保存自己私有 的信息,主要由 以下4 以下4个基本部 分组成:
2.4.1 线程概念
4.线程和进程的关系 ① 一个进程可以有多个线程,但至少要有一个线程; 而一个线程只能在一个进程的地址空间内活动。 ② 资源分配给进程,同一进程的所有线程共享该进 程的所有资源。 ③ 处理机分配给线程,即真正在处理机上运行的是 线程。 ④ 线程在执行过程中需要协作同步。不同进程的线 程间要利用消息通信的办法实现同步。
程同时访问和操纵相同的数据时,最后的执行结 果取决于进程运行的精确时序。
竞争条件(Race Condition),即两个或多个进 Condition),即两个或多个进
2.5.2 临界资源和临界区
1.临界资源和临界区 一次仅允许一个进程使用。我们把这类共 享资源称为临界资源( 享资源称为临界资源(Critical Resource)。 Resource)。 在每个进程中访问临界资源的那段程序叫 临界区( Section),简称CS区。 做临界区(Critical Section),简称CS区。
2.3.3 进程终止
(1)正常终止 (2)异常终止 (3)外部干扰
2.3.3 进程终止
终止进程的主要操作过程如下: 找到指定进程的PCB 找到指定进程的PCB 终止该进程的运行 回收该进程所占用的全部资源 终止其所有子孙进程,回收它们所占用的 全部资源。 将被终止进程的PCB从原来队列中摘走 将被终止进程的PCB从原来队列中摘走

操作系统第2章作业进程与线程

操作系统第2章作业进程与线程
cycle input,send end •计算(处理)模块C:
cycle receive,process,send end •输出模块P:
cycle receive,output end •然后使这三个程序模块并发执行。下图示: 程序并发执行时的前趋图:
•在该例中,存在以下前趋关系: •Ii→Ci, Ii→Ii+1, Ci→Pi, Ci→Ci+1 ,Pi→Pi+1 •而Ii+1,Ci及Pi-1是重叠的。亦即Ii+1,Ci以及Pi-1可 以并发执行。
④完成状态。 作业完成计算任务,结果由打印机
输出,最后由系统回收分配给它的全 部资源,准备退出系统时的作业状况。
2.2.2 作业描述 1.作业控制块JCB 为了管理和调度作业,系统为每个作 业设置了一个作业控制块JCB,它记录 该作业的有关信息。不同系统的JCB的 组成内容有所区别,下图给出了作业控 制块JCB的主要内容。
(1)作业调度 在多道程序设计系统中,系统可以同时
处理多个作业,系统要在许多作业中按一 定策略选取若干个作业,为它们分配必要 的资源,让它们能够同时执行,这就是作 业调度。被作业调度选中的作业在执行时 可共享系统资源。
2.1 作业管理 三、作业管理的基本功能
(2)作业控制 作业控制负责控制作业的输入、执行、
问题1:一个进程只有这两种状态吗?
一个进程的等待状态可以分为两种, 一种是等待CPU,叫就绪态,另一种 是等待I/O,叫阻塞态。
进程基本状态模型(三态模型)
(1)运行态(Running)
运行状态是指当前进程已分配到
CPU,它的程序正在处理机上执行时
的状态。处于这种状态的进程个数不
能大于CPU的数目。 运行 状态
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

返回
2020/11/26
2.5.2 共享存储器系统
基于共享数据结构的通信方式
– 没有屏蔽公用数据结构的设置以及同步处理等细节 – 只能传递相对少量的数据
基于共享存储区的通信方式
– 在存储器中划出一块共享存储区,诸进程可通过对 共享存储区中数据的读写来实现通信。
通信前,先向系统申请获得共享存储区中的一个分区 shmget()
V(m.letter) ; V(m.mutex) ; }
系统为信箱提供的原语:创建、撤销信箱、消息 发送send(mailbox,message)和消息接收 receive(mailbox,message) 。
间接通信的使用好处是增加了使用消息的灵活性。
2020/11/26
3.间接通信方式
进程A
.
信 件
. send()
.

.

区 信件正文
count size number
计算机操作系统
2020/11/26
2.5 进程间通信
进程通信:指进程之间的信息交换。 2.5.1 进程间通信的类型 2.5.2 共享存储器系统 2.5.3 消息传递系统 2.5.4 管道通信
2020/11/26
2.5.1 进程间通信的类型
低级通信:只能传递状态和整数值(控制信息),包括 进程互斥和同步所采用的信号量机制。优点是速度快。 缺点是:
i.text = a.text ;
i.next = 0 ;
getid (PCB set , receiver ,j) ;
P(j.mutex) ; //消息链是临界资源,需互斥
insert(j.mq,i) ;
V(j.mutex) ;
V(j.Sm) ;
}
2020/11/26
消息缓冲队列通信机制
接收原语 receive(sender,b) {
消息传递系统是指:进程间的数据交换是以格式化的消息 为单位的。消息传递系统分为直接通信方式和间接通信方 式两种。 1. 直接通信方式
这是指发送进程利用OS提供的发送命令直接把消息发 送给接收进程,并将它挂在接收进程的消息缓冲队列上。 接收进程利用OS提供的接收命令直接从消息缓冲队列中取 得消息。此时要求发送进程和接收进程都以显示的方式提 供对方的标识符,通常系统提供下述两条通信原语: Send(Receiver ,message) ; Receive(Sender ,message) ;或(Receive(message)) ; 直接通信的实例-消息缓冲队列通信机制。
mutex ;消息缓冲队列互斥信号量 ;
Sm
;消息缓冲队列资源信号量 ;
mq
;消息缓冲队列首指针 ;
.
end
2020/11/26
消息缓冲队列通信机制
发送原语
send (receiver,a)
{
getbuf(a.size,i) ;
i.sender = a.sender
i.size = a.size ;
– 传送信息量小:效率低,每次通信传递的信息量固定,若传递 较多信息则需要进行多次通信。
– 编程复杂:用户直接实现通信的细节(共享的数据结构、传送函 数、互斥与同步),编程复杂,容易出错。
高级通信:指用户可直接利用操作系统所提供的一组通 信命令,高效地传送大量数据的一种通信方式。包括三 类:
– 共享存储器系统 – 消息传送系统 – 管道通信系统。
j=internal name; P (j.Sm) ; //从消息链上申请一个消息 P (j.mutex) ; Remove(j.mq,i ) ; V(j.mutex) ; b.sender =i.sender ; b.size =i.size ; b.text =i.text ; Releasebuf(i) ;
进程B
receive(b); sender :A size :5 text :Hello
2020/11/26
3.间接通信方式
在间接通信情况,消息不直接从发送者发送到接 收者,而是发送到暂存消息的共享数据结构组成 的队列,这个实体称为 信箱(mailbox,仅为相 互通信的进程所有)。因此两个进程通信情况是, 一个进程发送一个消息到某个信箱,而另一个进 程从信箱中摘取消息。
empty
letter
格格格

子 子 子 ... 子
123
n
进程B
.
. receive()

.

.

收 信件正文 区
2020/11/26
3.间接通信方式
发送原语 send(m,a) {
P(m.sempty) ; P(m.mutex) ; m.box[m.number]=a; m.number++;
由申请者把获得的共享存储分区链接到本进程上:将共享 内存的物理区域映射到该进程的虚空间 shmat()
向读写普通存储器一样读写该公用存储分区
2020/11/26
基于共享A正文
内存空间
进程B 虚空间
B正文
A数据
B数据
共享
A栈
存储
B栈

返回
2020/11/26
2.5.3 消息传递系统
}
2020/11/26
消息缓冲队列通信机制的发送和接收
进程A
send(B,a);
sender :A size : 13 text : How are you? Next
进程B PCB
.
mutex sm mq
sender :A size :5 text :Hello
Next :
sender :A size:13 text: How are you? Next:0
2020/11/26
消息缓冲队列通信机制
消息缓冲队列通信的数据结构有:
– 消息缓冲区
type message buffer=record
sender;发送进程的标识符 size;消息长度 text;消息正文 next;指向下一个消息缓冲区的指针 end
– 进程PCB中有关通信的扩充数据项
type PCB = record .
2020/11/26
2.直接通信的实例: 消息缓冲队列通信机制
消息缓冲队列通信原理 消息缓冲队列通信机制的原理是:由系统管理
一组缓冲区(供所有进程使用),其中每个缓冲区可 以存放一个消息。当发送进程要发送消息时先要向 系统申请一个缓冲区,然后把消息写进去,接着把 该缓冲区链接到接收进程的消息缓冲队列中。接收 进程可以在适当的时候从消息缓冲队列中摘下消息 缓冲区,读取消息,并释放该缓冲区。
相关文档
最新文档