处理机
处理机在计算机系统里算作系统资源,他是用来执行不同进程的不可获缺的一种资源,每一个进程都要处理机才能从活动就绪态变成执行态,在对称的多处理机的系统中,进程中的线程也是需要处理机才能从就绪状态进入执行状态的
1. 处理机调度的层次
1> 高级调度:调度的单位是作业(作业包含了一个或者多个进程),主要用于多道批处理系统中,而在实时系统和分时系统不设置,作业也有相应的后备队列
2> 低级调度:又称为进程调度和短程调度,主要调度的是进程或者内核级线程,决定就绪队列中哪个进程获得处理机,多道批处理、分时、和实时系统中,必须有这种调度
3> 中级调度:内存调度,主要做的是何时把暂时不进行的进程调入外存,有何时把具备条件的进程调入内存,一般放入外训的是挂起状态的进程。
2. 处理机调度有不同的算法,但是算法都有着共同的目标
1> 各处理机调度算法的共同目标 1 提高资源利用率:尽可能的使处理机和其他资源保持忙碌状态 2 公平性:进程都合理的获得CPU时间 3平衡性:尽可能保持系统资源利用的平衡性 4 策略强制执行:为系统所定制的策略(安全策略)只要需要,必须准确的强制执行
2> 批处理OS的目标:平均周转时间短、系统吞吐量高、处理机利用率高
3> 分时OS的目标:响应时间快、均衡性
4> 实时OS的目标:截止时间的保证:任务开始执行或完成的最迟时间、可预测性
3. 作业和作业调度(高级调度)
1> 作业:Job,是比程序更为广泛的概念,不仅包含了程序和数据,还配有一份作业说明书
2> 作业步:作业中的一个过程
3> 作业也有作业所要的资源:JCB作业控制块(有作业的标识、作业的状态、用户名称、用户账号、作业类型、调度信息、资源需求、资源使用情况)。作业进入系统时,先申请JCB,然后放入作业后备队列等待调度
4> 作业也有三种状态和三个阶段:
1 收容阶段:申请JCB放入后备队列的阶段,此时的状态为后备状态
2 运行阶段:从后备队列取出,申请进程,申请进程PCB等,作业从有进程就绪到整个作业完成都是运行状态
3 完成阶段:作业完成或异常提前结束的状态,这是的状态为完成状态,没有JCB,作业相应的进程也没有了资源,都反坏给系统了
5> 作业调度的任务:能接纳多少个作业,接纳哪些作业
6> 作业调度的算法:
1 先来先服务FCFS:利用的是后备队列
2 短作业优先SJF:因为短作业占作业中大多数
3 优先级调度算法:基于静态优先级
4 高响应比的优先级调度算法:基于动态优先级,作业的优先级是要求服务时间和等待时间决定的
4. 进程调度(低级调度)
1> 进程调度的任务:
1保存现场信息:计数器和寄存器的内容
2按某种算法选取进程:一旦算法选取进程,进程就获得处理机
3 把处理机分配给进程
2> 进程调度的机制:
1 排队器 2分派器 3 上下文切换器 都是硬件
3> 进程调度的方式:
1 非抢占方式:一旦把处理机分配给某一个进程,就一直要到执行完才释放
2 抢占方式:按照某种原则来抢处理机(如:优先权原则、短进程优先原则、时间片原则)
4> 进程调度的各种算法:
1 轮转调度算法:基于时间片和中断程序以及调度程序
2 优先级调度算法:非抢占的优先级调度算法(优先级为静态的,进程一旦获得就能一直到完成)和抢占式优先级调度算法(优先级为动态的:随着等 待的时间增加而增加,这样的低优先级的进程在等待足够长的时间也能获得处理机)
3 多队列的调度算法:把就绪队列分为若干个队列,每个对列可以设置不同的算法,这种算法适合于多处理机系统,可以每一个处理机安排一个就绪队 列,而对于一个进程有多个线程而言,可以把所有线程放在一个就绪队列。
4 多级反馈队列:设置多个就绪队列,每个队列采用FCFS算法,按队列优先级进行调度
5 公平调度的算法:每个用户的获得的cpu时间公平
6 实时调度:实时调度是要由条件的,首先用户要提供就绪事件和开始截止时间和完成截止时间的必要的信息,当然实时调度的系统处理能力要极强, 还得采用抢占的调度机制和具有快速切换的机制。
7 最早截止时间优先的算法:根据截止时间来判定优先级,最早截止的在就绪队列的队首,他机可以用于非抢占方式中,也可以用于抢占方式中。最低 松弛度优先算法:根据紧急程度来确定优先级,松弛度(一个任务必须在200ms时完成,本身运行时间为100ms,则松弛都为100),松弛度越低越紧 急,紧急任务优先。
8 优先级倒置:优先级继承,一个正在使用临界资源的进程,如果来了一个比它优先级高的进程,一方面阻塞优先级高的进程,另一方面低优先级进程 继承高优先级进程的优先级
5. 进程死锁
1> 资源的种类:
1可以重用:数目固定进程运行期间不能删除和创建(处理机)
2 可消耗型:进程可以不断的创建和删除 (图片等)3 可抢占性(cpu) 4不可抢占行(打印机)
2> 死锁原因:
1 竞争不可抢占式资源死锁:两个进程或多个进程都在循环的等待释放资源
2 竞争可消耗资源引起的死锁
3 进程推进不当产生的死锁
3> 死锁的定义:一组进程中,没一个进程都在等其他进程触发事件按,则进程死锁
4> 产生条件:1互斥 2请求和保持条件 3不可抢占条件 4循环等待条件
5> 处理死锁的方法:1预防 2避免 3检测 4解除
6> 预防死锁:
1破环请求和保持的条件:一次性的申请全部资源或在运行过程中释放自己已经用过的资源
2 破环不可抢占条件:当请求未被满足时,释放持有的资源
3 破坏循环等待条件
7> 避免死锁:保持系统安全状态,找出一个进程执行的安全序列,进程按安全序列进行执行
8> 死锁的检测:首先要保存有关资源的请求和分配信息,在提供一种算法检测系统是否已经进入死锁,常用到的检测有资源分配图,当且仅当系统S状态资源分配图是不可简化的,则有死锁存在。
9> 死锁的解除:
1 抢占资源:从一个或者多个进程中抢资源分配给死锁进程
2 终止进程:一般是逐个结束进程或者按付出的代价最小来终止进程