操作系统中的处理机调度是计算机系统中至关重要的一个环节,它涉及到多道程序设计环境下的资源分配与管理。在这个实验报告中,我们关注的是基于优先数的调度算法来模拟处理器的调度过程。
实验设计了一个数据结构,即进程控制块(Process Control Block,PCB),用于存储每个进程的相关信息。PCB 包含了进程的名字、状态、优先级和所需运行时间。其中,进程状态可能包括就绪、运行和结束等,优先级则用来确定哪个进程先获得处理器资源,而所需时间代表进程执行完成所需要的 CPU 时间片。
实验的主要目的是通过模拟单处理器环境下的处理器调度,帮助学生理解处理机调度的工作原理。实验中提供了几个关键的函数:
1. `create()` 函数:用于创建新的进程并将其添加到进程队列中。用户可以输入新进程的名称、优先级、所需运行时间以及初始状态。
2. `running()` 函数:模拟实际的处理器调度,按照优先数调度算法来选择下一个运行的进程。如果当前进程的时间片用完,会降低其优先级并将其放回就绪队列,然后选择新的最高优先级进程运行。
3. `shuchu()` 函数:输出当前的进程队列信息,包括进程名、优先级、所需时间和状态,以便观察调度过程。
4. `create2(pcb&*a)` 函数:允许在运行过程中动态添加新的进程到队列中。
5. `insert(pcb *q)` 函数:将新进程插入到已排序的进程队列中,保持队列按优先级升序排列。如果新进程的优先级高于当前队列头进程,它将被插入到队首;否则,会在适当位置插入以保持顺序。
主函数 `main()` 提供了一个用户交互界面,允许用户选择进行进程创建、运行、输出或添加操作。整个程序的运行依赖于用户的选择,通过 switch-case 语句来实现不同操作的调用。
程序实现过程中,使用了面向对象的设计思想,定义了一个 `process` 类,包含了 PCB 队列的头指针,并实现了与处理机调度相关的成员函数。
通过这个实验,学生能够深入理解处理器调度算法,特别是优先数调度算法的工作原理。此外,它还锻炼了学生的编程能力和问题解决能力,使得理论知识与实践操作相结合,从而更好地掌握操作系统的核心概念。