实验一进程调度实验主要目标是通过编写和调试进程调度程序,帮助理解进程的概念以及不同进程调度算法的工作原理。这个实验属于综合性实验,涵盖了高级语言编程、进程调度模型、调度算法和数据结构等多个领域的知识。
在这个实验中,你需要设计一个能够同时运行N个进程的调度程序,采用两种调度算法:最高优先数优先(Priority Scheduling)和先来先服务(First-Come, First-Served, FCFS)。每个进程都有一个进程控制块(Process Control Block, PCB),PCB包含了诸如进程名、优先数、到达时间、需要运行时间、已使用的CPU时间以及进程状态等信息。进程的优先数和运行时间可以人工指定,也可以通过随机数生成。
进程状态有三种:就绪(Wait)、运行(Run)和完成(Finish)。当一个就绪进程获取到CPU并运行一个时间片后,其已使用CPU时间会增加1。如果这个时间等于其需要的总运行时间,进程会被撤销;若未达到,进程的优先数会减1(优先级降低),然后被放回就绪队列等待下次调度。每次调度时,都需要打印当前运行进程、就绪队列以及所有进程的PCB状态,以便进行检查,直至所有进程完成。
调度算法的流程可以通过流程图来表示,具体流程包括了对进程的优先级判断、状态转换以及队列操作等步骤。
在提供的源代码示例中,`jingchendiaodu.cpp`包含了实现这些功能的基本框架。`sort()`函数是一个用于按照优先级对进程进行排序的函数,确保优先级高的进程先被调度。这里使用了链表结构来存储和管理PCB,`link`指针用于连接相邻的PCB。
在实际编程实现中,还需要考虑如何模拟进程的到达和执行,如何维护就绪队列,如何根据调度算法决定下一个运行的进程,以及如何更新每个进程的状态和已使用CPU时间等细节。这个实验通过实际操作,能帮助学习者深入理解操作系统中的进程管理和调度机制。