# Multi_level_feedback_queue_scheduling **Repository Path**: fzr123/Multi_level_feedback_queue_scheduling ## Basic Information - **Project Name**: Multi_level_feedback_queue_scheduling - **Description**: You can learn to implement a multi-level feedback scheduling algorithm using C language. - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-12-25 - **Last Updated**: 2024-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多级反馈队列调度算法实验 在本实验中,学习如何使用实现多级反馈队列(Multi-level Feedback Queue)调度算法。 ## 实验概述 假设系统中有5个运行队列,它们的优先级分别为1到5,时间片长度分别为10ms, 20ms, 40ms, 80ms, 160ms。每个队列的优先级比前一个队列低,但时间片长度是前一个队列的两倍。 ## 实验组成 多级反馈队列调度算法的实现包括以下四个主要部分: 1. **主程序 (`main`)**: 负责初始化和启动整个调度过程。 2. **进程产生器 (`generator`)**: 使用线程实现,每隔一个随机时间(例如在[1,100]ms之间)产生一个新的进程控制块(PCB),并将其插入到第1个队列的进程链表尾部。 3. **进程调度器函数 (`scheduler`)**: 依次探测每个队列,寻找不为空的进程链表,然后调用执行器。 4. **进程运行器函数 (`executor`)**: 从选定的队列中取出进程链表首部的进程进行执行。 ## 实验要求 - 输出进程创建、插入队列、执行时的相关信息。 - 计算并输出总的平均等待时间。 ## 实验细节 - **互斥访问**: 需要设置1个互斥信号量来实现对第1个队列的互斥访问,因为`generator`和`executor`可能会同时对第1个队列进行操作。 - **同步机制**: 设置1个同步信号量,用于`generator`和`scheduler`的同步。`generator`每产生1个新进程,就`signal`一次这个同步信号量。`scheduler`只有在所有队列不为空时才会运行,否则需要等待这个同步信号量。 - **结束条件**: 当所有进程运行完毕后,`scheduler`退出,主程序结束。