【什么是进程,进程的组成、组织方式、特征,进程控制,进程通信】

2.1 进程

Alt

2.1.1 进程的初步认识

1 定义

程序就是一个指令序列。早期的计算机只支持单道程序。引入多道程序技术之后,内存中同时放入多道程序,各个程序的代码、 运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?

为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。

系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)。

Alt

程序段数据段PCB三部分组成了进程实体进程映像)。一般情况下,我们把进程实体就简称为进程。

例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
注意:PCB是进程存在的唯一标志

从不同的角度,进程可以有不同的定义,比较传统典型的定义有:

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

以上定义都强调了进程的动态性

引入进程实体的概念后,可把进程定义为:

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

注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程由程序段、数据段、PCB三部分组成”。

2 组成

进程(进程实体)由程序段、数据段、PCB三部分组成。

Alt

  • PCB的组成
    Alt
  • 进程的组成
    Alt

3 组织方式

在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。

注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题。

Alt

  • 链接方式:
    操作系统持有一系列指针,每一个指针指向不同状态的进程队列,比如执行指针指向当前处于运行态(执行态)的进程。
    Alt
  • 索引方式:
    索引方式和链接方式类似,区别是其指针指向一个个索引表,而不是一个个队头。索引表的各个表项指向处于对应状态的各个进程所对应的PCB。操作系统会对不同状态的PCB建立不同的索引表。
    Alt

4 特征

进程和程序是两个截然不同的概念,相比于程序,进程拥有以下特征。
Alt

2.1.2 进程的状态与转换

Alt

进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。

1 进程的三种基本状态:

Alt

2 另外两种状态

  • 创建态(New,又称:新建态):
    进程正在被创建,操作系统为进程分配资源、初始化PCB
  • 终止态(Terminated,又称:结束态):
    进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB

综上:进程共有五种状态,运行态,就绪态,阻塞态,创建态,终止态。

那么什么情况下需要转换进程状态?

3 进程状态的转换

Alt

2.1.3 进程控制

Alt

什么是进程控制?

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
 
即:进程控制就是要实现进程状态转换。

Alt
原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成这种不可被中断的操作即原子操作
原语采用“关中断指令”和“开中断指令”实现
Alt
显然,关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令。

进程控制相关的原语

进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情:

  1. 更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
    a. 所有的进程控制原语一定都会修改进程状态标志
    b. 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
    c. 某进程开始运行前必然要恢复期运行环境
  2. 将PCB插入合适的队列
  3. 分配/回收资源
    Alt
    Alt
    Alt
    Alt

2.1.4 进程通信

Alt

什么是进程通信

顾名思义,进程通信就是指进程之间的信息交换。

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

为了保证安全,一个进程不能直接访问另一个进程的地址空间。
但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法:

  • 共享存储
  • 消息传递
  • 管道通信

共享存储

操作系统为两个进程分配一个共享空间。两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。
操作系统只负责提供共享空间和同步互斥工具(如P、V操作)。
Alt

  • 基于数据结构的共享
    比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢,限制多,是一种低级通信方式。
  • 基于存储区的共享
    在内存中画出一块共享存储区,数据的形式、存放位置都有进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。

管道通信

Alt

  1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道
  2. 各进程要互斥地访问管道。
  3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
  4. 如果没写满,就不允许读。如果没读空,就不允许写
  5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

消息传递

进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的 “ 发送消息/接收消息 ” 两个原语进行数据交换。

Alt

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值