公平共享调度算法

更新时间:2023-11-17 21:12:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1、 保证调度算法

保证调度算法是另一种类型的调度算法,它向用户做出的保证并不是由先运行,而是明确的性能保证,该算法可以做到调度的公平性。一种比较容易实现的性能保证是处理机分配的公平性。如果在系统中有n个相同的处理机进程同时运行,为公平起见,须保证每个进程都获得相同的处理机时间1/n。在实施公平调度算法时系统中必须具有这样一些功能:

(1) 跟踪计算每个进程自创建以来已经执行的处理时间。

(2) 计算每个进程应获得的处理机时间,即自创建以来的时间除以n。 (3) 计算进程获得处理及时间的比率,即进程实际执行的处理时间和应获得的处理

机时间之比。

(4) 比较各进程获得处理机时间的比率。如进程A的比率最低,为0.5,而进程B

的比率为0.8,进程C的比率为1.2等。

(5) 调度程序应选择比率最小的进程将处理机分配给它,并让该进程一直运行,直

到超过最接近他的进程比率为止。

2、 公平分享调度算法 分配给每个进程相同的处理及时间,显然,这对诸进程而言,是体现了一定程度的公平,但如果各个用户所拥有的进程数不同,就会发生对用户的不公平问题。假如系统中仅有两个用户,用户1启动了4个进程,用户2只启动了1个进程,采用轮转法让每个进程轮流运行一个时间片时间,对进程而言很公平,但用户1和用户2得到的处理机时间分别为80%和20%,显然对用户2而言有失公平。在该调度算法中,调度的公平性主要是针对用户而言,使所有用户能获得相同的处理机时间,或所要求的时间比例。然而调度又是以进程为基本单位,为此,必须考虑到每一个用户所拥有的进程数目。例如系统中有两个用户,用户1拥有4个进程A、B 、C 、D ,用户2只有一个进程E。为保证两个用户能获得相同的处理机时间,则必须执行如下所示的强制调度序列:

A E B E C E D E A E B E C E D E … 如果希望用户1所获得的处理机时间是用户2的两倍,则必须执行如下所示的强制序列:

A B E C D E A B E C D E A B E C D E…

设置用户一(user1):

设置A、B、C 、D 设置用户二(user2): 设置E While(signal){ User1.A.start(); User1.B.start(); User1.wait(); Signal =false; User2.start(); User2.E.start(); User2.wait(); User1.verify() }

请输入用户个数

2

请输入第1个用户的进程个数 3

请输入第2个用户的进程个数 5

请输入各用户的时间比 4:2

-------------------------------------------------------------------------------

这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2 这是第 1 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 1.3 这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 -------------------------------------------------------------------------------

这是第 2 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 2.1 这是第 2 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 2.2 -------------------------------------------------------------------------------

这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2 这是第 1 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 1.3 这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2 -------------------------------------------------------------------------------

这是第 2 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 2.3 这是第 2 个用户的第 4 个进程 右侧->------进程执行-------->>oh,I am 2.4 -------------------------------------------------------------------------------

这是第 1 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 1.3 这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2 这是第 1 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 1.3 -------------------------------------------------------------------------------

这是第 2 个用户的第 5 个进程 右侧->------进程执行-------->>oh,I am 2.5 这是第 2 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 2.1 -------------------------------------------------------------------------------

这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2 这是第 1 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 1.3 这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 -------------------------------------------------------------------------------

这是第 2 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 2.2 这是第 2 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 2.3 -------------------------------------------------------------------------------

这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2 这是第 1 个用户的第 3 个进程 右侧->------进程执行-------->>oh,I am 1.3 这是第 1 个用户的第 1 个进程 右侧->------进程执行-------->>oh,I am 1.1 这是第 1 个用户的第 2 个进程 右侧->------进程执行-------->>oh,I am 1.2

-------------------------------------------------------------------------------

这是第 2 个用户的第 4 个进程 右侧->------进程执行-------->>oh,I am 2.4 这是第 2 个用户的第 5 个进程 右侧->------进程执行-------->>oh,I am 2.5

本文来源:https://www.bwwdw.com/article/csvv.html

Top