调度器的目标-轻松实现高速串行io--fpga应用设计者指南

时间:2024-06-29 04:49:06
【文件属性】:

文件名称:调度器的目标-轻松实现高速串行io--fpga应用设计者指南

文件大小:3.09MB

文件格式:PDF

更新时间:2024-06-29 04:49:06

UNIX 系统 内幕 pdf

5.3 调度器的目标 调度器必须公平地把 CPU 时间分配给系统中的所有进程。实际上,系统的负载加大时, 每一个进程得到的 CPU 时间就变得少了,因此它们将要比在负载轻的系统中执行的慢。调 度器必须保证只要全部负载在期望的范围内,每一个应用程序的执行都能达到可接受的性能 要求。 典型的系统中,并发地运行几个应用程序,这些应用程序根据它们的调度需求和性能 期望被大致的分为以下几类: 交互式 外壳程序编辑器等应用程序以及具有图形用户界面的程序需要不断地和它们 的用户进行文互操作。这类应用程序使用大量的时间在等待键盘输入和鼠标操作等用户的输 入。接收到输入时,必须快速的处理,否则用户就会认为这个系统是不响应的。系统需要减 少平均反应时间和用户动作同应用程序完全反应的变化时间。这样用户就不能轻易地觉察到 延迟。对于键盘输入和鼠标运动,可接受的延迟一般是 50—150 毫秒。 批处理式 软件编译和科学计算等活动,不需用户交互操作,常常被提交为后台运行 作业。对于此类任务,衡量调度效率的就是在有其他活动存在的时候,这个任务的完成时间 同在一个不活动系统中所需时间的比较。 实时 这是所有有临界时间的应用程序的集合。尽管有许多类型的实时应用程序,而 且每一个都有自己的需求集合,但是它们有许多相同的特征。它们通常需要那种能保证响应 时间边界的可预测地调度行为。比如,一个图像应用程序可能需要每秒显示固定数目的图像 帧(fps),那么这个应用程序关心较多的是每秒帧(fps)的变化,而不是只想获得更多的 CPU 时间。用户更希望一个稳定的 15fps 的恒定速度,而不是那种在 10fps,和 30fps 之间显著波 动的平均为 20fps 的速度。 典型的工作蛄也许要同时执行许多不同类型的应用程序。调度器必须尽力平衡每一个应 用程序的需求,它也必须保证那些内核函数如换页(paging)、中断处理和进程管理等当需要 时能立即被执行。 一个运转良好的系统中,所有的应用程序必须持续地向前运行,任何一个应用程序不应 该阻止其他应用程序的运行发展,除非是用户显式地允许它。进一步的讲,系统应该总是能 够接收和处理交互式地用户输入,否则,用户将无法控制系统。 调度策略的选择对于系统满足不同类型应用程序的需求的能力有着深远地影响。下节 我们回顾一下传统的(SVR3/4.3BSD 中)的调度器,它们只支持交互式作业和批处理作业。 本章的其余部分将详细介绍在现代 UNIX 中的调度器,它们都对实时应用程序有一定的支 持。 5.4 传统的 UNIX 调度 我们首先描述一下用在 SVR3 和 4.3BSD UNIX 等传统 UNIX 中的调度算法。这些系统 的主要目标是在分时的和交互式的环境里,几个用户可以同时执行多个批处理作业和前台进 程。调度策略的目的就在于保证低优先级、后台作业不饿死的情况下,提高交互式用户的响 应时间。 传统的 UNIX 中的调度是基于优先级的。每一个进程有一个调度优先级,它随着时间变 化。调度器总是选择有最高优先级的处于可运行状态的进程去执行。对于相同优先级的 进程,调度器使用可抢占的时间片去调度它们,同时根据这些进程的 CPU使用模式来动态 地改变它们的优先级。当一个高优先级的进程准备就绪可以去运行的时候,调度器抢占当前


网友评论