苏州大学操作系统概念第五章分析.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
苏州大学操作系统概念第五章分析

* 多级反馈队列调度 * 多级反馈队列实例 * 多处理器调度 * 线程调度 * * * * * 时间片和周转时间的关系 Multilevel Queue 多级队列 就绪队列分为: 前台[交互式] 后台[批处理] 每个队列有自己的调度算法 前台 – RR 后台 – FCFS 调度须在队列间进行. 固定优先级调度,即前台运行完后再运行后台。有可能产生饥饿 给定时间片调度,即每个队列得到一定的CPU时间,进程在给定时间内执行;如,80%的时间执行前台的RR调度,20%的时间执行后台的FCFS调度 多级队列调度 Multilevel Feedback Queue 多级反馈队列调度 进程能在不同的队列间移动;可实现老化 多级反馈队列调度程序由以下参数定义: 队列数 每一队列的调度算法 决定进程升级的方法 决定进程降级的方法 决定需要服务的进程将进入哪个队列的方法 多级反馈队列调度 多级反馈队列调度例子 三个队列: Q0 – 时间片为8毫秒 Q1 –时间片为16毫秒 Q2 – FCFS 调度 新的作业进入FCFS的Q0队列,它得到CPU时能使用8毫秒,如果它不能在8毫秒内完成,将移动到队列Q1 作业在Q1仍将作为FCFS调度,能使用附加的16毫秒,如果它还不能完成,将被抢占,移至队列Q2 4、多处理器调度和线程调度 多处理器调度 多个CPU可用时,CPU调度将更为复杂 对称多处理器 (SMP) – 每个处理器决定自己的调度方案 非对称多处理器(ASMP) – 仅一个处理器能处理系统数据结构,减轻了对数据的共享需求 所有进程:一个就绪队列 处理器:私有就绪队列 调度算法:和单处理器相似 多处理器调度 处理器亲和性 进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。 高速缓存中的内容 软亲和性:进程通常不会在处理器之间频繁迁移 硬亲和性:进程不会在处理器之间迁移 (Linux) 例子: Linux的task_struct。与 亲和性(affinity)相关的是 cpus_allowed 位掩码。这个位掩码由 n 位组成,与系统中的 n 个逻辑处理器一一对应,1表示进程可以在对应处理器上运行 负载平衡 将任务平均分配给各个处理器 针对私有就绪队列 和处理器亲和性矛盾 线程调度 局部调度(Local Scheduling) – 线程库怎样决定将哪个线程列入有效的轻量级进程LWP 全局调度 (Global Scheduling) – 内核怎样决定下一个运行的内核线程 Pthread 线程调度 API允许局部调度和全局调度 局部:PTHREAD_SCOPE_PROCESS 全局:PTHREAD_SCOPE_SYSTEM Linux and Mac OS X 仅允许PTHREAD_SCOPE_SYSTEM scope PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_PROCESS ? 默认:PTHREAD_SCOPE_SYSTEM 设置线程绑定状态 部分Linux不支持PTHREAD_SCOPE_ PROCESS,需要查看man schedpolicy SCHED_OTHER (regular, non-realtime scheduling) SCHED_RR? (realtime,? round-robin) SCHED_FIFO (realtime, first-in first-out) ? 默认:SCHED_OTHER 优先级类别 Sched param 默认:0 线程优先级参数 如果schedpolicy的值为SCHED_OTHER,schedpolicy此属性无关紧要 线程创建后可修改此属性 Pthread 调度API #include pthread.h #include stdio.h #define NUM_THREADS 5 int main(int argc, char *argv[]) { int i, scope; pthread_t tid[NUM THREADS]; pthread_attr_t attr; /* get the default attributes */ pthread_attr_init(attr); /* first inquire on the current scope */ if (pthread_attr_getscope(attr, scope) != 0) fprintf(stderr, Unable to get scheduling scope\n); else { if (scope == PTHREAD_SCOPE_P

文档评论(0)

441113422 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档