概念:一个具有一定独立功能的程序对某个数据集合的一次动态运行过程和资源分配过程。
相关元素:代码、数据、进程表
进程和程序的差别和联系:
·进程是动态的。程序是静态的
·进程是临时的,程序是永久的
·程序和进程都包括代码数据,进程还还有进程表
·程序经过多创建,能够相应不同的进程
·一个进程通过系统调用,能够被多个程序所调用
性质:
·动态性
·并发性
·独立性
·异步性
进程的三种主要状态:
·执行状态
·堵塞状态:因为各种原因,进程放弃处理机的执行,并且不再期望被调用进行处理。
堵塞分为两种:
·被迫堵塞
·自我堵塞
·就绪状态:准备好资源等待由调度器调度进入执行状态
三种状态之间的转换:
·执行状态 --> 堵塞状态
·执行状态 --> 就绪状态
·就绪状态 --> 执行状态
·堵塞状态 --> 就绪状态
进程控制:
·进程创建:
首先查找系统的PCB表(进程控制表)。查询有无空的PCB表,假设有 。则申请一个。并对其进行初始化。初始化的项目有进程标识符(PID)、进程状态和执行程序的起 始地址等。假设申请不成功,要么继续等待有空暇PCB表时继续申请。要么返回创建失败信息。
·进程的创建:
申请空白进程表—>为新进程分配资源—>初始化进程表—>假设进程就绪队列可以接纳新进程,便将进程插入就绪队列。
创建进程的典型事件:
·用户登录
·作业调度
·提供服务
·应用请求
进程撤销:
撤销原语首先检查PCB链表,寻找索要撤销的进程是否存在,假设找到了相应的表项,则撤销原语就释放该进程占用的资源并回收相应的PCB数据结构, 假设该进程还有子进 程,则进程撤销原语必须先撤销子进程的PCB表并释放其占用的资源。
进程撤销的情况:
·正常结束(自愿的)
·异常结束
·普通错误退出(自愿的)
·致命错误退出(非自愿的)
·外界干预(非自愿的)
进程堵塞:
进程堵塞原语先停止处理机并同一时候保存该进程的处理现场,然后将堵塞进程插入到等待队列中,再将控制权交给调度程序,调度程序会按调度算法从就绪队列中选择一个进 程投入执行。
进程唤醒:
唤醒原语将被唤醒的进程从对应的等待队列移除。并将其PCB中状态置为就绪状态。并将其送入就绪队列。此时。唤醒原语既能够从调度程序处直接返回,也能够转向进程 调度程序,由调度进程选择一个合适的进程去执行。
进程由执行状态变为堵塞状态时,是这个进程自己调用堵塞原语去完毕的,而进程由堵塞状态到就绪状态却是还有一个进程调用唤醒原语实现的。普通情况下,这个进程与被 唤醒进程是具有一定相关性的并发进程。
可能引起堵塞和唤醒的事件:
·请求系统服务
·启动某种操作
·新数据尚未到达
·无新工作可做
进程挂起:
挂起原语将进程交换到外存储区挂起。释放其在内存中占用的资源,改写PCB,返回系统。
进程激活:
激活原语将进程从外存储区交换到内存,进行内存重定位,改写PCB进程状态信息。内存非配信息,程序计数器等,返回激活原语调用处。当激活后进程处于就绪状态时, 返回后,控制权将交还给调度程序。又一次调度。
进程组织:
·进程实体:
·程序:也称正文,描写叙述进程所要完毕的功能,特指二进制的指令代码。
·数据集合:程序执行时所须要的数据结构,包含常数、变量、堆、数据栈 等。
·进程控制模块:
·进程控制模块包括了进程的描写叙述信息、控制信息和资源信息。是进程动态特性的集中反映。
·进程控制信息包含:进程的基本信息和处理机管理信息
·进程内存资源分配
·进程设备和文件的分配使用情况进程同信:进程之间的信息交换工作称为进程间的同信
·P、V操作称为低级操作
·高级通信的方式可分为三类:
·共享内存
·消息传递
·管道机制
线程:
特性:
·轻型实体(easy创建和撤销)
·独立调度和分配的基本单位
·可并发运行
·共享进程资源
·适应硬件发展
调度:
概念:进程的数量多于处理机的个数,竞争处理机。 分配处理机的任务由进程调度机完毕,由进程分配程序详细实施。用一定的算法,动态的把处理机分配给进程。使之 能公平、合理和高效的 执行。
调度是分层次的。一个作业从提交開始。直到完毕,往往要经历多级调度。
进程调度:又称为微观调度,是指决定就绪队列中那个进程将获得处理机,并实际将处理机分配给该进程的操作。
引起进程调度的典型事件:
·正在执行的进程发生某事件而不能再继续执行
·执行中的进程因提出输入/输出请求而暂停执行
·在进程同信或同步过程中执行了某种原语操作,如P操作
·在可抢先式调度中,有一个比当前进程优先级更高的进程进入就绪队列
·在时间片轮转算法中。时间片用完
分派程序:分派程序完毕进程的切换,是实际操作者:主要为上下文切换
调度的基本准则包含:
·处理机利用率
·吞吐量
·周转时间
调度方式:
·可抢先
·不可抢先
调度的典型算法:
·先来先服务(FCFS)
·短作业或短进(线)程优先(SJF&SPF)
·时间片轮转调度算法(RR)
·高优先级优先调度算法
·高响应比优先调度(HRRN)算法:
响应比Rp=(等待时间+估计执行时间)
估计执行时间=(响应时间/估计执行时间)
·多级反馈队列调度算法
同步与相互排斥:
概念:
·间接相互制约:源于资源共享-相互排斥
·直接相互制约:源于进程合作-同步
·临界资源:一次仅仅同意一个进程有用的资源称为临界资源
临界区:在每一个进程中。訪问临街资源的那段代码称为临界区
同步与相互排斥的基本准则:
·空暇则进 ·遇忙等待 ·有限等待 ·让权等待
实现临界区相互排斥的基本方法:
·软件实现方法
·硬件实现方法
信号量:信号量的值是可变的,由初始化和P、V操作来改变
·P(S)操作的定义:
--S.Q。 //表示申请一个资源
If(S.Q<0) //若没有空暇资源
{
调用进程进入等待队列S.Q;
堵塞调用进程。
}
·V(S)操作的定义:
--V(S)。 //表示释放一个资源
If(S.Q < 0) 若有进程处于堵塞状态
{
从等待队列S.Q中取出一个进程P;
进程P进入就绪队列。
}
·同步时:P、V操作一定会是一组,即同一时候出现
·相互排斥时:P、V操作一定是分开的
管程:
一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程的的数据。
经典的同步问题:
·生产者-消费者问题
·读者-写者问题 ·哲学家问题
死锁:
概念:系统中两个或两个以上的进程无限期的相互等待永远不会发生的条 件,系统处于一种停止状态,这样的情况称为死锁。
死锁产生的原因:
·进程推进的书序不当
·对相互排斥资源分配不当
产生死锁的四个必要条件(必须所有具备):
·相互排斥条件:随意时刻仅仅同意一个进程使用资源
·非剥夺条件:进程已经占用的资源,不会被强制剥夺
·占用并请求资源:进程占有部分资源,并申请很多其它的资源,且不会主动释放已占有的资源
·循环等待:请求资源的进程形成了循环
死锁的处理策略:
·忽略死锁
·死锁的检測与恢复
·死锁的避免
·死锁的预防
死锁预防:
条件 方法
----------------------------------------------------
相互排斥 虚拟设备假摆脱
占有并等待 一次分配所有资源
非剥夺 主动放弃
循环等待 有序分配资源
死锁避免:
·安全状态
·不安全状态
死锁的检測:
·资源分配图算法
·资源矩阵算法
死锁的解除:
·资源剥夺法
·进程撤销法
·进程回退法
·又一次启动系统