【操作系统】第二章:进程的描述与控制

2.1_1 进程的定义、组成、组织方式、特征

1.定义

  首先,程序就是一个指令序列,早期的计算机仅支持单道程序。

  这个时候内存只有两个部分,程序段和数据段。程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)

  引入多道程序技术后,内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?

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

  PCB、程序段、数据段三部分构成了进程实体(进程映像),简称为进程。

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

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

2.组成

  PCB部分:
PCB
  另外两个组成部分就是程序段和数据段了,此处略。

  PCB是进程的管理者(操作系统)所需的数据都在PCB中。另外两个程序本身需要的数据。

3.组织:

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

  注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
进程的组织方式
  链接方式:链式存储
链接方式
  索引方式:顺序存储
索引方式

4.特征:

  进程和程序是两个概念,相比于程序,进程有以下特征:
进程的特征

2.1_2 进程的状态与转化

1.三种基本状态

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

  另外,就绪队列只有一个,而阻塞队列是有好多个,每个事件有一个阻塞队列。
进程的三种状态

2.另外两种状态:

另外两种状态
  创建态:
创建态
  终止态
在这里插入图片描述

3.状态之间的转换:

进程的状态转换

2.1_3 进程控制

1.进程控制的过程:

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

  • 创建进程:需要初始化PCB、分配系统资源。
  • 创建态→就绪态:需修改PCB内容和相应队列
  • 就绪态→运行态:需恢复进程运行环境、修改PCB内容和相应队列
  • 运行态→就绪态(进程切换):需保存进程运行环境、修改PCB内容和相应队列
  • 运行态→阻塞态:需保存进程运行环境、修改PCB内容和相应队列
  • 阻塞态→就绪态:需修改PCB内容和相应队列。如果等待的是资源,则还需为进程分配系统资源
  • 运行态→终止态:需回收进程拥有的资源,撤销PCB
2.原语

  用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可被中断的操作即原子操作

  原语采用**“关中断指令”和“开中断指令”**实现。

  (有点像java里边的sychronized关键字)
原语
  显然,关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令

  无论是那条原语指令,要做的无非三件:

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

2.1_4 进程通信

1.何为进程通信?

  顾名思义,进程通信就是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
进程通信
  为了保证安全,一个进程不能直接访问另一个进程的地址空间。

  但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。如图:
操作系统提供的进程通信方法

2.方法一:共享存储

  共享空间的互斥说的是我读写的时候你不能读写,你读写的时候我也不能读写。
共享存储

3.方法二:管道存储

  管道存储的半双工互斥则是我写的时候你不能读,我读的时候你不能写。必须把管道写满了,才能释放掉让对方读。读完了以后管道就是空的,释放掉,让另一方写。
管道通信

4.方法三:消息传递

消息传递
  如上图,消息传递方式还分为两个小类:直接通信方式和间接通信方式。

  其中,直接通信方式就是直接把消息挂在接收进程的消息缓冲队列上。
直接通信方式
直接通信方式
  而间接通信方式则是消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”。例如计网中的电子邮件系统。
间接通信方式

2.1_1 线程的概念以及多线程模型

1.啥叫多线程?为啥要引入多线程?

  我就不咋写了,咱又不是没学过javaThread编程

  可以八线程理解为轻量级进程

  线程是一个基本的CPU执行单元,也是程序执行流的最小单元

  引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)

  引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

2.线程的属性

在这里插入图片描述
引入线程机制后的变化

3.线程的实现方式及模型

  用户级线程
用户级线程
  内核级线程
内核级线程
  内核级与用户级混合
混合
  多对一模型
多对一模型
  一对一模型
一对一模型
  多对多模型
多对多模型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九死九歌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值