前言
笔者在大学下属的事业单位上班,最近去帮着带下操作系统的实验课,这里随手水点参考代码,欢迎各位领导老师莅临指正
实验目标
编写一个简单的进程调度器
实验内容
- 进程控制块(PCB)的定义与管理
- 进程调度算法的实现
- 进程创建、销毁和切换
- 给定一批进程对比3-4种调度算法的时间(自选算法)
实验参考答案
[code]#include #include #include using namespace std;// 进程控制块(PCB)struct ProcessControlBlock{ // 进程ID int processID; // 到达时间 int arrivalTime; // 执行时间 int burstTime; // 等待时间 int waitingTime; // 周转时间 int turnaroundTime;};// 先来先服务 (FCFS) 调度算法void FCFS(vector &processes){ int currentTime = 0; for (int i = 0; i < processes.size(); i++) { if (processes.arrivalTime > currentTime) { currentTime = processes.arrivalTime; } // 计算等待时间 processes.waitingTime = currentTime - processes.arrivalTime; // 执行进程 currentTime += processes.burstTime; // 计算周转时间 processes.turnaroundTime = currentTime - processes.arrivalTime; }}// 最短作业优先 (SJF) 调度算法void SJF(vector &processes){ int currentTime = 0; vector remainingProcesses = processes; while (!remainingProcesses.empty()) { int shortestJobIndex = -1; int shortestJobTime = INT_MAX; for (int i = 0; i < remainingProcesses.size(); i++) { if (remainingProcesses.arrivalTime |