3-2010-进程模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TASK_INTERRUPTIBLE 浅度睡眠
等待资源到位 Interruptible_sleep_on() schedule()
占有CPU 执行
ptrace() schedule()
do_exit()
TASK_STOPPED 暂停
TASK_ZOMBIE 死亡但户口未注销
Linux进程状态(2/3)
(Process Control Block,PCB)
系统为了管理进程设置的一个专门的数据结构, 用它来记录进程的外部特征,描述进程的运动 变化过程(又称进程描述符、进程属性)
系统利用PCB来控制和管理进程,所以PCB是系 统感知进程存在的唯一标志 进程与PCB是一一对应的
PCB的内容(1/3)
进程描述信息:
顺序环境:
计算机系统中 只有一个程序在运行 该程序独占系统中所有资源 其执行不受外界影响
顺序程序(2/2)
特征: • 程序执行的顺序性 • 程序执行的封闭性
独占资源,执行过程中不受外界影响
• 程序执行结果的确定性 即:程序结果的可再现性
程序运行结果与程序执行速度无关,只要 初始状态相同,结果应相同
进程何时创建?
• • • • 操作系统提供的服务 交互登录 由现有的进程派生出一个新进程 一个批处理作业的Baidu Nhomakorabea始化
进程何时终止?
• • • • 正常退出(自愿的) 出错退出(自愿的) 严重错误(非自愿) 被其他进程杀死(非自愿)
举例:正常结束、定时器到时、缺少内存、存储越界、 保护性出错(例子: 写只读文件)、算术运算错、超出 时间(进程等待超过对某事件的最大值)、 I/O 失败、 无效指令(如试图执行数据)、特权指令、操作系统干 预(如当死锁发生时)、父进程请求中止某一子进程、 父进程中止,所以子进程也中止
等待 --> 就绪
– 当所等待的事件发生时
进程的其他状态
创建状态,终止状态 挂起(suspend)状态 进程没有占用内存空间 处在挂起状态的进程映像在磁盘上 (调节负载,对换)
已完成创建一进程所必要的工作 – 已构造了进程标识符 – 已创建了管理进程所需的表格 但还没有允许执行该进程 (尚未 同意) – 因为资源有限
七状态进程模型(3/3)
激活(Activate):把一个进程从外存转到内 存;可能有以下几种情况: –就绪挂起→就绪:没有就绪进程或挂起就绪 进程优先级高于就绪进程时,发生转换 –阻塞挂起→阻塞:当一个进程释放足够内存 时,系统会把一个高优先级阻塞挂起(系统 认为会很快出现所等待的事件)进程
Linux进程状态(1/3)
Linux进程状态(3/3)
TASK_STOPPED:进程处于暂停状态,主要用于调 试目的。如正在运行的进程收到SIGSTOP信号将 进入TASK_STOPPED状态
TASK_ZOMBIE:表示进程已经结束运行并释放了 大部分占用的资源,但task_struct结构还未被 释放
3.进程控制块
3.多道程序设计(Multiprogramming)
多道程序设计:允许多个程序同时进入内存并 运行,其目的是为了提高系统效率
二、进程的基本概念
进程的概念 进程的状态及其转换 进程控制块(Process Control 进程的特征
Block)
1.进程的概念
对CPU的抽象
定义:Process 进程是具有独立功能的程序关于某个数据集合上 的一次运行活动,是系统进行资源分配和调度的 独立单位 又称任务(Task) 为了描述程序在并发执行时对系统资源的共享, 所需的一个描述程序执行时动态特征的概念
PCB的内容(2/3)
–进程的队列指针 –进程的消息队列指针
所拥有的资源和使用情况:
–虚拟地址空间的现状 –打开文件列表
CPU现场保护信息:
–寄存器值(通用、程序计数器PC、状态PSW,地址包 括栈指针) –指向赋予该进程的段/页表的指针
PCB的内容(3/3)
A. S. Tanenbaum
进程映像
30 35
CPU
40
45
t(s)
DEV1
CPU
DEV2
CPU
DEV2
在并发环境下 CPU利用 = 89% DEV1并发环境下利用 = 33% DEV2并发环境下利用 = 66%
并发程序(4/4)
特征: (1)程序执行结果的不可再现性 并发程序执行的结果与其执行的相对速度有关,是 不确定的 (2)在并发环境下程序的执行是间断性的 执行——停——执行 (3)资源共享 系统中资源被多个程序使用 (4)独立性和制约性 独立的相对速度、起始时间 程序之间可相互作用(相互制约) 可分为直接作用和间接作用 (5)程序和计算不再一一对应 (计算:一个程序的执行)
程序与进程的区别
进程更能真实地描述并发(程序不能) 进程是由程序和数据两部分组成的 程序是静态的,进程是动态的 进程有生命周期,有诞生有消亡,短暂的;而 程序是相对长久的 一个程序可对应多个进程 进程具有创建其他进程的功能
生活中类比例子
进程分类与进程层次结构
• 系统进程 • 用户进程 • 前台进程 • 后台进程
2.并发程序(1/4)
并发环境: 一定时间内,物理机器上有两个或两个以上的程 序同时处于开始运行但尚未结束的状态,并且次 序不是事先确定的
A B B A
A B
B
A
引入并发的目的: 为了提高资源利用率,从而 提高系统效率
并发程序(2/4)
A
CPU
10
DEV1
15
CPU
20
DEV2
30
CPU
40
t(s) t(s)
PCB组织方式(2/2)
William Stallings
5.进程控制
创建、撤消进程以及完成进程各状态之间的转 换,由具有特定功能的原语完成 进程创建原语 进程撤消原语 阻塞原语 唤醒原语 挂起原语 激活(解挂)原语 改变进程优先级
(1)进程的创建
给新进程赋予一个唯一的进程标识符 为进程映像分配空间 初始化进程控制块
B
DEV 1
10
CPU
20
DEV2 CPU
25 30
DEV2
40
在顺序环境下,A先执行,B再执行 CPU利用率= 40/80 = 50% DEV1利用率= 15/80 =18.75% DEV2利用率= 25/80 =31.25%
并发程序(3/4)
A B
CPU
10
DEV1
15 20
CPU
25
DEV2
运行
就绪
等待
进程的基本状态及其转换
进程状态转换的原因
就绪 --> 运行
– 调度程序选择一个新的进程运行
运行 --> 就绪
– 运行进程用完了时间片 – 一个高优先级进程处于就绪状态,中断正在运行的进程
运行 --> 等待
– 当一个进程必须等待时
OS尚未完成服务 对一资源的访问尚不能进行 初始化I/O 且必须等待结果 等待某一进程提供输入 (IPC)
fork()
资源到位 wake_up_interruptible() 或收到信号 wake_up() 收到信号SIG_CONT wake_up()
TASK_RUNNING 就绪
等待资源到位 wake_up()
TASK_UNINTERRUPTIBLE 深度睡眠
schedule() 等待资源到位 sleep_on() schedule() 时间片到
–进程标识符(process ID),唯一,通常是一个整数 –进程名,通常基于可执行文件名(不唯一) –用户标识符(user ID);进程组关系
进程控制信息:
–当前状态 –优先级(priority) –代码执行入口地址 –程序的外存地址 –运行统计信息(执行时间、页面调度) –进程间同步和通信;阻塞原因
–许多默认值 (如: 状态为 New,无I/O设备 或文件...)
–静态部分(PCB和资源表格) –动态部分:核心栈(核心过程的栈结构,不同进程在 调用相同核心过程时有不同核心栈)
Solaris的进程控制块与进程表
proc_t p_exec vnode inode 地址空间 HAT 可执行文件 进程地址空间 p_as
proc数
p_cred p_sessp p_pidp p_pgidp p_sig ……
认证 会话 PID GID 信号支持
据结构
段的AVL树
物理内存
u_finfo
struct uf_entry[] entry1 entry2 …… 打开的文件
vnode inode
vnode inode
p_tlist LWP 进程表 p_sessp 资源控制 LWP kthread sched class sched class kthread sched class
系统进程优先于用户进程 daemon: 守护进程/精灵进程 UNIX进程家族:init为根 Windows:地位相同
2.进程的基本状态及其转换
进程的三种基本状态: 运行态、就绪态、等待态
进程在消亡前处于且仅处于三种基本状态 之一
不同系统设置的进程状态数目不同
进程的基本状态
运行态(Running): 进程占有CPU,并在CPU上运行 就绪态(Ready): 一个进程已经具备运行条件,但由于无CPU暂时 不能运行的状态(当调度给其CPU时,立即可以 运行) 等待态(Blocked):阻塞态、封锁态、睡眠态 指进程因等待某种事件的发生而暂时不能运行的 状态(即使CPU空闲,该进程也不可运行)
Linux的进程状态有五种 TASK_RUNNING:表示进程具备运行的资格,正在 运行或等待被调度执行。进程控制块中有一个 run_list成员,所有处于TASK_RUNNING状态的进 程都通过该成员链在一起,称之为可运行队列
TASK_INTERRUPTIBLE 和TASK_UNINTERRUPTIBLE:两种状态均表 示进程处于等待状态。TASK_INTERRUPTIBLE除了 资源满足时可以被唤醒外,还可以被信号唤醒, 而TASK_UNINTERRUPTIBLE则不行
操作系统
北京大学计算机科学技术系 陈向群 2010-2011 第一学期
进程模型
多道程序设计 进程基本概念
进程的状态、进程控制块、进程映像
进程创建、撤销、阻塞、唤醒
进程控制
一、多道程序设计
• 顺序程序 • 并发程序 • 多道程序设计
1.顺序程序(1/2)
程序:
指令或语句序列,体现了某种算法 所有程序是顺序的
p_zone
zone信息
LWP
kthread 线程链表
PCB组织方式(1/2)
PCB表:系统把所有PCB组织在一起,并把它们
放在内存的固定区域,就构成了PCB表
PCB表的大小决定了系统中最多可同时存在的 进程个数,称为系统的并发度 (注:多道程序中的多道与系统并发度不同)
进程队列:不同状态进程分别组成队列 • 运行队列、就绪队列、等待队列 相关了解:Linux/Solaris的相关数据结构
就绪挂起 挂起 事 件 出 现 阻塞挂起 挂起
提
就绪 事 件 出 现 阻塞
激活
等
待
事
件
William Stallings
七状态进程模型(2/3)
挂起(Suspend):把一个进程从内存转到外存;可能 有以下几种情况: –阻塞→阻塞挂起:没有进程处于就绪状态或就绪进 程要求更多内存资源时,发生这种转换,以提交新 进程或运行就绪进程 –就绪→就绪挂起:当有高优先级阻塞(系统认为会 很快就绪的)进程和低优先级就绪进程时,系统会 选择挂起低优先级就绪进程 –运行→就绪挂起:对抢占式系统,当有高优先级阻 塞挂起进程因事件出现而进入就绪挂起时,系统可 能会把运行进程转到就绪挂起状态
代码段(用户程序) 数据段(用户数据) 用户栈(堆栈)
–用于过程调用和参数传递 –与系统栈区分
进程控制块PCB (进程属性)
– 用户进程不能直接访问、修改自己的PCB
进程虚拟地址空间
进程上下文环境(context)
对进程执行活动全过程的静态描述 由进程的用户地址空间内容、硬件寄存器内容 及与该进程相关的核心数据结构组成 用户级上下文:进程的用户地址空间(包括用户 栈各层次),包括用户正文段、用户数据段和用 户栈 寄存器级上下文:程序计数器、程序状态寄存器、 栈指针、通用寄存器的值 系统级上下文:
终止后,进程移入该状态
– 它不再有执行资格 – 表格和其它信息暂时由辅助 程序保留 可完成一些数据统计工作 当数据不再需要后,进程(和它 的表格)被删除
五状态进程模型
William Stallings
五状态进程模型的排队模型
七状态进程模型(1/3)
创建
交
提 交 激活
挂起
挂起 调度 运行 超时 释放 退出