进程是支持程序执行的机制,可以理解为程序对数据或请求的处理过程,是一个独立功能的程序关于数据集合的一次运动活动,是操作系统进行资源分配的一个单位。在介绍相关知识之前,首先我们需要了解几个重要概念。
进程实体主要包含PCB,程序段,数据段三个部分构成进程实体又称进程映像。
PCB是指系统为每个运行的程序分配了一个数据结构被称为进程控制块。PCB是进程存在的唯一标志,创建进程和撤销进程实质上都是创建和撤销PCB。
进程实体是静态的指进程三要素存放的数据,而进程是一个动态执行的过程,一般我们不区分进程和进程实体的概念,所以也可以说进程是由PCB,程序段,数据段组成。
进程状态和控制切换
进程通信
进程通信顾名思义是指进程之间的信息交换,有三种方式,共享存储,消息传递,管道通信。各进程拥有的内存地址空间是独立的,为了保证安全,一个进程是不能直接访问另外一个进程的内存地址的。
共享存储
管道通信
消息传递
消息传递主要是通过发送和接受原语,主要有两种方式,一种是直接通信方式,消息会直接发送到对方的消息队列中,一种是间接通信方式,消息先放到中间信箱中存储。
线程
线程是CPU的基本执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。
进程互斥
为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:
1.空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
2. 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
3.有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿)
4. 让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。