# 实验三 - 进程调度

# 前言

(1)为什么要引入进程调度?

(2)主要针对单核处理机的调度算法做研究

(3)历史发展脉络

(4)进程调度的性能指标是什么

(5)进程切换

(6)进程调度的实现

# 一、实验目的

​ 操作系统的内核中实现的调度器比较复杂,其本质组成就是3大模块:就绪队列、调度器、分配器。

​ 在本次实验中,三者之中的就绪队列将会作为参数提供给你,你需要实现的是调度器,然后由系统本身实现的分配器调用你事先的调度器,以检验算法的正确性。

​ 实现调度器的最困难的地方在于实现调度算法(抛开提高性能、降低耦合性等事实不谈),请你结合实验教程完成调度算法的实现,并按照规范实现程序接口,以保证整个系统能够运行。

# 二、实验步骤

# 1. 进程控制块(PCB)结构

​ 进程控制块(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;         // 进程到达时间
};

​ 该结构体具有上述变量。对于不同的编程语言,变量名称都与上面的代码一致。

# 2. 调度策略

​ 在这一步,你需要根据不同的调度策略设计响应的调度算法,调度策略有以下几种:

  • FCFS(First Come First Serve)

  • RR(Round-Robin,轮转调度)

  • SJF(Shortest Job First,最短作业优先)

  • MLFQ(多级反馈队列调度)

  • CFS(Completely Fair Scheduler,完全公平调度器)

​ 请跳转到响应的实验教程中继续完成实验。

# 课外资料