DEF_TIMESLICE MIN_TIMESLICE

本文介绍了进程调度中涉及的时间片概念,包括进程的默认时间片为100毫秒及最小时间片为5毫秒的具体定义。通过宏定义的方式展示了不同时间片的计算方法。
进程所获得的默认时间片为100ms
DEF_TIMESLICE = 100ms


#define DEF_TIMESLICE      (100 * HZ / 1000)
#define HZ                 1000


进程所能获得的最小时间片为5ms
MIN_TIMESLICE = 5 ms


#define MIN_TIMESLICE       max(5 * HZ / 1000, 1)
#define HZ                     1000






1.设计目的 通过模拟多级反馈队列调度算法(Multi-Level Feedback Queue, MFQ),加深对操作系统进程调度机制的理解,掌握进程状态转换、时间片分配、优先级调整等核心概念,提升程序设计与系统模拟能力。 2.内容要求 进程建模:使用四元组(pid/到达时间/CPU总需求/I/O间隔)描述进程,数据可通过以下方式获取。 随机生成(数量≥20) 从 JSON/CSV 文件读入 调度队列设计:实现 3 级就绪队列,参数如下: 队列级别 时间片长度 调度规则 Q0 2 ms 时间片轮转 Q1 4 ms 时间片轮转 Q2 无限 先来先服务(FCFS) 进程状态转换: 若进程在时间片用尽前阻塞或结束,保留当前优先级; 若时间片用尽未结束,降入下一级队列。 阻塞模拟:进程每运行I/O间隔毫秒后进入阻塞状态,阻塞时长 5 ms。 输出与保存: 甘特图(以pid-time线性文本格式呈现); 每个进程的周转时间、带权周转时间、等待时间; 系统平均 CPU 利用率、吞吐量。 3.关键概念与算法说明 进程控制块(PCB)参数 字段名 含义 pid 进程标识符 arrive 到达时间(ms) cpu_need 剩余 CPU 执行时间(ms) io_gap I/O 阻塞间隔(ms) cpu_since_io 距上次 I/O 已执行时间(ms) state 进程状态(NEW/READY/RUN/BLOCK/DONE) queue_level 所在队列级别(0/1/2) start/finish 首次运行时间 / 完成时间(ms) wait_time 总等待时间(ms) 调度核心逻辑 时间推进:以 1ms 为单位模拟系统时钟,每 Tick 执行以下操作:  检查新到达进程,加入 Q0;  检查阻塞进程,到期后移回原队列;  若 CPU 空闲,按优先级从高到低(Q0→Q1→Q2)调度进程;  运行当前进程 1ms,更新 CPU 需求、时间片剩余量及 I/O 状态;  处理进程结束、I/O 阻塞或时间片用尽场景,调整进程状态与队列。 优先级调整规则:  进程在时间片内完成或阻塞,保留当前队列级别;  时间片用尽未完成,队列级别 + 1(最多到 Q2)。 性能指标计算  周转时间 = 完成时间 - 到达时间;  带权周转时间 = 周转时间 / CPU 总需求;  等待时间 = 总时间 - CPU 执行时间;  CPU 利用率 = (CPU 忙时 / 总时间)× 100%;  吞吐量 = 完成进程数 / 总时间(进程 /ms)。 4.输入 / 输出样例 输入样例(JSON) [ {"pid": 1, "arrive": 0, "cpu_total": 15, "io_gap": 5}, {"pid": 2, "arrive": 2, "cpu_total": 20, "io_gap": 8}, {"pid": 3, "arrive": 3, "cpu_total": 10, "io_gap": 4} ] 输出样例(甘特图文本) ===== 甘特图(时间轴步长 1ms)===== 0-1: PID1 1-2: PID1 2-3: PID2 3-4: PID3 4-5: PID3 (BLOCK) 5-6: PID1 ... 性能指标样例 PID 1 到达0ms 完成25ms 周转25 带权1.67 等待10 PID 2 到达2ms 完成30ms 周转28 带权1.40 等待12 ... 平均周转时间: 26.50 ms CPU利用率: 85.32% 吞吐量: 0.08 进程/ms 5.设计成果要求 程序功能:实现完整的多级反馈队列调度逻辑,支持进程生成、状态转换、I/O 阻塞模拟及结果统计。 输出文件:按格式保存甘特图、进程性能指标及系统统计数据。 代码规范:注释清晰,结构合理,支持参数配置(如队列数量、时间片长度)。 根据上述要求编写一个完整的代码,使其满足上述要求,输出的结果不为空求满足要求,并对每句代码加以注释
最新发布
06-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值