计算机操作系统 慕课版 第2章 进程的描述

第二章 进程的描述

2.1、进程管理

多道程序环境下,处理机管理可归结为对进程的管理,所以,处理机管理主要研究进程的调度管理。

1.主要任务

对处理机进行分配,并对其运行进行有效的控制管理。

2.主要功能:

  1. 进程控制
  2. 进程同步
  3. 进程通信
  4. 进程调度

2.1.1、前趋图

前趋图是一个有向无环图,有向边表示结点间的偏序或前趋关系。

image-20211014183056507

直接前趋 直接后继 初始结点 终止结点 重量或权值

互不依赖的结点可并发执行


image-20211014183246692


image-20211014183322286


image-20211014183426396

2.1.2、程序的顺序执行

1、程序的顺序执行

一个较大的程序通常都由若干个程序段组成。

程序在执行时,必须按照某种先后次序逐个执行,仅当前一操作执行完后,才能执行后继操作。

image-20211014235052492

2、程序顺序执行时的特征

(1)顺序性

(2)封闭性

(3)可再现性

image-20211014235141941

2.1.3、程序的并发执行

1、程序的并发执行

image-20211015110123256

其中互不依赖部分可以并发执行。

2、程序并发执行时的特征

1)间断性

  1. 并发程序之间相互制约。
  2. 执行——暂停执行——执行。

2)失去封闭性

  1. 多个程序共享全机资源。
  2. 执行状态受外界因素影响。

3)不可再现性

程序经过多次执行后,虽然其执行时的环境和初始条件都相同,但得到的结果却各不相同。

2.2、进程的描述

2.2.1 进程的定义和特征

1、 进程的定义

进程实体由程序段、数据段、 进程控制块(PCB)构成。进程是程序的一次执行。

引入进程实体后的定义:

进程是进程实体的运行过程,是系统进行资源分 配和调度的一个独立单位。

进程的概念: 进程是操作系统中一个最基本也是最重要的概 念,但目前没有一个非常确切的定义。

为了强调进程并发性和动态性的特点,将其定义为: 进程是程序的一次执行,该程序可以与其它 程序并发执行。

2 、 进程的特征

1 )动态性

2 )并发性

3 )独立性

4 )异步性

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

  • 程序是指令的集合,本身没有任何运行的含义, 是一个静态概念;而进程是程序在处理机上的一次执 行过程,是一个动态概念。
  • 程序的存在是永久的;而进程是有生命期的,它 因创建而产生,因调度而执行,因缺少资源而暂停,因撤消而消亡。
  • 程序仅是指令的有序集合;而进程则由程序段数据段进程控制块组成。
  • 进程与程序之间不是一一对应的,即同一程序可 同时运行于若干个不同的数据集合上,它将属于不同的进程;而一个进程也可以执行多个程序

2.2.2、进程的三种基本状态

1.进程的三种基本状态及其转换

image-20211015111312477

  1. 就绪状态

一个较大的程序通常都由若干个程序段组成

程序在执行时,必须按照某种先后次序逐个执行,仅当前一操作执行完后,才能执行后继操作。

  1. 执行状态

已获得CPU,正在执行的状态

  • 单处理机:一个进程处于执行状态
  • 多处理机:多个进程处于执行状态
  1. 阻塞状态

正在执行的进程由于发生某事件而暂时无法继续执行的状态

  • 典型事件:请求I/O、申请缓冲空间
  • 根据阻塞原因,设置多个阻塞队列

2.进程的五种基本状态

  • 就绪状态
  • 执行状态
  • 阻塞状态
  • 创建状态
  • 终止状态

image-20211015111729151

2.2.3、挂起操作和进程状态转换

1.引入挂起状态的原因

(1) 终端用户的请求

(2) 父进程请求

(3) 负荷调节的需要

(4) 操作系统的需要

(5) 对换的需要

2.进程状态的转换

(1) 活动就绪→静止就绪

(2) 活动阻塞→静止阻塞

(3) 静止就绪→活动就绪

(4) 静止阻塞→活动阻塞

挂起实际上是将相应状态再降低一级

image-20211015112051777

2.2.4、进程管理中的数据结构

1、操作系统中用于管理控制的数据结构

image-20211015112151122

2、PCB的作用和特点

PCB的作用:

  • 作为独立运行基本单位的标志
  • 能实现间断性的运行方式
  • 提供进程管理所需要的信息
  • 提供进程调度所需要的信息
  • 实现与其他进程的同步与通信

3、PCB中的信息

graph LR A[PCB中的信息]-->B[进程标识符] A-->C[处理机状态] A-->D[进程调度信息] A-->E[阻塞事件] B-->F[内部标识符] B-->G[外部标识符] C-->H[通用寄存器] C-->I[指令计数器] C-->K[程序状态字PSW] C-->L[堆栈指针] D-->M[进程状态] D-->N[进程优先级] D-->O[调度相关信息] D-->e[阻塞事件] E-->b[程序和数据的地址] E-->c[进程同步和通信机制] E-->d[资源清单] E-->a[链接指针]

image-20211016104748846

4、PCB的组织方式

1)线性方式

image-20211016104839130

2)链接方式

image-20211016104925677

3)索引方式

image-20211016105007481

2.3、进程控制

为了确保系统的安全性,常将处理机的执行状态分为系统态用户态

系统态: 又称为管态,内核态,具有较高的特权,能 执行一切指令,访问所有寄存器和存储区。OS运行在管态。

用户态:又称为目态, 具有较低特权的执行状态,仅 仅能执行规定的指令,访问指定的寄存器和存储区。一般 情况下,用户程序只能在用户态运行。

进程控制由操作系统内核实现,运行于系统态。

OS内核是计算机硬件的第一次扩充,由一些与硬件紧 密相关的模块和运行频率较高的模块构成。内核常驻内存, 受特殊保护。

2.3.1、进程的创建

1、进程的层次结构

image-20211016105208975

2 、进程图

用于描述进程 家族关系的有向图;反映创建与被创建或父与子的关系。

image-20211016105302256

子进程可以继承父进程的所有资源,当子进程被撤消时, 应将从父进程那里获得的资源归还给父进程。 撤消父进程时也必须同时撤消其所有的子进程。

3、引起创建进程的事件

  1. 由系统内核创建新进程
    1. 用户登录
    2. 作业调度
    3. 提供服务
  2. 由应用程序创建新进程
    1. 应用请求

4、进程的创建

(1)申请空白PCB。

(2) 为新进程分配资源。

(3) 初始化进程控制块。

(4) 将新进程插入就绪队列,如果进程就绪队列能够 接纳新进程, 便将新进程插入就绪队列。

2.3.2、进程的终止

1、引起进程终止的事件

1)正常结束

2)外界干预

① 操作员或系统干预 ② 父进程请求 ③ 父进程终止

3)异常结束

① 越界错误 ② 保护错 ③ 非法指令 ④ 特权指令错 ⑤ 运行超时 ⑥ 等待超时 ⑦ 算术运算错 ⑧ I/O故障。

2、进程的终止过程

(1) 从PCB集合中检索出该进程的PCB,读出相应 状态;

(2) 终止该进程的执行,更改调度标志;

(3) 终止其所有子孙进程;

(4) 将其全部资源,归还给其父进程或系统;

(5) 将该进程(即它的PCB)从所在队列(或链 表)中移出。

2.2.3、进程的阻塞与唤醒

1、引起进程阻塞和唤醒的事件

  1. 请求系统服务
  2. 启动某种操作
  3. 新数据尚未到达
  4. 无新工作可做

2、进程阻塞过程

(1)进程通过调用阻塞原语block把自己阻塞。 进程的阻塞是进程自身的一种主动行为。

(2)把PCB中的现行状态改为阻塞;

(3)将PCB插入阻塞队列;

(4)将处理机分配给另一就绪进程。

3、进程唤醒过程

当被阻塞进程所期待的事件出现时,则由有关进程调 用唤醒原语wakeup,将等待该事件的进程唤醒。

唤醒原语执行的过程:

(1)把该进程从阻塞队列中移出;

(2)将其PCB中的现行状态改为就绪;

(3)将该进程的PCB插入就绪队列。

image-20211016110126959

2.2.4、进程的挂起与激活

1、进程的挂起

当出现了引起进程挂起的事件时,系统利用挂起原 语suspend将指定进程或处于阻塞状态的进程挂起。

挂起原语的执行过程:

活动就绪——>静止就绪

活动阻塞——>静止阻塞

执行状态——>重新调度(静止就绪)

2、进程的激活过程

系统将利用激活原语active将指定进程激活。 激活原语先将进程从外存调入内存,

检查该进程的现行状态:

静止就绪——>活动就绪

静止阻塞——>活动阻塞

2.4、进程通信

进程通信的基本概念

  • 进程通信:是指进程之间交换信息。
  • 低级通信:与系统内核或低层控制密切联 系的信息交换。
  • 高级通信:是指用户可直接利用操作系统 所提供的一组通信命令,高效地传送大量数据 的一种通信方式。

2.4.1、进程通信的类型

1、 共享存储器系统

  • 基于共享数据结构的通信方式
  • 基于共享存储区的通信方式

2、 消息传递系统

  • 直接通信方式
  • 间接通信方式

3、 管道通信

4、 客户机-服务器系统

1、共享存储器系统通信

在该通信方式中,互相通信的进程共享某些数据结构或共享存储区,进程能通过这些空间进行通信:

1)基于共享数据结构的通信方式。在这种通信方式中,要 求诸进程公用某些数据结构,借以实现诸进程间的信息交换,如 在生产者-消费者问题中的有界缓冲区。操作系统仅提供共享存储 器,由程序员负责对公共数据结构的设置及对进程间同步的处理。 这种通信方式仅适用于传递相对较少的数据,通信效率低下,属 于低级通信。

2)基于共享存储区的通信方式。为了传输大量数据,在内 存中划出了一块共享存储区域,诸进程可通过对该共享区的读或 写交换信息,实现通信,数据的形式和位置甚至访问控制都是进 程负责,而不是OS。这种通信方式属于高级通信。需要通信的进 程在通信前,向系统申请获得共享存储区中的一个分区,并将其 附加到自己的地址空间中,便可对其中的数据进行正常读、写, 读写完成或不再需要时,将归还给共享存储器。

2、管道(Pipe)通信

所谓“管道”,是指用于连接一个读进程和一个写进程以实现 他们之间通信的一个共享文件,又名pipe文件。向管道(共享文件) 提供输入的发送进程(写进程)以字符流方式将大量数据写入,接 收管道输出的接收进程(读进程)从管道中接收数据。这种方式首 创于UNIX系统,由于可以大量传送数据,被其他OS广泛应用。

管道机制必须提供以下三方面的协调能力:

互斥:有进程对管道执行读写操作,其他进程应该等待。

同步:当写进程写入一定数量数据到管道,然后睡眠等待。 直至输出进程取走数据唤醒它。当读进程读一个空管道,则也应睡 眠,直至写进程写入数据到管道才将它唤醒。

③ 确定对方是否存在,只有存在,才能通信。

3、消息传递系统

不借助任何共享存储区或数据结构,而是以格式化的消息(messag)为单位,为通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原 语),在进程间进行信息传递,完成进程间的数据交换。

1)直接通信方式:指发送进程利用OS所提供的发送原语,直接把消息发送给目标进程;

2)间接通信方式:指发送和接受进程,都通过共享中间实体(简称邮箱)的方式进行消息的发送和接受,完成进程间的通信。

4、客户-服务器系统

在网络环境的各种应用领域已成为当前主流的通信实现机制,主 要的实现方法分三类:套接字、远程过程调用和远程方法调用。

1)套接字(Socket) 套接字,源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。套接字分为以下两类:

基于文件型:通信进程都运行在同一台机器的环境中,套接字是 基于本地文件系统支持的,一个套接字关联到一个特殊的文件,通信 双方通过这个特殊文件的读写实现通信,其原理类似于前面所讲的管 道。

基于网络型:该类型通常采用的是非对称方式通信,即发送者需要 提供接收者命名。通信双方的进程运行在不同的主机的网络环境下, 被分配了一对套接字,一个属于接收进程(或服务进程),一个属于发送进程(或客户进程)。

优势:不仅适用于同一台计算机内部的进程通信,也适用于网络 环境中不同计算机间的进程通信。

2)远程过程调用和远程方法调用

远程过程调用是一个通信协议,用于通过网络连接系统。该协议允 许一台主机系统上的进程调用另一台主机系统上的进程,通常表现为常 规的过程调用。

特别说明:如果涉及的软件采用面向对象编程,则远程过程调用也 可以称为软件方法调用。

为了使远程过程调用看起来与本地过程调用一样,也就是说远程过 程调用的思想是使得远程调用尽可能像本地调用一样。调用过程应该不知道被调用过程是在另外一台计算机上执行。 反过来也是如此, 被调用过程也不应该知道是由哪个机器的进程调用的。引入了存根的概念

(Stub):在本地客户端,每个能够独立运行的远程过程都有一个客 户存根。本地进程调用远程过程,实际是调用该过程关联的存根;与此 类似,在每个远程进程的服务器端,其所对应的实际可执行进程也存在 一个服务器存根与其关联。

2.4.2、消息传递通信的实现方式

1、直接消息传递系统

​ 1)直接通信原语

这是指发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。此时,要求发送进程和接收进程都以显 式方式提供对方的标识符。通常,系统提供下述两条通信命 令(原语):

  1. Send(Receiver, message); 发送一个消息给接收进程;
  2. Receive(Sender, message); 接收Sender发来的消息;

非对称寻址

在某些情况下,接收进程可与多个发送进 程通信,因此,它不可能事先指定发送进程。 例如,用于提供打印服务的进程,它可以接收来自任何一个进程的“打印请求”消息。 对于这样的应用,在接收进程接收消息的原 语中的源进程参数,是完成通信后的返回值, 接收原语可表示为: Receive (id, message);

2)消息的格式

在消息传递系统中所传递的消息,必须具有一定的消息格式。在单机系统环境中,由于发送进程和接收进程处于同一台机器中,有着相同的环境,故其消息格式比较简单;但在计算机网络环境下,不仅源和目标进程所处的环境不同,而且信息的传输距离很远,可能要跨越若干个完全不同的网络,致使所用的消息格式比较复杂。通常,可把一个消息分成消息头和消息正文两部分。消息头包括消息在传输时所需的控制信息,如 源进程名、目标进程名、消息长度、消息类型、消息编号及发 送的日期和时间;而消息正文则是发送进程实际上所发送的数据。

在某些OS中,消息采用比较短的定长消息格式,这便减少了对消息的处理和存储开销。这种方式可用于办公自动化系统中,为用户提供快速的便笺式通信;但这对要发送较长消息的用户是不方便的。在有的OS中,采用变长的消息格式, 即进程所发送消息的长度是可变的。系统无论在处理还是在存储变长消息时,都可能会付出更多的开销,但这方便了用 户。这两种消息格式各有其优缺点,故在很多系统(包括计算机网络)中,是同时都用的。

3)进程同步方式

在进程之间进行通信时,同样需要有进程同步机制,以使 诸进程间能协调通信。不论是发送进程,还是接收进程,在完 成消息的发送或接收后,都存在两种可能性,即进程或者继续发送(接收),或者阻塞。由此,我们可得到以下三种情况:

(1) 发送进程阻塞,接收进程阻塞。这种情况主要用于进 程之间紧密同步(tight synchronization),发送进程和接收进程 之间无缓冲时。这两个进程平时都处于阻塞状态,直到有消息 传递时。这种同步方式称为汇合(rendezrous)。

(2) 发送进程不阻塞,接收进程阻塞。这是一种应用最 广的进程同步方式。平时,发送进程不阻塞,因而它可以尽 快地把一个或多个消息发送给多个目标; 而接收进程平时则处于阻塞状态,直到发送进程发来消息时才被唤醒。例如, 在服务器上通常都设置了多个服务进程,它们分别用于提供不同的服务,如打印服务。平时,这些服务进程都处于阻塞状态,一旦有请求服务的消息到达时,系统便唤醒相应的服务进程,去完成用户所要求的服务。处理完后,若无新的服务请求,服务进程又阻塞。

(2) 发送进程不阻塞,接收进程阻塞。这是一种应用最 广的进程同步方式。平时,发送进程不阻塞,因而它可以尽 快地把一个或多个消息发送给多个目标; 而接收进程平时 则处于阻塞状态,直到发送进程发来消息时才被唤醒。例如, 在服务器上通常都设置了多个服务进程,它们分别用于提供不同的服务,如打印服务。平时,这些服务进程都处于阻塞 状态,一旦有请求服务的消息到达时,系统便唤醒相应的服 务进程,去完成用户所要求的服务。处理完后,若无新的服 务请求,服务进程又阻塞。

4)通信链路

为使在发送进程和接收进程之间能进行通信,必须在 两者之间建立一条通信链路(communication link)。有两种 方式建立通信链路。第一种方式是由发送进程在通信之前用显式的“建立连接”命令(原语)请求系统为之建立一条通信链路;在链路使用完后,也用显式方式拆除链路。这种方式主要用于计算机网络中。第二种方式是发送进程无须明确提出建立链路的请求,只须利用系统提供的发送命令(原语),系统会自动地为之建立一条链路。这种方式主要用于单机系统中。

信箱通信

间接通信方式指进程之间的通信需要通过作为共享数据结构的实体。该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。通常把这种中间实体称为信箱。消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。因此,利用信箱通信方式, 既可实现实时通信,又可实现非实时通信。

系统为信箱通信提供了若干条原语,分别用于信箱的创建、撤消和消息的发送、接收等。

信箱通信

发送进程申请建立一个与接收进程链接的信箱

发送进程把消息送到信箱,接收进程从信箱中取出消息,从而完成进程间信息交换

1)信箱的数据结构

​ 信箱头:信箱名、信箱大小、已存信件数、空格子数

​ 信箱体:由若干格子组

image-20211016111641388

2)信箱通信原语

(1) 信箱的创建和撤消。进程可利用信箱创建原语来建立 一个新信箱。创建者进程应给出信箱名字、信箱属性(公用、 私用或共享);对于共享信箱,还应给出共享者的名字。当 进程不再需要读信箱时,可用信箱撤消原语将之撤消。

(2) 消息的发送和接收。当进程之间要利用信箱进行通信时,必须使用共享信箱,并利用系统提供的下述通信原语进行通信。

  1. Send(mailbox, message); 将一个消息发送到指定信箱;
  2. Receive(mailbox, message); 从指定信箱中接收一个消息;

信箱的类型

1.信箱的归属

  1. 公用信箱
  2. 私用信箱
  3. 共享信箱

2.发送进程 和接收进 程之间的关系

一对一:私有

一对多:广播

多对一:客户/服务器

多对多:公共信箱

2.5、线程的基本概念

2.5.1、线程的引入

引入进程是为了程序间的并发执行,以改善资源的利用率,提高系统吞吐量。

传统进程既是资源分配的基本单位,又是调度分派的基本单位,这使的系统在进程管理调度时的时空开销较大,速度较低。

引入线程将资源分配与调度分派分开,进一步提高系统的并发程度,提高系统的吞吐率和资源利用率。

2、线程的特点

线程是进程的一个实体,是比进程更小的能 被系统独立调度和分派的基本单位。

线程基本上不拥有系统资源,但可以与同一进程的其它线程共享该进程的全部资源。

同一进程的多个线程间可并发执行,它们之间可存在创建与被创建关系。

线程同进程一样,有就绪阻塞执行三种基本状态。

2.5.2、线程与进程的比较

在调度,并发性,拥有资源,系统开销,独立性,支持多处理机系统等几个方面的比较:

线程: 作为调度和分 派的基本单位

进程: 作为资源拥有的基本单位

2.5.3、线程的状态和线程控制块

1.线程运行状态

如同传统的进程一样,在各线程之间也存在 着共享资源和相互合作的制约关系,致使线程在 运行时也具有间断性。相应地,线程在运行时, 也具有下述三种基本状态:

① 执行状态,表示线程正获得处理机而运行;

② 就绪状态,指线程已具备了各种执行条件, 一旦获得CPU便可执行的状态;

③ 阻塞状态,指线程在执行中因某事件而受 阻,处于暂停执行时的状态。

2.线程控制块

每一个线程是一个动态对象,它表示进程中的一条控制线索,执行一系列指令操作,是一个相对独立的、 可被调度运行的基本单位。

在进程的地址空间中可以有多个线程,它们可以并发 执行,这就需要一张单独的表来记录线程控制与管理 等信息,这张表称为线程控制表。

为了管理系统中的进程和线程,不但要有进程控制块, 还要为每个线程设置一个线程控制块TCB。线程控制 块由一个线程标识符和一张线程描述表组成,线程描 述表记录了线程的属性和调度所需的数据。如线程状 态、寄存器组(用于存放现场信息)、堆栈、以及有 关调度和I/O活动的信息。

3.多线程OS中的进程属性

多线程是OS在一个进程内支持多个线程的能力。

image-20211016112543372

多线程OS中的进程有以下属性:

(1) 作为系统资源分配的单位。

(2) 可包括多个线程。

(3) 进程不是一个可执行的实体。

posted @ 2021-10-16 15:36  NotYourferry  阅读(741)  评论(0编辑  收藏  举报