这书不好是他直接假设你知道计算机的timer怎么用
这边有个范例
https://www.embeddedrelated.com/showarticle/182.php
计算机底层没有提供几点几分做什么事这种很高阶的排程器
你如果要计算时间的话 唯一的精确方式就是用CPU提供的timer interrupt
概念上大概就是对timer写入要等待的时间跟一些参数
时间到的时候timer会拉一个interrupt 跳转到timer的ISR(一个函数)
这样就完成一次时间的计算
但问题来了 CPU通常不会有太多timer
所以你一次只能计很有限的事情
要多排几个东西的话 就要把task都存起来
进到ISR的时候来检查现在要做什么
其中最有效的方式就是PQ
因为PQ保证顶端的工作必定是下一个工作
只要取pq.top().time - now()就能得到下一次要等待的时间
如果中途插入也是一样的操作
当然你要用list 或array也可以 但这就单纯浪费复杂度
至于RR还是SJF 跟这边没有任何关系
顶多就是你在实现multitasking的时候会需要用timer来做scheduling