process - 抢占式优先调度的平均等待时间

标签 process operating-system scheduling

下表用于计算基于优先级的抢占式调度的进程的平均等待时间

Process     Burst Time       Priority          
P1             10               3  
P2             1                1  
P3             2                4
P4             1                5
P5             5                2

甘特图如下:

| P2 | P5 | P1 | P3 | P4  |
0    1    6    16   18   19

我有以下问题:

1) 周转时间 = 19 个单位吗?

2) 如何计算平均等待时间?有公式吗?

3) 如果几个进程具有相同的优先级怎么办?

我是操作系统新手。我看过其他一些类似的问题,但我不知 Prop 体该怎么做。

最佳答案

根据数据,在实现基于优先级的抢占式调度之前,您应该了解以下事实:-

  1. 优先级通常是一个范围内的数字
  2. 数字高可能表示优先级低(取决于系统)
  3. 为每个进程关联一个优先级,将CPU分配给优先级最高的进程
  4. 任意 2 个具有相同优先级的进程均按 FCFS 处理

有了这么多的知识,所需的甘特图将与您绘制的相同:-

| P2 | P5 | P1 | P3 | P4  |
0    1    6    16   18   19

1) Is the turn around time = 19 units?

不,周转时间将为 16 + 1 + 18 + 19 + 6 = 60。 平均周转时间 = 60/5 = 12。

2) How do i calculate average waiting time? Is there a formula?

平均等待时间定义为进程启动前等待的总时间除以进程总数。

这里,平均等待时间 = (6 + 0 + 16 + 18 + 1)/5 = 41/5 = 8.2。

3) What if few processes have the same priority?

如果少数进程具有相同的优先级,则将使用上面第 4 点中提到的先来先服务 (FCFS) 来处理调度。因此,包括甘特图在内的所有地方,首先出现的流程将首先被安排,而其他类似优先级的流程将被安排在较晚的时间,因为它迟到了。

我希望我的步骤非常清楚,不需要任何进一步的解释。

关于process - 抢占式优先调度的平均等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837000/

相关文章:

process - 为什么 sudo 调用 fork() 和 exec() 而不仅仅是 exec()?

使用 fork() 创建进程树,然后对它们进行编号并将其显示在数组中

process - 如何阻止精益编程变成牛仔编码?

java - 如何将 Quartz 与 EJB3 一起使用?

linux - 单处理器与双核系统上的进程状态

Java - 安排每日任务

java - JAVA 中 process.exitValue() 的值

python - 为什么线程会进入休眠状态?

linux - 为什么我会优先使用 "service sshd reload"而不是 "service sshd restart"?

在多个操作系统上运行脚本的 Java 注意事项