Jomo 85d2f24ed1 修正Linux实验的图片路径 (#28) | 1 year ago | |
---|---|---|
.. | ||
CFS.md | 1 year ago | |
MLFQ.md | 1 year ago | |
README.md | 1 year ago | |
RR.md | 1 year ago | |
SJF.md | 1 year ago |
(1)为什么要引入进程调度?
(2)主要针对单核处理机的调度算法做研究
(3)历史发展脉络
(4)进程调度的性能指标是什么
(5)进程切换
(6)进程调度的实现
操作系统的内核中实现的调度器比较复杂,其本质组成就是3大模块:就绪队列、调度器、分配器。
在本次实验中,三者之中的就绪队列将会作为参数提供给你,你需要实现的是调度器,然后由系统本身实现的分配器调用你事先的调度器,以检验算法的正确性。
实现调度器的最困难的地方在于实现调度算法(抛开提高性能、降低耦合性等事实不谈),请你结合实验教程完成调度算法的实现,并按照规范实现程序接口,以保证整个系统能够运行。
进程控制块(PCB)是操作系统中用于管理和描述进程的数据结构。它存储了一个进程的相关信息,包括进程状态、程序计数器、寄存器值、内存分配信息、打开的文件列表等。
在本次实验中,我们已经帮你设计好了PCB,你需要理解PCB中的每个变量的作用以及意义,在此基础上实现调度算法,并通过实验数据测试。
下面是我们规定的PCB结构体:
struct PCB {
int pid; // 进程ID
string name; // 进程名称
string state; // 进程状态 (一般来说 就绪队列里面的进程都是Ready状态)
int priority; // 进程优先级
int burst_time; // 进程的执行时间
int remain_time; // 剩余执行时间
int arrive_time; // 进程到达时间
};
该结构体具有上述变量。对于不同的编程语言,变量名称都与上面的代码一致。
在这一步,你需要根据不同的调度策略设计响应的调度算法,调度策略有以下几种:
FCFS(First Come First Serve)
RR(Round-Robin,轮转调度)
SJF(Shortest Job First,最短作业优先)
MLFQ(多级反馈队列调度)
CFS(Completely Fair Scheduler,完全公平调度器)
请跳转到响应的实验教程中继续完成实验。