揭开进程的神秘面纱

2019-07-14 11:10发布

进程
进程的概念 进程是正在运行的程序实例,是系统资源分配和调度的基本单位.   进程的特征 动态性,并发性   进程的构成 程序块+PCB+数据块 其中PCB是进程存在的唯一标志,描述了进程的基本状况,系统通过进程的PCB来调度和控制进程.PCB一般是常驻内存的,这样系统就可以方便及时地管理进程(而程序和数据可能因为进程挂起而移到外存)   PCB的组成: 进程ID 进程状态 等待原因 进程程序存放位置 进程数据存放位置 通用寄存器内容 控制寄存器内容 程序状态字寄存器内容 进程优先数 队列指针 说明信息现场信息管理信息   在创建进程时首先创建进程的PCB,然后才能根据PCB中的信息有效的控制进程; 当进程完成任务时,系统释放PCB,进程也随之消亡(通过撤销原语)   进程的状态 PCB中的状态字段描述了进程的当前状态,这些状态可以用下图描述
  运行:当前进程获得了包括CPU在内的所有资源,占有CPU开始运行 就绪:其它资源都已拥有,等待CPU的调度,具备执行的条件(刚创建的进程处于就绪状态) 阻塞:等待除CPU外的其它资源,不具备执行的条件(进程因等待某事件的发生而主动放弃CPU) 挂起:将进程由内存移到外存   注意: 1、阻塞状态的进程不能直接进入运行状态 2、就绪状态的进程不能直接进入阻塞状态   进程控制原语: 创建原语:创建一个进程 阻塞原语 撤销原语:将执行完毕的进程撤销(回收资源) 唤醒原语:唤醒阻塞队列具备运行条件的一个进程,使其回到就绪队列 优先级原语 调度原语:按调度算法,从就绪队列中选择一个进程执行   进程的队列 处于不同状态的进程位于不同的队列,系统通常有三种队列(队列由PCB中的队列指针连成)   运行队列:单CPU系统运行队列内只有一个进程 就绪队列:有多个进程等待被调度 阻塞队列:根据阻塞的原因,分为多个阻塞队列;队列的个数取决于阻塞原因的个数   进程调度与死锁 进程调度的算法   先来先服务:就绪队列按先来后到排序,执行完一个再执行另一个 优先数调度:就绪队列按优先级排队 轮转法:就绪队列按FIFO排队,但是每个进程被执行一个时间片后就让出CPU,然后排在就绪队列末尾   注: 前两种算法不能用于分时操作系统的主调度算法   进程占有CPU的方式有两类:剥夺式和非剥夺式   死锁 死锁产生的必要条件: 1、互斥条件:指各进程间竞争临界资源 2、保持和等待条件:进程处于阻塞状态时,会一直保持已拥有的资源不放 3、不剥夺条件:已拥有的资源不会被剥夺 4、环路等待条件:每个进程都占有对方要申请的资源   解决死锁的策略:
  1. 预防:破坏死锁产生的必要条件
  2. 避免:分配资源时,看是否安全(如银行家算法),如果分配完后该进程能执行则证明是安全的。
  3. 检测
  4. 消除

希望通过这篇文章能让大家了解到进程和程序的区