作系统原理6 华中科技大学.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 6.3.5 进程优先数调度算法 静态: 进程的优先数在进程创建时确定后就不再变化 确定进程优先数: 系统确定:(运行时间、使用资源,进程的类型) 用户确定:(紧迫程度,计费与进程优先数有关) 系统与用户结合(用户可以为本用户的进程设置优先数,但不是作调度用,系统还要根据系统情况把用户设置的进程优先数作为确定进程优先数的一个参数) * 6.3.5 进程优先数调度算法 动态进程优先数: 系统在运行的过程中,根据系统的设计目标,不断地调整进程的优先数,这种方法的优点是能比较客观地反映进程的实际情况和保证达到系统设计目标。 * 6.3.6 循环轮转调度 循环轮转调度实际上是一种先来先服务算法的调度算法,它把系统的响应时间分成大小相等(或不相等)的时间单位,称为时间片。每个进程被调度到后,占用一个时间片,片用完后,该进程让出CPU,由运行状态转换成就绪状态,排在就绪队列的队尾。多个进程循环轮转。 * 6.3.6 循环轮转调度 * 6.3.6 循环轮转调度 系统按进程转换成就绪状态的时间的降序排队,调度程序每次调度,总是从队首移出一程的PCB,然后,将此进程投入运行(由就绪状态转换成运行状态)。一个运行时间片到的进程从运行状态转换成就绪状态后,排在就绪队列的队尾。 评价: 优点是实现简单、系统开销小 缺点是不灵活,当系统中进程较少时,系统开销变大 为什么? 由于该算法简单易于实现,且系统开销较小,早期的分时操作系统和目前一些应用系统中广泛采用了这种调度算法。 * 6.3.6 循环轮转调度 二、可变时间片轮转调度 为了克服前种调度算法的缺点,人们设计出一种可变时间片的调度算法,其思想是:时间片的大小是可变的,系统可根据系统中当前的进程数来确定时间片的大小。 这种算法从理论上克服了系统中进程数很少时系统开销大的缺点,但修改时间片的大小,统计系统进程的数量也需要消耗系统时间,还有一个调整时间片大小的周期,太大,等于是固定时间片,太小,系统开销很大,得不尝失。 * 6.4 UNIX系统的进程调度 6.4.1 UNIX调度算法 我们从调度算法、调度时机、调度程序三个方面来分析UNIX系统的进程调度。 一、调度算法 UNIX系统采用优先数调度算法,每个进程有一个进程优先数,p_pri是proc结构中的一个变量,其取值范围是-127~127,其值越小,进程的优先级越高(即,调度程序总是从就绪状态的进程中选择一个优先数最小的进程占用CPU)。 * 6.4 UNIX系统的进程调度 6.4.1 UNIX调度算法 优先数的确定: 1.系统设置 在进程进入睡眠状态时,在SLEEP()中设置将要进入睡眠状态进程的优先数,当该进程被唤醒后,就以系统给它设置的优先数去参与处理机的竟争。 * 6.4 UNIX系统的进程调度 6.4.1 UNIX调度算法 进程进入高优先级睡眠的原因: (1)0#进程(-100优先数); (2)因资源请求得不到满足的进程,磁盘(-80),打印机 (-20),…; (3)等待块设备I/O完成的进程,(-50)。 进程进入低优先级睡眠的原因: (1)因等待字符设备I/O完成的进程,(0~20的优先数); (2) 所有处于用户态运行进程,优先数一般情况下为大于100。 这样做的目的是为什么? 为使系统资源得到充分的利用,换句话说,是为了提高系统资源的使用效率。 * 6.4 UNIX系统的进程调度 6.4.1 UNIX调度算法 2.优先数的计算 (1)计算公式: p_pri = {127, (p_cpu/16+p_nice+PUSER) 其中: p_cpu 进程占用CPU的程度 p_nice 用户通过系统调用nice(priority)设置 的进程优先数。 PUSER 常数,其值为100 * 6.4 UNIX系统的进程调度 6.4.1 UNIX调度算法 * UNIX系统的设计者采用了一个巧妙的方法,既避免了繁杂的统计工作,也不需做浮点运行算。(这就是我们要学习的工程能力,或称分析问题和解决问题的能力,学会和记往一两个科学的定理和公式并不难,难的是怎样将这些普遍的理论用于实际的工程之中,UNIX系统中有很多值得我们学习的地方,对p_cpu的处理就是其中之一,这里并不要求把UNIX中的p_cpu的处理完全记住,而是要通过对它的了解,学会处理实际工程问题的方法。) 6.4 UNIX系统的进程调度 6.4.1 UNIX调度算法 * UINX系统中对p_cpu的处理: 每个时钟中断:p_cpu++; 每秒钟(时钟中断): if(p_cpu-SCHMAG 0 )

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档