第2章 进程管理

2.1 进程的概念

2.1.1 程序的顺序执行(P36)

 * 顺序程序活动的特点:

   严格地按顺序执行。

   程序本身的动作才能改变程序的运行环境。

   程序的执行结果与程序运行的速度无关。

2.1.2 多道程序设计(P37)

 * 同时运行多个程序,每个程序都分配有各自的存储区和外部设备,

   而CPU是共享的。

   程序等待输入输出结果时,就调度其它程序在CPU上运行。

2.1.3 程序并发执行时的特征(P38)

 1.失去封闭性:资源的状态受到并发程序的共同影响,

   程序计算结果与并发程序的相对速度有关。

 2.程序与计算不再一一对应(P39)

   程序:指令有序集合,是“静态”的。

   计算:指令序列在处理机上的执行过程,是“动态”的。

 3.并发程序在执行期间可以相互制约(P39)

   例如:程序A、B都调用打印程序P,若A已经调用P,则B只能等待。

2.1.4 进程的定义(P40)

 1.进程概念的引入

   程序:机器能翻译或执行的一组动作或指令,是静态的。

   进程(process):任务(task),程序动态执行过程。

 2.进程的定义

  * 进程的定义:程序在并发环境中的执行过程。

    程序比作菜谱,进程比作烹调。

  * 进程和程序的区别:

   (1)程序是静态的,程序是长期保存的软件资源。

      进程是动态的,进程是程序执行的过程,

      有生命期,有产生和消亡。

      例如:执行命令 $ date

   (2)进程是能独立运行的单位,能并发执行。

      程序有顺序执行的性质,不插入无调用关系的程序运行。

   (3)程序和进程无一一对应关系。

   (4)各个进程在并发执行过程中会产生相互制约关系。

 3.进程的特征

   动态性:有生有亡,有活动有停顿。

   并发性:

   调度性:进程是系统中申请资源的单位,也是被调度的单位。

   异步性:各进程向前推进的速度是不可预知的,即异步方式运行。

   结构性:

   进程由程序段、数据段和控制结构(如进程控制块)等组成。

2.2 进程的状态和组成

2.2.1 进程的状态及其转换(P43)

 1.进程的基本状态

   运行态(Running):程序正在处理机上执行时的状态。

   就绪态(Ready):进程已具备运行条件。

   阻塞态(Blocked):

   进程因等待某种事件发生而暂时不能运行的状态。

运行状态

↑|
分||*
到||时
C||间
P||片
U||到
|↓

所等待事件发生
(如I/O完成)

等|*
待|如
某|等
事|待
件|I
发|/
生↓O

就绪状态

←——————————

阻塞状态

 2.进程状态的转换

   就绪->运行、运行->阻塞阻塞->就绪。

2.2.2 进程的组成(P45)

 1.进程的组成(P45)

  * 进程实体(进程映象):由程序、数据集合和进程控制块组成。

  * 进程控制块PCB(Process Control Block):

    描述进程状态和特性的数据结构。

 2.进程控制块的组成(P46)

  * 进程控制块(进程描述块 Process Descriptor):

    含有进程的描述信息和控制信息。

  * 进程控制块包括内容:

    进程名、进程状态信息、调度优先权、通信信息、现场保护区、

    资源需求、分配和控制方面的信息、进程实体信息、族系关系。

 3.进程控制块的作用(P46)

   操作系统根据PCB对进程实施控制和管理。

2.2.3 进程队列(P47)

 1.线性方式:

   静态分配空间,把所有进程的PCB都放在PCB线性队列中,

   在执行CPU调度时要对整个表进行扫描。

 2.链接方式:

   按照进程的不同状态分别放在不同的队列中。就绪进程排成队列,

   通过PCB结构内部的拉链指针把同一队列的PCB链接起来。

   CPU调度程序把第一个PCB由该队列中摘下,令其投入运行。

 3.索引方式:

专用指针单元

     

就绪索引表

     

地址

PCB表

20

20

PCB1

就绪指针 20

22

21

PCB2

25

22

PCB3

运行指针 22

27

23

PCB4

24

PCB5

阻塞指针 21

25

PCB6

26

PCB7

27

PCB8

28

PCB9

2.3 进程的管理和有关命令(P48)

 * 进程管理包括:创建进程、撤消进程、挂起进程、恢复进程、

   改变进程优先级、封锁进程、唤醒进程、调度进程。

2.3.1 进程的管理

 1.进程族系(P49)

   父进程创建子进程,子进程再创建子进程。

   开机—引导操作系统—生成0号进程—

   创建1号进程—创建命令解释进程(shell)。

 2.原语操作(P50)

  * 原语(primitive):

    机器指令的延伸,完成特定功能的系统程序。

  * 原语操作:原子操作,操作中的动作全做或全不做。

 3.进程创建

   申请空闲的PCB—为新进程分配资源—

   将新进程的PCB初始化—将新进程加入到就绪队列中。

 4.进程终止

   找到并终止运行态指定进程的PCB;

   回收该进程所占用的全部资源;

   终止其所有子孙进程,回收全部资源;

   释放被终止进程的PCB,并从原来队列中摘走。

 5.进程阻塞(P51)

   停止进程的执行—保护进程的CPU现场—进程运行态改为阻塞……。

 6.进程唤醒

 7.进程映象的更换

   释放子进程原来的程序和数据所占用的内存空间;

   从磁盘上找出子进程所要执行的程序为数据;

   分配内存空间,装入新的程序和数据;……

2.3.2 进程的管理命令

 1.UNIX系统中进程状态(P52)

   用户态运行、核心态运行、创建态、终止态、

   在内存就绪、在内存睡眠、在内存暂停、

   在外存就绪、在外存睡眠、在外存暂停。

 2.UNIX系统中进程映象

  * PCB功能的结构:有proc结构和user结构。

  * proc结构的信息:

    进程状态、用户标志号(UID)、进程标志号(PID)、……。

  * user结构的信息:

    指向本进程proc结构的指针、实际的和有效的用户标志号、……。

  * UNIX系统中进程映象(P54)

proc结构

常驻内存
系统区

———→

user结构

可能对对换到外存上

———→

系统栈
用于保留现场的
中断保留区

———→

用户栈
函数调用所用的参数、局部变量

———→

数据段

非共享区,含有进程私有的程序和数据

———→

正文段
进程共享的区域,包括程序和常量

 3.ps命令

   process status 显示进程状态。

   例如:在主控台tty01上键入命令。

   $ ps

进程的ID号

终端标识

进程占用CPU的时间

与进程对应的命令名

PID

TTY

TIME

CMD

595

tty01

00:00:00

sh

607

tty01

00:00:00

ps

   ps命令选项:长格式显示 -l

F

S

UID

PID

PPID

C

PRI

进程标志 进程状态 用户ID号 进程ID号

父进程ID号

用CPU情况

优先级

 

NI

ADDR

SZ

WCHAN

TTY

TIME

CMD

nice值

虚地址

数据段和
栈段大小

睡眠进程
地址

终端
标识符

占用
CPU时间

与进程对应
命令名

 4.sleep命令(P55)

   进程暂停秒数。

   $ sleep 60

 5.后台命令符 &

   前台命令马上执行,后台命令让前台命令先执行。

   $ ls -l/usr&

 6.wait命令

   等待后台进程结束。

   $ wait 2080

   等待PID为2080的后台进程结束。

 7.kill命令

   终止进程的运行。

   # kill 678

 8.nice命令

   nice值:0 — 39,默认值:20,

   nice增量值:

   普通用户(0 — 19),只能降低或维持优先级。例如:

  $ nice -n 10 cc f1.c

  编译f1.c时的nice值为20+10

   超级用户root(-20 — -1),可以提高优先级。例如:

  # nice -n -10 vi abc

  编辑abc时的nice值为20-10

2.4 进程的相互作用和通信

2.4.1 进程的同步与互斥(P56)

 1.同步

   同步:进程间共同完成一项任务时直接发生相互作用的关系。

 例如:SPOOLing系统输入功能,设用进程A和B完成。

   进程A读信息到缓冲区;

   进程B加工缓冲区的信息并写到外存输入井中;

   制约关系:

   缓冲区取空内容时才能写入新信息,

   缓冲区写满内容才能取出内容加工。

 2.互斥

   互斥:进程竞争同一物理资源产生相互制约。

 例如:进程Pa分配打印机,进程Pb释放打印机。

打印机

分配

用户名

用户定义的设备名

0

1

lin

PRINT

1

0

 

 

2

1

xie

OUTPUT

 * Pa进程分配打印机的过程(P57)

   找出分配标志为0的打印机编号—标志置1—填写用户名和设备名。

 * Pb进程释放打印机的过程(P58)

   找出分配标志为1与被释放相同用户名的打印机编号—标志置0—

   清除该机用户名和设备名。

 * Pa和Pb不同时使用分配表,必须互斥执行,

   否则造成设备无法释放。

 3.临界资源和临界区

  * 临界资源(Critical Resource)

    一次仅允许一个进程使用的共享资源。

  * 临界区CS(Critical Section)

        进程访问临界资源的程序段。

  * 进入临界区的相互关系:

    一次仅允许一个进程进入;

    已有进程进入自己的临界区,其他进程必须等待;

    进程要限时内退出临界区;……

 2.4.2 同步机制及其应用

 1. 用锁操作原语实现互斥(P59)

  * 临界区设锁,进程操作步骤:

    关锁—执行临界区程序—开锁退出临界区。

  * 关锁原语 lock(w):

    while (w = = 0);   //已打开

    w=1;               //关锁

  * 开锁原语 unlock(w):

    w=0;               //开锁

 2. 信号量及P,V操作原语(P60)

  * 信号量:信号灯。

    包含两个成员。整型变量(信号量的值),指向PCB的指针。

  * 信号的量值(S):

    S>0:表示可用资源数;

    S<0:表示等待使用资源的进程数。

  * P(S)操作:wait操作,请求分配单位资源。

   S>0时,有资源可用,P操作请求分配单位资源,S=S-1。

   S<0时,无资源可用,排队等待别的进程释放资源。

  * V(S)操作:signal操作,释放单位资源。

   V操作释放单位资源,S=S+1;

   S>0时,有资源可用,则该进程继续运行;。

   S<=0时,有进程等待该资源,把PCB队头进程阻塞改为就绪。

 3. 用P,V原语实现互斥(P61)

    用P,V操作实现对打印机分配表的互斥操作。

 4. 用P,V原语实现简单同步(P62)

    简单供者和用者的关系

供者
……000000
信息(buf空)

——→

缓冲区

——→

用者
……
信息(buf满)

   

磁盘

 5. 生产者—消费者问题(P64)

 

out
↓使用方向——→

 

N-2

N-1

 

 

 

0

1

in
供应
方向

 

3

2

 

  * 环形缓冲池:绿色区有产品,蓝色区无产品。

  * in:生产者下次存入产品的单元。

  * out:消费者下次取出产品的单元。

2.4.3 进程间的通信(P66)

 1.共享存储器方式

   内存分配一片空间作为共享存储区。

 2.管道文件

   连接两个命令的一个打开文件。一个命令写入,一个命令读出。

 例如:UNIX系统中的两个命令间的通信:

   who | wc -l     //用户清单|统计文件

 3.消息传递方式

 (1)消息缓冲通信(P67)

   发送进程和接收进程利用消息缓冲队列进行通信。

 (2)信箱通信(P68)

   发送进程和接收进程利用信箱为中间设施进行通信。

  * 发送和接收消息的原语形式:

    send (mailbox,message)   //信箱、要发送的信息

    信箱格空时将消息送入相应信箱中。

    receive (mailbox,message)

    信箱满时将消息从信箱中取走。

     

自测题(P71)

 2.PCB的作用是什么?它是怎样描述进程的动态性质的?(P46、P275)

 3.进程的基本状态有哪几种?试描绘进程状态转换图。(P43、P275)

 7.什么是进程的互斥与同步?(P56、P275)

 10.简述信号量的定义和作用。P,V操作原语是如何定义的?

  (P60、P276)