进程与程序进程可以说是操作系统最为重要的概念了。进程是大多数系统的工作单元。这样的操作系统由一组进程组成:操作系统进程执行操作系统代码,用户进程执行用户代码。这些进程通过一定的调度算法可以进行并发执行。 对于进程的概念与程序的区别,我们可以说,进程就是一个程序被执行或者说一个有独立功能的程序关于某个数据集合的一次运行过程。 进程与程序有共五点主要区别。 1.进程是一个动态的过程,有生命周期,而程序是指令的集合,是静态的,可以永久存在。 2.进程=程序+数据+PCB(进程控制块) 3.一个程序可以对应多个进程。 4.一个进程可以包含多个程序。 5.没有被创建为进程的程序不能被调度执行。 从这五点我们可以看出程序与进程具有明显的区别。 进程的状态PCB:进程控制块,它是一个有结构的主存区,用于存放被创建进程相关管理和控制信息,系统通过PCB来感知进程的存在,进程被创建则PCB存在,进程撤销则PCB消失,所以说PCB是进程存在的唯一标志。 在操作系统中,进程总共有五种状态,分别是new状态(新状态),ready状态(就绪状态),running(运行状态),waiting状态(等待状态),terminated状态(终止状态)。 进程的状态 新状态:新状态表示进程正在创建中,其中要创建PCB,准备内存,填写PCB,等待被调度。 如果PCB的主存区已经被其他PCB占据,则无法创建进程,程序无法启动。 就绪状态:此状态表明进程通过高级调度进入主存,而且一切资源已经准备就绪,准备进入 CPU运行。此时的进程将开始处于宏观运行状态。 运行状态:表明此时进程正在CPU上运行其指令。此时进程处于微观进程状态。 等待状态:当在CPU上运行时,进程需要输入输出操作,此时进程会进入等待队列,等待相应操作完成并重新进入就绪队列。 终止状态:当在CPU上的进程完成执行就会进入终止状态,此时系统会回收资源,释放内存。 通过这几个状态,一个进程完成了整个执行过程。 进程的创建系统中的进程是以一种进程树的形式相联系的。父进程可以创建子进程,然后子进程可以创建更低一级的进程,逐层创建,形成一个进程树,子进程的所有资源要来源于父进程,所以子进程的资源时少于或等于父进程的资源。父进程与子进程的执行方式有两种,一种是两者并发执行,另一种是父进程等待子进程执行完成再进行执行。操作系统可视为最大的父进程。 进程的终止进程被终止通常是两个几个原因: 1.此进程执行完成,通过系统调用来删除自身。此时进程的资源可能会被释放,也可能会被返还给父进程。 2.父进程通过系统调用终止其子进程。子进程被父进程终止的原因有很多比如:子进程使用了超过他所分配到的资源;此时的子进程已经不再需要;父进程被终止则子进程也会跟随父进程的终止而终止。 这种父进程终止也不允许子进程存在的现象叫做级联终止。 进程之间的通信在某一时刻,操作系统中可能有若干进程在并发执行,有些进程与其他进程完全无关联,没有数据交换信息共享等,则这些进程被称为独立进程,另外的进程需要与其他进程发生数据交换或共享,则这些进程成为协作进程。 对于独立进程是不需要进程间通信的,而对于协作进程则需要通过一定方法实现进程之间的通信。能够实现进程之间传递的方法主要有两种:1.消息传递(message passing)2.共享主存(shared memory)。 1.消息传递:发送者通过系统调用(send())来发送数据,而接收者通过系统调用(rece())来接受数据,此过程需要系统内核的介入,所以速度会比较慢。 2.共享主存:发送者和接收者可以访问同一区域的内存,发送者将数据写入被被共享的主存,接收者通过读取内存来接收数据。 两种进程之间通信方式 消息传递和共享主存需要考虑多个进程间通信,单向和双向通信,同步和异步,生产者和消费者的问题,这里不再深究。 |
|