一、进程的定义及特征
定义:
多道程序设计技术的引入,实现了资源的共享和程序的并发执行。为了描述并发执行的特点,引入了进程的概念。进程是可高并发执行的程序在一个数据集合上运行的过程,具有动态性、并发行、独立性、异步性、和结构特征。进程管理包括进程控制、进程同步、进程通信和进程调度。 同一数据的不同操作之间、不同数据的同一操作之间存在着前趋关系。但不同数据的不同操作之间可考虑并发执行。
特征:
-
动态性——是进程最基本的特性。进程有一定的生命期,由创建而产生,由调度而执行,因得不到资源而暂停执行,由撤消而消亡。而程序是一组有序指令的集合,是静态实体。
-
并发性——多个进程在一段时间间隔内同时运行。
-
独立性——进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。
-
异步性——进程按各自独立的、不可预知的速度向前推进。
-
结构特征——进程实体由程序段、数据段和进程控制块PCB组成。
进程控制块: 进程控制块是进程实体的一部分,它记录了操作系统所需的、用于描述进程情况及控制进程运行所需的所有信息。 进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其他进程并发执行的进程。 PCB是进程存在的唯一标志。创建新进程时建立一个PCB,结束进程时回收PCB。 PCB经常被系统访问,应该常驻内存。 PCB的内容: 进程标识符信息——外部标识符、内部标识符(唯一整数)。 处理机状态信息 进程调度信息——进程的状态、优先级等。 进程控制信息——程序和数据地址、同步机制、资源清单等。 PCB的组织方式: 链表方式——相同状态的PCB,链接成一个队列。 索引方式——建立索引表
二、进程的控制
1. 操作系统的内核
本质
- 内核是计算机硬件的第一层扩充软件,由与硬件紧密相关的模块以及运行频率较高的模块组成,常驻内存,以提高OS的运行效率。
支撑功能
-
中断处理:是内核中最基本的功能,它是整个操作系统赖以活动的基础。内核只对中断进行“有限的处理”,然后转由有关进程继续处理。
-
时钟管理
-
原语操作:原语本身是由若干条指令构成,用于完成一定功能的一个过程。原语是一个不可分割的原子操作。
资源管理功能
- 进程管理、存储器管理和设备管理。
2. 进程的创建、终止、阻塞和唤醒
进程的创建
- 进程图——是描述进程家族关系的有向树。有向边表示了进程的创建关系,及父子关系(并不能说明前趋关系),子进程可以继承父进程所拥有的资源,父进程撤销时必须同时撤销所有子进程。
引起创建进程的事件
进程的创建——创建原语
- 申请空白PCB、为进程分配资源、初始化PCB、插入就绪队列
进程的阻塞与唤醒
- 原因——请求系统服务、启动某种操作、新数据未到达、无新工作
- 阻塞——当出现上述时间,进程无法继续执行,进程通过阻塞原语block把自己阻塞,是进程自身的一种主动行为。
- 唤醒——当阻塞事件结束,由发现者进程调用唤醒原语将阻塞进程的唤醒,是一种被动行为。
进程的终止
- 正常结束、异常结束、外界干预
三、进程间的通信
进程通信
-
共享存储器系统:
-
基于共享数据结构的通信方式
-
基于共享存储区的通信方式
-
-
消息传递系统:
-
直接通信方式:进程间直接进行数据交互
-
间接通信方式:进程间通过实体进行数据交互
-
-
管道通信:
- 共享文件的通信方式
竞争条件
- 两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件。
三个需要处理的问题
如何避免竞争条件
临界区避免竞争条件
把对共享资源进行访问的程序片段称作临界区域(critical region)或临界区(critical section)
实现互斥访问(三种)
-
睡眠和唤醒实现互斥
-
信号量实现互斥
-
忙等待的互斥:(五种)
- 屏蔽中断(Disabling interrupts):每个进程在刚刚进入临界区后立即屏蔽所有中断(包括时钟中断),并在离开前再打开所有中断。
- 锁变量(Lock variables):违反了条件1
- 严格轮换法(Strict alternation):违反了条件3
- P解法(Peterson’s solution):
- TSL指令:
忙等待的互斥的缺点:
-
忙等待,浪费CPU
-
优先级反转问题:H进程优先级高占用着CPU,L进程优先级低且处于临界区中,因获取不到CPU无法从临界区出来。
四、生产者与消费者的问题
题目需求:
睡眠和唤醒进行互斥的实现:
存在严重的竞争条件:
信号量的定义:
使用信号量进行互斥的实现:(解决丢失的wakeup() )