go - 如何找到 rr 和 fifo 的周转时间和响应时间以及有什么区别?
问题描述
我有点卡在这个问题上。从我发现的:
- TT = Burst - 等待或退出-到达
- RT = 开始时间 - 到达
书中有一个例子:
P1 P2 P3
arr 0 0 0
comp. 10 10 10
我写了函数并得到:
- 对于先进先出,我发现 TT 是:10 ,20 ,30
- RT : 0 , 10 ,20
但是我正在努力为相同的过程找到 TT 和 RT,但对于 RoundRobin(有一些量子)。一本书的答案是:
- TT: 28, 29, 30
- RT: 0, 1, 2 它是如何计算的?在定义如何为 RR 查找 TT 和 RT 时需要帮助。通过示例和计算。请。
更新:
我设法找到了一个 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
}
解决方案
问题出在我使用的 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
}
推荐阅读
- macros - 如何匹配宏中的特征边界?
- javascript - 折叠后隐藏按钮使用 Javascript 切换
- vba - 节标题 Range.Text 返回空字符串而不是实际文本
- php - imgur 通过 api 删除图像
- oracle11g - SQL 错误:ORA-00904: : 第 4 行中的标识符无效
- javascript - 如何在 google-maps-react 中获取所有标记
- java - 如何在java中获取和打印字符串
- java - 如何使用 servlet 更新 JSP 中的值?
- javascript - “无法读取未定义的属性‘类型’”在 redux 存储中用于外部包中定义的操作
- javascript - Blogger 的 Photoswipe 集成