处理器调度算法

1. P117页,练习15:最高响应比

2. P119页,练习22(2):时间片轮转

 

3. 现设定采用三级反馈队列调度算法,三个队列分别为0、1和2,对应时间片为2、4、8。现有四个进程A、B、C、D,到达时刻分别为0、5、7、12,执行时间分别为7、4、13、2。请写出整个进程调度过程,包括每个时间段,执行的进程,执行后进程状态,各个队列内进程的变化。

 

4. 从以下几个方面比较各个调度算法的优缺点:1.资源利用率。2.吞吐率。3.周转率。4.响应时间。5.公平性。6.适用范围。

(1)先来先服务算法(FCFS):非剥夺式调度算法,效率不高,吞吐率不大,周转率低,周转时间长,不公平,不利于短作业而优待了长作业。

(2)最短作业优先算法(SJF):非剥夺式调度算法,执行效率不高,长作业等待时间长,会出现饥饿现象,不公平,周转时间较长,吞吐率较小。

(3)最短剩余时间优先算法(SRTF):剥夺式算法,效率、吞吐率、周转率较高,公平。

(4)最高响应比优先算法(HRRF):非剥夺式算法,效率、吞吐率、周转率较高,性能比SJF算法略差,适用于所有作业。

(5)优先级调度算法:效率、吞吐率、周转率较高,克服了静态优先级的饥饿问题。

(6)  轮转调度算法(RR):剥夺式调度,效率、吞吐率、周转率高,适合所有的作业,公平。

(7)多级反馈队列调度算法(MLFQ):具有较好的性能,能满足各类应用需求,会导致饥饿问题,效率较高。

 

转载于:https://www.cnblogs.com/ljgljg/p/10644146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理器调度算法是指通过一定的策略来决定哪个进程可以获得 CPU 的调度,从而达到最优的利用 CPU 资源的目的。常见的处理器调度算法有以下几种: 1. 先来先服务(FCFS,First-Come-First-Served)算法 2. 短作业优先(SJF,Shortest-Job-First)算法 3. 优先级调度算法 4. 时间片轮转调度算法 5. 多级反馈队列调度算法 下面是一个使用 C++ 实现的先来先服务(FCFS)算法的示例代码: ```c++ #include <iostream> #include <queue> using namespace std; struct Process { int pid; // 进程 ID int arrival_time; // 到达时间 int burst_time; // 运行时间 }; bool cmp(Process a, Process b) { return a.arrival_time < b.arrival_time; } int main() { int n, total_time = 0, wait_time = 0, turnaround_time = 0; double avg_wait_time, avg_turnaround_time; queue<Process> q; cout << "请输入进程数:"; cin >> n; Process p[n]; cout << "请输入每个进程的到达时间和运行时间:" << endl; for (int i = 0; i < n; i++) { cout << "进程 " << i << ":"; cin >> p[i].arrival_time >> p[i].burst_time; p[i].pid = i; } sort(p, p + n, cmp); q.push(p[0]); for (int i = 1; i < n; i++) { if (q.back().arrival_time < p[i].arrival_time) { q.push(p[i]); } else { while (!q.empty()) { Process temp = q.front(); q.pop(); wait_time += total_time - temp.arrival_time; turnaround_time += total_time - temp.arrival_time + temp.burst_time; total_time += temp.burst_time; if (q.empty() || q.back().arrival_time < p[i].arrival_time) { q.push(p[i]); break; } } } } while (!q.empty()) { Process temp = q.front(); q.pop(); wait_time += total_time - temp.arrival_time; turnaround_time += total_time - temp.arrival_time + temp.burst_time; total_time += temp.burst_time; } avg_wait_time = (double)wait_time / n; avg_turnaround_time = (double)turnaround_time / n; cout << "平均等待时间:" << avg_wait_time << endl; cout << "平均周转时间:" << avg_turnaround_time << endl; return 0; } ``` 该代码实现了先来先服务(FCFS)算法,通过输入每个进程的到达时间和运行时间,计算出每个进程的平均等待时间和平均周转时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值