1) 进程是程序及其数据在计算机上的一次运行活动,是一个动态的概念。进程的运行实体是程序,离开程序的进程没有存在的意义。从静态角度看,进程是由程序、数据和进程控制块(PCB)三部分组成的。而程序是一组有序的指令集合,是一种静态的概念。
2) 进程是程序的一次执行过程,它是动态地建立和消亡的,具备必定的生命周期,是暂时存在的;而程序则是一组代码的集合,它是永久存在的,可长期保存。
3) 一个进程能够执行一个或几个程序,一个程序也能够构成多个进程。进程可建立进程,而程序不可能造成新的程序。
4) 进程与程序的组成不一样。进程的组成包括程序、数据和PCB。算法
具备等待队列的信号量的实现可能致使这样的状况:两个或多个进程无限地等待一个事件,而该事件只能由这些等待进程之一来产生。这里的事件是V操做的执行(即释放资源)。当出现这样的状态时,这些进程称为死锁(Deadlocked)。
为了加以说明,考虑到一个系统由两个进程P0和P1组成,每一个进程都访问两个信号量S和Q,这两个信号量的初值均为1。
安全
假设进程P0执行P(S),接着进程P1执行P(Q)。当进程P0执行P(Q)时,它必须等待直到进程P1执行V(Q)。相似地,当进程P1执行P(S),它必须等待直到进程P0执行V(S)。因为这两个V操做都不能执行,那么进程P0和进程P1就死锁了。
说一组进程处于死锁状态是指:组内的每一个进程都等待一个事件,而该事件只可能由组内的另外一个进程产生。这里所关心的主要是事件是资源的获取和释放。
与死锁相关的另外一个问题是无限期阻塞(Indefinite Blocking)或“饥饿” (Starvation),即进程在信号量内无穷等待的状况。
产生饥饿的主要缘由是:在一个动态系统中,对于每类系统资源,操做系统须要肯定一个分配策略,当多个进程同时申请某类资源时,由分配策略肯定资源分配给进 程的次序。有时资源分配策略多是不公平的,即不能保证等待时间上界的存在。在这种状况下,即便系统没有发生死锁,某些进程也可能会长时间等待。当等待时 间给进程推动和响应带来明显影响时,称发生了进程“饥饿”,当“饥饿”到必定程度的进程所赋予的任务即便完成也再也不具备实际意义时称该进程被“饿死”。
例如,当有多个进程须要打印文件时,若是系统分配打印机的策略是最短文件优先,那么长文件的打印任务将因为短文件的源源不断到来而被无限期推迟,致使最终的“饥饿”甚至“饿死”。
“饥饿”并不表示系统必定死锁,但至少有一个进程的执行被无限期推迟。“饥饿”与死锁的主要差异有:数据结构
进入“饥饿”状态的进程能够只有一个,而因为循环等待条件而进入死锁状态的进程却必须大于或等于两个。并发
处于“饥饿”状态的进程能够是一个就绪进程,如静态优先权调度算法时的低优先权进程,而处于死锁状态的进程则一定是阻塞进程。ide
银行家算法的主要思想是避免系统进入不安全状态。在每次进行资源分配时,它首先检查系统是否有足够的资源知足要求,若是有,则先进行分配,并对分配后的新 状态进行安全性检查。若是新状态安全,则正式分配上述资源,不然就拒绝分配上述资源。这样,它保证系统始终处于安全状态,从而避免死锁现象的发生。操作系统
并发进程的执行会产生相互制约的关系:一种是进程之间竞争使用临界资源,只能让它们逐个使用,这种现象称为互斥,是一种竞争关系;另外一种是进程之间协同完成任务,在关键点上等待另外一个进程发来的消息,以便协同一致,是一种协做关系。3d
进程是系统资源的使用者,系统的资源大部分都是以进程为单位分配的。而用户使用计算机是为了实现一串相关的任务,一般把用户要求计算机完成的这一串任务称为做业。调试
批处理系统中的能够经过磁记录设备或卡片机向系统提交批做业,由系统的SPOOLing 输入进程将做业放入磁盘的输入井中,做为后备做业。做业调度程序(通常也做为独立的进程运行)每当选择一道后备做业运行时,首先为该做业建立一个进程(称 为该做业的根进程)。该进程将执行做业控制语言解释程序解释该做业的做业说明书。父进程在运行过程当中能够动态地建立一个或多个子进程,执行说明书中的语 句。例如,对一条编译的语句,该进程能够建立一个子进程执行编译程序对用户源程序进行编译。相似地,子进程也能够继续建立子进程去完成指定的功能。所以, 一个做业就动态地转换成了一组运行实体——进程族。当父进程遇到做业说明书中的“撤出做业”的语句时,将该做业从运行状态改变为完成状态,将做业及相关结 果送入磁盘上的输出井。做业终止进程负责将输出井中的做业利用打印机输出,回收做业所占用的资源,删除做业有关数据结构,删除做业在磁盘输出井中的信息, 等等。做业终止进程撤除一道做业后,可向做业调度进程请求进行新的做业调度。至此,一道进入系统运行的做业所有结束。blog
在分时系统中,做业的提交方法、组织形式均与批处理做业有很大差别。分时系统的用户经过命令语言逐条地与系统应答式地输入命令,提交做业步。每输入一条 (或一组)命令,便直接在系统内部对应一个(或若干个)进程。在系统启动时,系统为每一个终端设备创建一个进程(称为终端进程),该进程执行命令解释程序, 命令解释程序从终端设备读入命令解释执行用户输入的每一条命令。对于每一条终端命令,能够建立一个子进程去具体执行。若当前的终端命令是一条后台命令,则 能够和下一条终端命令并行处理。各子进程在运行过程当中彻底能够根据须要建立子孙进程。终端命令所对应的进程结束后,命令的功能也相应处理完毕。用户本次上 机完毕,用户经过一条登出命令即结束上机过程。
分时系统的做业就是用户的一次上机交互过程,能够认为终端进程的建立是一个交互做业的开始,登出命令运行结束表明用户交互做业的终止。
命令解释程序流程扮演着批处理系统中做业控制语言解释程序的角色,只不过命令解释程序是从用户终端接收命令。生命周期
在同时支持交互和批处理的操做系统中,人们能够用交互的方式准备好批做业的有关程序、数据及做业控制说明书。好比,可用交互式系统提供的全屏幕编辑命令编 辑好自编的一个天气预报程序,用编译及装配命令将程序变成可执行文件,用调试命令进行程序调试。在调试成功后,用户天天都要作以下工做:准备原始天气数 据,运行天气预报执行文件处理原始数据,把结果打印出来等。这时,用交互系统提供的全屏幕编辑命令编辑好将要提交的做业控制说明书文件,如Windows 系统的BAT文件和Linux系统的sh文件。而后用一条做业提交命令将做业提交给系统做业队列中。系统有专门的做业调度进程负责从做业队列中选择做业, 为被选取的做业建立一个父进程运行命令解释程序,解释执行做业控制说明书文件中的命令。