首页 > 解决方案 > 如何找到 rr 和 fifo 的周转时间和响应时间以及有什么区别?

问题描述

我有点卡在这个问题上。从我发现的:

书中有一个例子:

             P1    P2   P3
arr           0     0    0
comp.        10     10   10

我写了函数并得到:

但是我正在努力为相同的过程找到 TT 和 RT,但对于 RoundRobin(有一些量子)。一本书的答案是:

更新:

我设法找到了一个 rr 和 fifo 的 RT:

Rt1 = 0 -0 = 0   quantum = 1 : 0-0 = 0
Rt2 = 10-0 = 10  quantum = 1 : 1-0 = 1
Rt3 = 20-0 = 20  quantum = 1 : 2-0 = 2

但仍然没有得到正确的TT。

func (j Job) TurnaroundTime() time.Duration {
    Tt := (j.finished - j.arrival - j.estimated) + j.estimated
    return Tt
}

func (j Job) ResponseTime() time.Duration {

    if j.id == 1 {
        Rt = time.Duration(0)
    }
    Rt := j.start - j.arrival

    //fmt.Print(Rt, j.start, j.Now(), " - ")

    return Rt
}

标签: goscheduled-tasksfiforound-robin

解决方案


问题出在我使用的 RR 中,正好我的量子 == 1。

说到功能:

package job

import (
    "../scheduler/system/systime"
    "time"
)

// Setting up the schedule for a job 

func (j *Job) Scheduled(s systime.SystemTime) {
    j.SystemTime = s
    j.arrival = j.Now()

}
// Starting job, here I add a start time only when the job is first time started.
// NotStartedYet is -1 


func (j *Job) Started(cpuID int) {
    if j.start == NotStartedYet {
        j.start = j.Now()
    }
}

//Total time from when job arrived til its fully exicuted

func (j Job) TurnaroundTime() time.Duration {
    Tt := j.finished - j.arrival    
    return Tt
}

//sort of waiting time between arrival and actual assignment to the cpu

func (j Job) ResponseTime() time.Duration {

    Rt := j.start - j.arrival

    return Rt
}

推荐阅读