山东科技大学学生课程设计
1.3.5时间片轮转调度
时间片轮转调度算法 将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并执行一个时间片。当执行的时间片用完,调度进程便停止该进程的执行,并将它送往就绪队列的末尾,然后再把CPU分配给就绪队列中新的队首进程,同时也让它执行一个时间片
8
山东科技大学学生课程设计
开始 输入进程信息,按FCFS排列 就绪队列为空? 结束 Y N 就绪队列首运行 时间片到,运行进程占用时间+1 运行进程已占用cpu时间达到所需 时间 N 进程完将该进程调到队尾 成,撤销 1.3.1 设计思想
1.3.2 模块设计
9
山东科技大学学生课程设计
1.4调试分析
1.5用户使用说明
10
山东科技大学学生课程设计
二、生产者消费者问题
2.1需求分析
生产者-消费者问题的总体目标:在Windows的开发环境下,利用所学C++语言和数据结构的相关知识,利用程序实现经典的生产者-消费者问题的输出,以帮助我们更好的理解和应用进程同步的原理。
2.1.1算法设计目标
有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区中取走产品,也不允许生产者向一个已经放入产品的缓冲区中再次投放产品。
2.2概要设计 2.2.1生产者功能
在同一个进程地址空间内执行的两个线程。生产者线程生产物
品,然后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。
2.2.2消费者功能
消费者线程从缓冲区中获得物品,然后释放缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。
11
山东科技大学学生课程设计
2.3详细设计
2.3.1 设计思想
2.3.2 模块设计
2.4调试分析
2.5用户使用说明
12