2-1进程管理-进程与线程

1.进程

(1)进程是程序的一次执行过程
(2)进程是进程实体的运行过程
(3)进程是一个程序及其数据在处理机上顺序执行时所发生的活动
(4)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

特征
(1)动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的。动态性是进程最基本的特性
(2)并发性:内存中有多个进程实体,各进程可并发执行
(3)独立性:进程实体是一个能独立运行、独立获得资源、独立接受调度的基本单位
(4)异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
(5)结构性:每个进程都会配置一个PCB。结构上看,进程实体由程序段、数据段、PCB组成

2.进程控制块(PCB)

PCB是操作系统核心中一种数据结构,主要表示进程状态。包括进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息。

  • 作用:使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位或与其它进程并发执行的进程。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。操作系统对进程进行管理工作所需的信息都存在PCB中,PCB是进程存在的唯一标志。
  • 什么时候用到PCB?
    (1)当操作系统欲调度某进程运行时,要从该进程的PCB中查出其现行状态及优先级
    (2)在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据
    (3)进程在运行过程中,当需要和与之合作的进程实现同步、通信或访问文件时,也需要访问PCB
    (4)当进程处于某种原因而暂停运行时,又需要将其断点的处理机环境保存在PCB中

3.进程的状态与转换

(1)运行态、就绪态、阻塞态、创建态(新建)、结束态(终止)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)进程的组织方式
在这里插入图片描述

进程的组织——链接方式

在这里插入图片描述
进程的组织——索引方式
在这里插入图片描述
(3)进程控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
无论哪个进程控制原语,要做的无非三类事情:
(1)更新PCB中的信息:修改进程状态、保存/恢复运行环境
(2)将PCB插入合适的队列
(3)分配/回收资源(进程创建、终止)

4.进程通信

(1)共享存储
操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,而数据交换则由用户自己安排读/写指令完成
即:双方通过共享空间进行信息交换

①低级方式:基于数据结构的共享。比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式。
在这里插入图片描述
②高级方式:基于存储区的共享。操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式。

在这里插入图片描述

(2)消息传递
①直接通信方式:发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列上取得消息
P:send(Q,msg)
Q:receive(P,&msg)
在这里插入图片描述

②间接通信方式:发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。
这种中间实体一般称为信箱,如信箱A
P:send(A,msg)
Q:receive(A,&msg)

在这里插入图片描述

(3)管道通信
①管道只能采用半双工通信,如果要实现双向同时通信需要设置两个管道。
②各进程要互斥地访问管道(由操作系统实现)
③管道满,写进程阻塞,直到读进程将数据取走,才能唤醒;
管道空,读进程阻塞,直到写进程写入数据,才能唤醒。
④没满可写,没空可读。
⑤通常:一个管道允许多个写进程,但只允许一个读进程。在一些情况下,也可能允许多个读进程

5.进程和程序之间可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系
(1)一对一:执行一条命令或运行一个应用程序时
(2)一对多:进程在执行过程中可以加载执行不同的应用程序
(3)多对一:以不同的参数或数据多次执行同一个应用程序时
(4)多对多:并发地执行不同的应用程序

6.父进程创建子进程和主程序调用子程序有何不同?
父进程创建子进程后,父进程与子进程同时执行(并发)。主程序调用子程序后,主程序暂停在调用点,子程序开始执行,直到子程序返回,主程序才开始执行。

7.为什么进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式。

每个进程都有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,所以必须借助于操作系统的系统调用函数实现进程之间的通信。进程通信的主要方式有:
(1)共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信号量解决同步互斥问题。
(2)消息传递。通过发送/接收消息,系统调用实现进程之间的通信。当进程发送消息时,系统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中复制到用户缓冲区,然后释放消息缓冲区。
(3)管道系统。管道是先进先出的信息流,允许多个进程向管道写入数据,允许多个进程从管道读出数据。在读/写过程中,操作系统保证数据的写入顺序和读出顺序是一致的。进程通过读/写管道文件或管道设备实现彼此之间的通信。
(4)共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要信号量来解决文件共享操作中的同步和互斥问题。

8.线程

线程是一个基本的CPU单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务

9.线程和进程的比较

(1)调度。引入线程后,进程是资源分配的基本单位,而线程是调度的基本单位
(2)拥有资源。进程是拥有资源的基本单位,而线程不拥有系统资源
(3)并发性。进程和多线程之间都可以并发执行,引入线程的操作系统具有更好的并发性,提高了系统的吞吐量
(4)系统开销。进程切换开销大,线程切换开销小
(5)地址空间和其他资源。进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见
(6)通信方面。进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性。而线程可以直接读/写进程数据段来进行通信

10.线程的实现方式

(1)用户级线程:有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。应用程序可以通过使用线程库设计成多线程程序。

优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并行运行。

在这里插入图片描述

(2)内核级线程:线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。内核级线程是处理机分配的单位。

优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。
缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。
在这里插入图片描述

(3)组合方式:上述两种方式的结合

11.多线程模型

(1)多对一模型
将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。

  • 优点:效率高,开销小
  • 缺点:一个线程在使用内核服务时被阻塞,整个进程都会被阻塞;多个线程不能并行地运行在多处理机上
    在这里插入图片描述

(2)一对一模型
将每个用户级线程映射到一个内核级线程

  • 优点:当一个进程被阻塞后,允许另一个线程继续执行,并发能力强
  • 缺点:每创建一个用户级线程都需要创建一个内核级线程与之对应,开销大
    在这里插入图片描述

(3)多对多模型
将n个用户级线程映射到m个内核级线程上,m≤n
特点:克服了多对一模型并发度不高的缺点,也克服了一对一模型开销太大的缺点,还拥有二者的优点

在这里插入图片描述
12.为什么要引入进程?
在多道程序同时运行的背景下,进程之间需要共享系统资源,因此会导致各程序在执行过程中出现相互制约的关系,程序的执行会表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行、何时停顿,也无法看出它与其他执行程序的关系,因此程序这个静态概念已不能如实反应程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,乃至更好的支持和管理多道程序的并发执行,人们引入了进程的概念

13.什么是进程?进程由什么组成?
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序代码本身,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

一个进程实体由程序段、相关数据段和PCB三部分构成,其中PCB是标志一个进程存在的唯一表示,程序段是进程运行的程序的代码,数据段则存储程序运行过程中相关的一些数据。

14.进程是如何解决问题的?
进程把能够识别程序运行态的一些变量存放在PCB中,通过这些变量系统能够更好的了解进程的情况,并在适当时进行进程的切换,以避免一些资源的浪费,甚至划分为更小的调度单位——线程来提高系统的并发度

15.什么是多线程?多线程与多任务有什么区别?
多线程是指一个程序中可以定义多个线程并同时运行他们,每个线程可以执行不同的任务

区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数;多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务

16.若系统中没有运行进程,是否一定没有就绪进程?
是。若系统中未运行进程,则系统很快会选择一个就绪进程运行。只有就绪队列中无进程时,CPU才可能处于空闲状态。

17.若系统中既没有运行进程,又没有就绪进程,系统中是否就没有进程?
不一定。因为系统中的所有进程可能都处于等待态,可能处于死锁状态,也有可能因为等待的事件未发生而进入循环等待态。

18.在采用优先级进程调度时,运行的进程是否一定是系统中优先级最高的进程?
不一定。因为高优先级的进程有可能正处在等待队列中,进程调度会从就绪队列中选择一个进程占用CPU,这个被选中的进程可能优先级较低。

19.现代操作系统一般都提供多线程(多任务)运行环境

(1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?
为支持多线程的并发执行,系统为每个进程建立了一个数据结构:进程控制块(PCB),用于进程的管理和控制。PCB中记录了有关进程的一些描述信息和控制信息,包括进程标识符、进程当前的状态、优先级、进程放弃CPU的现场信息,以及指示组成进程的程序和数据在存储器中存放位置的信息、资源使用信息、进程各种队列的连接指针和反应进程之间的隶属关系的信息等。

(2)为支持多进程状态的变迁,系统至少应提供哪些进程控制原语?
在进程的整个生命周期中,会经历多种状态。进程控制的主要职能是对系统中所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程的状态转换等功能。在操作系统内核中,有一组程序专门用于完成对进程的控制。这些原语至少包括创建新进程原语、阻塞进程原语、唤醒进程原语,终止进程原语等操作。系统服务对用户开放,即用户可以通过相应的接口来使用它们

(3)执行每个进程控制原语时,进程状态发生什么变化?相应的数据结构发生什么变化?

  • 进程创建原语:从PCB集合中申请一个空白PCB,将调用者参数添入该PCB,设置记账数据,置新进程为“就绪”态。
  • 终止进程原语:用于终止完成的进程,回收其所占资源。包括消去其资源描述块,消去进程的PCB
  • 阻塞原语:将进程从运行态变为阻塞态。进程被插入等待事件的队列,同时修改PCB中相应的表项,如进程状态和等待队列指针等。
  • 唤醒原语:将进程从阻塞态变为就绪态。进程从阻塞态队列中移出,插入就绪队列,等待调度,同时修改PCB中相应的表项,如进程状态等

20.线程的状态与转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡__卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值