进程与线程
2.1 进程的定义、组成、组织、特征
2.1.1进程的定义
程序:就是一个指令序列
早期的计算机只支持单道程序 --> 引入多道程序技术之后,为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念
进程实体(进程映像):由PCB、程序段、数据段三部分构成。一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
注意:PCB是进程存在的唯一标志
2.1.2 进程的组成
进程(进程实体)由程序段、数据段、PCB三部分组成。
2.1.3 进程的组织
2.1.3.1 链接方式
持有不同的指针,不同的指针指向不同的状态
2.1.3.2 索引方式
类似于链接方式,唯一不同是增加了索引表
2.1.4 进程的特征
2.1.5 总结
2.2 进程的状态与转换
2.2.1 进程的状态
另外两种状态:
2.2.2 进程状态的转换
2.2.3 总结
2.3 进程控制
2.3.1 什么是进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简化理解:反正进程控制就是要实现进程状态转换
2.3.2 如何实现进程控制?
用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。
这种不可被中断的操作即原子操作。
原语采用“关中断指令”和“开中断指令”实现
2.3.3 进程控制相关的原语
2.3.4 总结
2.4 进程通信
2.4.1 什么是进程通信
顾名思义,进程通信就是指进程之间的信息交换。
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。
但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。
进程通信的例子:逛微博时将内容分享到微信上,那么微信和微博就是有通信的
2.4.2 共享存储
进程一和进程二共享一个空间,操作系统提供共享空间和同步互斥工具,进程一和进程二不可以同时使用共享空间,他们对共享空间的访问是互斥的。
共享存储分为:
- 基于数据结构的共享:比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一-种低级通信方式
- 基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。
2.4.3 管道通信
“管道"就是用于连接读写进程的一个共享文件,其实就是在内存中开辟一个大小固定的缓冲区
管道采取半双工通信,如果需要实现双向同时通信,需要设置两个管道;
进程互斥访问管道,进程1写数据写满,进程2读取,取完管道中的数据,进程1才可以接着写入;
管道没写满不准读,没读完不准写,一个数据只能被读取一次
2.4.4 消息传递
进程间的数据交换以格式化的消息( Message)为单位。进程通过操作系统提供的“ 发送消息/接收消息”两个原语进行数据交换。
消息传递的两种方式:
- 直接通信方式:消息直接挂到接收进程的消息缓冲队列上
- 间接通信方式:消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”。Eg: 计网中的电子邮件系统