操作系统第二章:进程的描述与控制
Posted 九死九歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统第二章:进程的描述与控制相关的知识,希望对你有一定的参考价值。
2.1_1 进程的定义、组成、组织方式、特征
1.定义
首先,程序就是一个指令序列,早期的计算机仅支持单道程序。
这个时候内存只有两个部分,程序段和数据段。程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)
引入多道程序技术后,内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?
系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
PCB、程序段、数据段三部分构成了进程实体(进程映像),简称为进程。
- 进程的四种定义
- 进程是程序的一次执行过程
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
- 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程由程序段、数据段、PCB三部分组成”
2.组成
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.线程的实现方式及模型
用户级线程
内核级线程
内核级与用户级混合
多对一模型
一对一模型
多对多模型
以上是关于操作系统第二章:进程的描述与控制的主要内容,如果未能解决你的问题,请参考以下文章