《计算机操作系统》——进程(状态、转换、控制、通信)

进程的基本知识

请添加图片描述

进程的定义

  早期的计算机只支持单道程序,发展为多道程序技术后,为了方便操作系统管理,完成个程序并发执行,引入了进程、进程实体的概念。
  系统为每个运行的程序配置一个数据结构,进程控制块(PCB),用来描述进程的各种信息。
  创建进程,就是创建进程实体中的PCB,而撤销进程,实际上是撤销进程实体中的PCB。PCB是进程存在的唯一标志。

  • 程序:指令序列
  • 进程实体:程序段、数据段、PCB三部分组成(静态
  • 进程:进程实体的运行过程,是系统进行资源分配调度的一个独立单位(动态

进程的组成

进程(进程实体)由程序段、数据段、PCB三部分组成请添加图片描述
PCB:进程的管理者,所需的数据都在PCB中

  1. 进程标识符:外部标识符和内部标识符
  2. 处理机状态
  3. 进程调度信息
  4. 进程控制信息

程序段:存放要执行的代码
数据段:存放程序运行过程中处理的各种数据

进程的组织

  对系统中的PCB进行有效的管理组织
线性方式
  将所有的PCB都组织在一个线性表中,将该表的首地址存放在内存的一个专用区域中。实现简单开销小,但每次查找时都需要扫描整张表
链接方式
  按照进程状态将PCB分为多个队列
  操作系统持有指向各个队列的指针
请添加图片描述
索引方式
  根据进程状态的不同,建立几张索引表
  操作系统持有指向各个索引表的指针
请添加图片描述

进程的特征

请添加图片描述

进程的状态与转换

请添加图片描述

进程的状态

三种基本状态:

  • 运行状态(Running):占有CPU,并在CPU上运行,单核处理机环境下,每一时刻最多只有一个进程处于运行态。
  • 就绪状态(Ready):已经具备除了处理机之外所有的运行条件,但由于没有空闲的CPU,而暂时不能运行,一旦获得处理机,即可立即进入运行态开始运行。
  • 阻塞状态(Waiting/Blocked):因等待某一事件而暂时不能运行。比如I/O操作,需要等待结果,提高CPU利用率。

另外两种状态(进行进程的创建与销毁):

  • 创建状态(New):操作系统为进程分配资源,初始化PCB
  • 终止状态(Terminated):操作系统回收进程拥有的资源、撤销PCB

进程的转换

请添加图片描述

  • 运行态->阻塞态:一种进程自身做出的主动行为
  • 阻塞态->就绪态:不被进程自身控制,被动行为
  • 不能由阻塞态转换为运行态,也不能有就绪态直接转换为阻塞态(进入阻塞态是进程主动请求,需要进程在运行时才能发出请求)

挂起操作

  暂时调到外存等待的进程状态称为挂起状态,挂起状态又能进一步细分为就绪挂起阻塞挂起两种状态。
  挂起和阻塞都是暂时不能获得CPU服务,但挂起状态是将进程映像调到外存去了(除了PCB),而阻塞状态下进程映像还在内存中。

  • 七状态模型

请添加图片描述

进程控制

请添加图片描述

进程控制的定义

进程控制就是要实现进程状态转换请添加图片描述

进程控制的实现

请添加图片描述

进程控制相关的原语

用原语实现进程控制,原语的特点是执行期间不允许被中断,原子操作是一个不可分割的基本单位,采用“关中断指令”和“开中断指令”实现
关/开中断指令权限非常大,是只允许在核心态下执行的特权指令

  • 关中断指令:拒绝接受外部中断信号
  • 开中断指令:开始接收外部中断信号,之后可中断处理程序


原语的功能

  • 更新PCB中的信息(修改进程状态标志。将运行环境保存到PCB、从PCB恢复运行环境)
  • 将PCB插入合适的队列
  • 分配/回收资源

创建原语
请添加图片描述
撤销原语
请添加图片描述
阻塞原语和唤醒原语
请添加图片描述
切换原语
请添加图片描述

进程通信

进程是分配系统资源的单位(包括内存地址空间),各进程拥有的内存地址空间相互独立,为了保证安全,一个进程不能直接访问另一个进程的地址空间
因此,操作系统提供了进程通信的三种方法:

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

共享存储

  在内存中开辟一个共享空间同时使进程1和进程2都能够访问,两个进程对共享空间的访问必须是互斥的,操作系统只负责提供共享空间和同步互斥工具(P、V操作)
请添加图片描述
基于数据结构的共享
  比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级的共享方式。
基于存储区的共享
  在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。

\

管道通信

  管道是指用于连接读写进程的一个共享文件,又名pipe文件,其实就是在内存中开辟一个大小固定的缓冲区。
请添加图片描述

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

    \

消息传递

  进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接受消息”两个原语进行数据交换。请添加图片描述
直接通信方式
  每个进程有
消息缓冲队列
,发送进程创建好格式化的消息体,通过发送原语发送给目标进程,挂到目标进程的消息缓冲队列,目标进程通过接收原语,依次把消息缓冲队列中的消息取走并进行处理。
请添加图片描述请添加图片描述

间接通信方式
  消息先发送到中间实体(信箱)中,因此也称为信箱通信方式,比如计网中的电子邮件系统。
  系统为各个通信的进程管理一个信箱,信箱用于管理消息,消息头里包含着信息的收发相关信息,写进程使用发送原语将信息发送到信箱中,再由读进程使用接收原语读取信箱中的消息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值