第 2 章 进程的描述与控制

35
第2第 第第第第第第第第 2.1 第第第第第第 2.1.1 第第第第第 2.1.2 第第第第第第第第 2.1.3 第第第第第第第 2.2 第第第第第第第第第第第第 2.3 第第第第 2.4 第第 补补补补补补补补补补补补

Upload: amiel

Post on 01-Feb-2016

143 views

Category:

Documents


0 download

DESCRIPTION

第 2 章 进程的描述与控制. 2.1 进程及其描述 2.1.1 进程的引入 2.1.2 进程的定义与特征 2.1.3 进程描述控制表 2.2 进程基本状态及其相互转换 2.3 进程控制 2.4 线程. 补充部分必要的微机原理知识. 2.1.1 进程概念的引入. 单任务环境下的 “ 可执行 ” 程序 未执行前的程序 可执行格式的二进制程序文件; 通常被持久存储在外存(磁盘)中。 程序被加载到主存并获得 CPU 控制权后 将按其中指令所规定的逻辑顺序被依次执行 逻辑顺序结构:顺序、选择、重复(循环) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 章  进程的描述与控制

第 2 章 进程的描述与控制

2.1 进程及其描述 2.1.1 进程的引入 2.1.2 进程的定义与特征 2.1.3 进程描述控制表

2.2 进程基本状态及其相互转换2.3 进程控制2.4 线程

补充部分必要的微机原理知识

Page 2: 第 2 章  进程的描述与控制

2.1.1 进程概念的引入

单任务环境下的“可执行”程序 未执行前的程序• 可执行格式的二进制程序文件;• 通常被持久存储在外存(磁盘)中。

程序被加载到主存并获得 CPU 控制权后• 将按其中指令所规定的逻辑顺序被依次执行

– 逻辑顺序结构:顺序、选择、重复(循环)– 通常可采用或引入前驱图 [ 节点+有向边 ] ,来描述程序

中不同单元或程序段之间的关系;• 以实模式执行,具有最大的权限,可存取控制所有

计算机软硬资源;• 程序执行具有以下基本特点:

– 顺序性、封闭性和(结果)可再现性。

Page 3: 第 2 章  进程的描述与控制

如何创建可执行程序

Creating an Executable Program

Compiler

Linker

Loader

AbsoluteProgram

ExecutableProgram

RelocatableObject

Modules

SourceModules

Page 4: 第 2 章  进程的描述与控制

2.1.1 进程概念的引入单任务环境下的“可执行”程序多任务环境下多道程序并发执行

多道程序并发执行情况示例• 本例中,程序片段 S1与 S2 可并发执行• 并发可有效提高系统的吞吐量

多道程序并发执行的特征• 间断性(切换执行)• 失去封闭性(共享系统的资源)• 结果不可再现性

为有效管理和调度多道并发执行程序• 须引入可完整描述每道执行中程序的数据结构;• 该思想逐步进化完善进程 (process) 概念

S1

S2

S3 S4

Page 5: 第 2 章  进程的描述与控制

2.1.1 进程概念的引入

单任务环境下的“可执行”程序多任务环境下多道程序并发执行进程概念的引入与意义

进程是现代 OS 最重要的概念之一 进程的管理、切换及调度,与保护模式密切相

关,需要有保护模式知识,才能清晰理解进程的实现机制和实现过程。

执行进程切换的相关代码,被统称为 OS 的进程调度模块• 通常被运行在比 “进程”更高的层级上;• 现代 OS 的调度代码,通常不是一个集中的模块,

而是由分散在内核多个位置的若干代码片段构成。

Page 6: 第 2 章  进程的描述与控制

OS 进程切换示意图解

数组或队列

Page 7: 第 2 章  进程的描述与控制

OS 的典型进程切换过程

Page 8: 第 2 章  进程的描述与控制

中断处理程序框架

; 入口堆栈为当前进程的进程控制表 ; 保存当前 CPU 工作现场

• Push ad ; push ds,es,fs,gs,.. ; 禁止当前中断 , 但允许其它中断发生 ; 将堆栈切换到内核栈 ; 执行实际的中断处理,对于时钟中断

• 修改系统时间 ;

• 修改当前进程时间配额;• 若时间配额用完,重调度—修改 p_proc_ready

; 禁止所有中断发生 [cli] ; 将栈切换到下一个启动进程的进程表

• mov esp, [p_proc_ready]

• lldt [esp+p_ldt_sel]

; 恢复下一个执行进程的 CPU 工作现场• pop ..,gs,fs,es,ds; popad

iretd

进程表数组指针

Page 9: 第 2 章  进程的描述与控制

2.1.2 进程定义

是具有一定独立功能的程序:在一个数据集上的一次动态执行过程。 一个程序可以通过多次执行,产生多个进程

是计算机内存中具有一定结构和具有相对独立性的动态实体 ( 有独立的活动地址空间 ) 。

是计算机系统资源的使用实体和参与系统资源分配的最基本单位。

★是计算机系统中可独立调度执行的实体。 注意,在进一步引入“线程”的 OS 中,可独立

调度执行的实体变为线程。

Page 10: 第 2 章  进程的描述与控制

Process Definition

It is a program in execution, the program defines its behavior.

It is a schedulable unit of computation that usually requires certain resources be allocated to it during execution. It is the most fundatmental unit for resources allocation. some modern OS may use threads or objects for the

fundamental unit of computation. The component of a process are the

following:• The object program (or code) to be executed;• The data on which the program will exec.• The resources required by the prg.• The status of its exec, or more precisely, an internal data

structure (the process descriptor or PCB) to describe/keep track it.

Page 11: 第 2 章  进程的描述与控制

进程的基本特征

独立性 每个进程具有自己相对独立的地址空间,除非

通过进程通信手段,否则不能相互影响结构性

进程空间是结构化的、分段组织的;动态性

是或包含可在其地址空间中活动的执行体对象并发性,也称异步性

在同一个计算机系统中允许同时存在多个进程,微观上它们可能是交替执行;但宏观上看,则似乎在同时独立运行。

用户空间是进程的一个最主要特征 !

Page 12: 第 2 章  进程的描述与控制

一种抽象的“进程空间”视图模型

每个进程有

自己专有的

“ 一本帐”

“ 一套表”

Page 13: 第 2 章  进程的描述与控制

2.1.3 进程控制块 (PCB)

也称进程表,是 OS维护的、用来跟踪记录进程存在和活动情况的数据结构。 与进程有关的信息被集中存储在这个数据结构中。

每个进程在 OS都有一个唯一的 PCB Windows 中, PCB也被称为 ‘内核进程对象’ ,是

一种内核控制对象。 不允许进程自身访问,只允许内核代码访问。

PCB 主要内容 进程描述信息 :PID,NAME, USERID,PROCESS GROUP 处理器现场保护信息 : CPU 内部各寄存器 进程控制信息 : 当前状态、优先级、代码执行入口地址、程序外

存地址、运行统计信息 ( 执行时间、调度次数、页面调度 ) 资源占用信息列表,打开资源对象句柄表 用于进程间同步与通信的相关信息字段 指向进程虚空间使用分配描述表指针( PCB->AddressSpace )

(注意,因页目录 /页表占空间 较大,虽位于系统空间但不能安排在核心,即∉ PCB ,页挂起进程页表可能会被 SWAP 到外存! )

Page 14: 第 2 章  进程的描述与控制

2.1.3 进程控制块 (PCB)

PCB->AddressSpace进程页目录的物理地址

Page 15: 第 2 章  进程的描述与控制

2.2 进程的状态及其相互转换

Done

Start

ReadyBlocked

Running

Request

Request

Schedule

2.2.1 五状态图 (三种基本状态+新状态+结束状态 )

PCB 中有表示进程当前状态的字段(枚举型)

Page 16: 第 2 章  进程的描述与控制

2.2.2 进程的单挂起状态模型

创建 就绪 运行 退出

阻塞

提交调度

释放超时

事件出现

阻塞挂起 挂起

active

suspend

Page 17: 第 2 章  进程的描述与控制

2.2.3 进程的双挂起状态模型

就绪挂起 就绪 运行 退出

阻塞

调度释放

超时

事件出现

阻塞挂起挂起

创建

提交

激活

挂起激活

事件出现

挂起

Page 18: 第 2 章  进程的描述与控制

★进程与程序比较(区别与联系)

程序是静态的 , 是有序代码的集合 , 是进程的定义和说明 对应着一个持久外存文件,具有外存文件的性质(创建 / 复制 /删除 ..) 。

进程是动态的、暂时的,是程序的一次执行,通常不能在计算机之间迁移。

进程与程序的组成不同:进程组成包括代码段、数据段和控制块。

进程与程序密切关联 通过多次加载执行,一个程序可对应多个进程;通过

调用关系,一个进程可涉及多个程序。

Page 19: 第 2 章  进程的描述与控制

2.3 进程控制

2.3.1 原语的概念2.3.2 核心态与用户态的概念2.3.3 进程的创建与退出2.3.4 进程的阻塞与唤醒

Page 20: 第 2 章  进程的描述与控制

2.3.1 原语的概念

原语是由若干条机器指令构成的,用于完成某一特定功能的一段程序

原语在执行期间不可分割,原语操作具有原子性。

Page 21: 第 2 章  进程的描述与控制

2.3.2 核心态与用户态的概念

为了防止操作系统及关键数据(如 PCB等)受到用户有意或无意的破坏,通常将处理机的执行状态分为两种: 核心态,又称管态,是操作系统管理代码执

行时机器所处的状态。• 它具有较高的特权,能执行一切指令,访问所有

的寄存器和存储区。 用户态,又称目态,是用户进程执行时机器

所处的状态。• 这是具有较低特权的执行状态,它只能执行规定

的指令,访问指定的寄存器和存储区 。

Page 22: 第 2 章  进程的描述与控制

WINDOWS/XP 的体系结构

Page 23: 第 2 章  进程的描述与控制

WINDOWS/XP 核心态中的一些主要成份

核心部分 中断处理和调度;异常处理和异常调度;多处

理器同步;线程安排和调度;供执行体使用的基本内核对象 (包括控制对象和调度支持对象 )• 控制对象 : 内核进程对象 ,异步过程调用 APC,延迟

过程调用 DPC ,以及一些供 I/O 系统使用对象• 调度支持对象:线程对象 , 互斥体Mutex,信号量

Semaphore,事件 Event, 定时器执行体部分

进程和线程管理器 ( 创建 / 中止 ) 、内存管理器、I/O 管理器、缓存管理器、电源管理器、即插即用设备管理器、注册表管理器、 LPC、…

Page 24: 第 2 章  进程的描述与控制

2.3.3 进程的基本管理

1. 进程创建的一些常用原语2. 进程创建的基本过程3. 进程终止 / 退出4. 进程阻塞与挂起

Page 25: 第 2 章  进程的描述与控制

1. 创建进程的相关原语

一个进程可利用系统调用来创建新进程,创建者称为父进程,被创建者称为子进程。 进程树

fork (分叉克隆) 复制现有进程的上下文来创建新进程

Exec先 fork, 再加载新进程映像并覆盖自身

spawn 创建新进程并加载新进程 ( spawn )

Page 26: 第 2 章  进程的描述与控制

2. 进程创建的基本过程

申请空白 PCB (创建内核进程对象)为新进程分配资源

创建进程地址空间框架; 创建进程打开对象句柄表; 加载并映射新进程映像到进程用户空间,包括

分配部分物理内存页; 在进程用户空间中分配进程运行环境控制块

(PEB) ;初始化进程 PCB和 PEB将新进程状态置为“就绪”,并插入就绪

队列。

Page 27: 第 2 章  进程的描述与控制

☆Windows 系统的进程创建过程 分配并设置 EPROCESS(含 KPROCESS) 数据结构。 为目标进程创建初始的地址空间。

建立初始地址 VAD树;建立初始页表(页面映射方案表); 分配并设置其他相关数据结构,例如,“打开对象表” 。 对目标进程的“内核进程块” KPROCESS 进行初始化。将NTDLL映像映射到目标进程的用户地址空间 将目标进程的映像映射到其自身的用户空间。映射NLS 有关的数据结构到用户空间。 创建并设置好目标进程的“进程环境块” PEB 。

含进程运行参数、映像装入地址、 NLS支持映像地址等信息 创建进程的第一个线程

分配堆栈、分配并初始化运行上下文、创建线程对象 ETHREAD 、分配并设置线程环境块 TEB

完成 EPROCESS 创建,将其首线程挂入就绪队列 注意,受调度的是线程队列而不是进程队列。

Page 28: 第 2 章  进程的描述与控制

3. 进程的终止 / 退出( EXIT())

根据被终止进程标识,从 PCB 中检索出该进程 PCB ,从中读出进程状态;

若被终止进程处于执行状态,应立即中止该进程的执行 修改该进程的状态到终止状态,并立即申请再

调度; 若还有子孙进程,还应将它们终止或过继;

释放进程拥有的所有资源;释放 PCB

Page 29: 第 2 章  进程的描述与控制

2.4 线程

2.4.1 线程的有关概念2.4.2 线程的相关数据结构2.4.3 线程的创建2.4.4 线程与进程比较

Page 30: 第 2 章  进程的描述与控制

2.4.1 线程的有关概念( 1 )在只有进程概念的 OS 中,进程是资源的

分配单位,同时也是处理器的调度单位。现代 OS 为进一步提高系统的并发性能,往往都引入了比进程粒度更细的 “线程”概念: 一个进程内可容纳多个线程。进程仍作为参与

资源分配的最基本单位,但把线程作为调度的最基本单位,从而达到以小的开销来提高进程内的并发和共享程度的目的。

Page 31: 第 2 章  进程的描述与控制

2.4.1 线程的有关概念( 2 )线程是具体的 ( 执行 ) 上下文,是 CPU 调度的

基本单元;而进程只是若干个共享地址空间和相同特性 ( 如调度优先级 ) 的线程集合,好像是 “提取公因子”所形成的结果。

进程只是个空架子,实际的运行实体是里面的线程。

线程是 1 个动态对象,是 CPU 调度的基本单位,表示进程中的 1 个控制点,执行一系列指令。

由于同一进程内各线程都可以访问整个线程的所有资源,故它们间的通信比进程间通信要方便;

同一进程内的线程间切换也会由于许多上下文的相同而简化。

Page 32: 第 2 章  进程的描述与控制

2.4.2 线程的相关数据结构线程的内核数据结构(代表对象)

是 ETHREAD ,是一种调度对象,它的第一个成份是数据结构 KTHREAD ,也称为 TCB ;

线程在用户空间的相关数据结构 有自己专有堆栈; 有自己的运行上下文; 有自己的线程环境块 TEB• PEB 在用户空间的位置是固定的, PEB 下方就是

TEB ,进程中有几个线程就有几个 TEB ,每个TEB占一个 4KB 的页面。

Page 33: 第 2 章  进程的描述与控制

2.4.3 线程的创建

一般首个线程在进程创建的结束阶段被自动创建(由父进程代为创建);其它线程由进程自己调用系统 API函数创建。

线程创建的基本过程 创建 /初始化 ETHREAD 数据结构,并处理好与

EPROCESS 的关系。 为新线程分配堆栈、创建并初始化执行上下文。 在所属进程的用户空间中,创建并设置新线程 TEB 。 进一步设置目标线程的 KTHREAD 数据结构,包括:

• 设定新线程在用户空间执行入口始址。 ETHREAD 数据结构中有相关成份,用来存放相关地址。

• 将其上下文中的断点 (返回点 )设置成指向内核中的一段程序KiThreadStartup ,使得该线程一旦被调度运行时就从这里开始执行。

将线程对象标插入就绪队列

Page 34: 第 2 章  进程的描述与控制

2.4.4 线程与进程比较( 1 )地址空间:不同进程的地址空间相互独立,而同一进程的各线程共享同一地址空间,一个进程中的线程在另一进程中是不可见的。

通信关系:进程间通信必须通过 OS提供的进程间通信机制,而同一进程的线程间通信可以通过直接读写进程数据段如全局变量进行(仍需要同步互斥机制保证数据访问的一致性)。

调度切换:同一进程中的线程上下文切换比进程上下文切换快得多。

Page 35: 第 2 章  进程的描述与控制

2.4.4 线程与进程比较( 2 )

线程与进程相比的主要优点 : 创建、终止、切换快,系统开销少; 通信方便• 由于同进程内线程间共享内存和文件资源,故可直接进行不通过内核的通信;

系统允许的最大线程数限制弱得多;

采用多线程的程序设计技术,可以更好提高系统的运行性能(如吞吐量、计算速度和响应时间等)。