进程的定义
程序:就是一个指令序列
程序段、数据段、PCB三部分组成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
PCB是进程存在的唯一标志!
pid进程标识符:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,用于区分不同的进程
当进程切换时需要把进程当前的运行情况记录下来保存在PCB中,如程序计数器的值表示了当前程序执行到哪一句
进程的特征
- 动态性:进程是程序的一次执行,是动态地产生、变化和消亡的(最基本的特征)
- 并发性:内存中有多个进程实体,各进程可并发执行
- 独立性:进程是能够独立运行、独立获得资源、独立接受调度的基本单位
- 异步性:各进程按各自独立的、不可预知的速度向前推进、操作系统要提供“进程同步机制”来解决异步问题
- 结构性:每个进程都会配置一个PCB。在结构上看,进程由程序段、数据段、PCB组成
进程的状态与转化
三种基本状态
- 运行态:占有CPU,并在CPU上运行
- 就绪态:已经具备运行条件,但没有空闲CPU,而暂时不能运行
- 阻塞态:因等待某一事件暂时不能运行
另外两种状态
创建态:进程正在被创建,操作系统为进程分配资源、初始化PCB 终止态:进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB
运行态-->阻塞态是一种进程自身做出的主动行为
阻塞态-->运行态不是进程自身能控制的,是一种被动行为
注意:不能由阻塞态直接转化为运行态,也不能由就绪态直接转化为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)
进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换功能
用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。 这种不可被中断的操作即原子操作
进程通信
进程通信就是指进程之间的信息交换 进程是分配系统资源的单位,因此各进程拥有的内存地址空间相互独立 为了保证安全,一个进程不能直接访问另一个进程的地址空间
1.共享存储:两个进程之间设置一个共享空间,两个进程对共享空间的访问必须是互斥的
- 基于数据结构的共享(低级通信)
- 基于存储区的共享(高级通信)
2.管道通信:只能采用半双工通信,如果要双向同时通信,则需要设置两个管道
- 各进程要互斥地访问管道
- 数据以字符流的形式写入管道,当管道变满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
- 如果没写满,就不允许读。如果没读空,就不允许写。
3.消息传递:进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
- 直接通信方式:消息直接挂到接收方的消息队列里
- 间接(信箱)通信方式:消息发到中间体(信箱)