Labwork16 – CPU Schedule
编译环境
实验内容: CPU 调度
- 讨论课件 Lecture19-20 中 CPU 调度算法的例子,尝试基于 POSIX API 设计一个简单调度器(不考虑资源竞争问题):
- 创建一些 Pthread 线程任务,建立一个管理链队列,结点内容起码包括到达时间、WCT、优先级、调度状态(运行、就绪、阻塞)等调度参数;
- 每个任务有一个调度信 量,任务启动后在其调度信 量上执行 wait;
- 调度器按照调度策略对处于运行态的任务(如果有的话)的调度信 量执行 wait,并选取适当任务的调度信 量执行 signal;
- 实现简单调度策略:FCFS、SJB、Priority。分别计算任务平均等待时间。
实验过程
一、实验准备
原理理论
CPU调度一般具象为CPU-I/O执行周期,在一个进程被CPU调度时,他会开始于CPU执行,紧接着一个I/O执行,再紧接着CPU执行,如此反复,直到进程执行完成。一个进程会在最后一个CPU执行后终止。
下面讨论本实验中涉及的几种调度方式。
- FCFS, First Come, First Served Scheduling
顾名思义,先到先服务调度根据任务抵达的时间顺序进行CPU的调度,我们考虑在这一调度策略的实现中采取队列的数据结构进行。
- SJF, Shortest-Job-First Scheduling
该种调度方式会优先执行等待队列中执行时间最小的进程,我们在这一调度策略中采用优先队列的数据结构。
- Priority Scheduling
该种调度方式同SJF调度本质是相同的,在SJF中我们令耗时短的进程首先执行,而在本调度策略中,我们令优先级高的进程首先执行,同样的,我们采取优先队列的数据结构。
实现方式
我们预设了每个进程的到达时间、执行耗时和优先级,如下所示。
- SJF Scheduling
分析实验结果,认为FCFS、SJF和Priority调度均已实现,并能正常进行调度。
三、实验心得
CPU调度是操作系统的一个重要职能,在本实验中我进一步加深了对于CPU几种调度策略的理解,并能通过代码简单实现,这对于更好地理解操作系统的本质及其资源调配是至关重要的。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!