计算出平均周转时间和平均带权周转时间

这篇博客探讨了如何在操作系统中计算平均周转时间和平均带权周转时间。给出了一个包含5个进程的具体例子,其中详细列出了每个进程的到达时间和服务时间,并指定了时间片大小。根据这些信息,博客提供了计算这两个时间的参考答案,平均周转时间为12.6,平均带权周转时间为2.75,结果均保留了两位小数。

计算出平均周转时间和平均带权周转时间

题目:

现在已知系统中有5个进程,其到达时间和要求服务时间如表所示:
进程次序: p1–p2–p3–p4–p5, 时间片大小: 4
到达时间: [0, 1, 2, 3, 4]
要求服务时间: [6, 3, 3, 4, 6]
要求:
(1) 计算出平均周转时间;
(1) 计算出平均带权周转时间;
注意:浮点数小数点后保留2位(四舍五入)
参考答案:
平均周转时间 12.6
平均带权周转时间 2.75

"""
此程序十分不严谨
仅用于考试快速出答案
"""


N = 4
serve_time = [9,2,7,7,7]
pro = [0, 1, 2, 3, 4]

def deal_serve_time
### 平均周转时间平均周转时间计算方法 #### 定义与公式 1. **周转时间**:从作业提交到系统开始,直到作业执行完成为止的时间间隔。其计算公式为: \[ 周转时间 = 作业完成时间 - 作业提交时间 \] 2. **周转时间**:周转时间与作业运行时间的比值,用于衡量作业的相对等待时间。其计算公式为: \[ 周转时间 = \frac{周转时间}{作业运行时间} \] 3. **平均周转时间**:所有作业的周转时间除以作业总数。其计算公式为: \[ 平均周转时间 = \frac{\sum_{i=1}^{n} 周转时间_i}{n} \] 4. **平均周转时间**:所有作业的周转时间除以作业总数。其计算公式为: \[ 平均周转时间 = \frac{\sum_{i=1}^{n} 周转时间_i}{n} \] #### 示例计算 假设系统中有四个进程,它们的到达时间(提交时间)分别为 8、8.4、8.8 9,运行时间分别为 21、0.5 0.2。根据短作业优先调度算法(SJF),可以得到以下数据[^1]: | 进程名 | 到达时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 周转时间 | |--------|----------|----------|----------|----------|----------|--------------| | A | 8 | 2 | 8 | 10 | 2 | 1 | | B | 8.4 | 1 | 10.7 | 11.7 | 3.3 | 3.3 | | C | 8.8 | 0.5 | 10.2 | 10.7 | 1.9 | 3.8 | | D | 9 | 0.2 | 10 | 10.2 | 1.2 | 6 | - 计算平均周转时间: \[ 平均周转时间 = \frac{(2 + 3.3 + 1.9 + 1.2)}{4} = 2.1 \] - 计算平均周转时间: \[ 平均周转时间 = \frac{(1 + 3.3 + 3.8 + 6)}{4} = 3.525 \] #### 计算步骤说明 1. 确定每个进程的开始时间完成时间2. 根据公式计算每个进程周转时间周转时间。 3. 将所有进程周转时间周转时间,并分别除以进程总数,得到平均周转时间平均周转时间。 #### Python代码示例 以下是一个Python代码示例,用于计算平均周转时间平均周转时间: ```python # 定义进程信息 processes = [ {"name": "A", "arrival_time": 8, "burst_time": 2}, {"name": "B", "arrival_time": 8.4, "burst_time": 1}, {"name": "C", "arrival_time": 8.8, "burst_time": 0.5}, {"name": "D", "arrival_time": 9, "burst_time": 0.2} ] # 按照短作业优先排序 processes.sort(key=lambda x: (x["arrival_time"], x["burst_time"])) current_time = 0 for process in processes: if process["arrival_time"] > current_time: current_time = process["arrival_time"] process["start_time"] = current_time process["completion_time"] = current_time + process["burst_time"] process["turnaround_time"] = process["completion_time"] - process["arrival_time"] process["weighted_turnaround_time"] = process["turnaround_time"] / process["burst_time"] current_time = process["completion_time"] # 计算平均周转时间平均周转时间 total_turnaround_time = sum(process["turnaround_time"] for process in processes) total_weighted_turnaround_time = sum(process["weighted_turnaround_time"] for process in processes) average_turnaround_time = total_turnaround_time / len(processes) average_weighted_turnaround_time = total_weighted_turnaround_time / len(processes) print(f"平均周转时间: {average_turnaround_time}") print(f"平均周转时间: {average_weighted_turnaround_time}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值