1)系统初始化时给每一个进程赋以一个needtime,并将所有进程按needtime从小到大的次序排成一个队列。
2) 取队头进程,并投入运行。
3) 采用相对固定时间片(Time_piece),进程每执行一次,进程占用的CPU时间加Time_piece。
4) 若进程没有运行完,进程needtime减Time,并排到就绪队列的尾部。
5) 如果尚有进程在队列中,那么转入2)
PCB结构:N 进程个数
name 进程名
Time_piece 进程优先数/进程轮转时间片
Cpu_time 进程占用的CPU时间
Need_time 进程到完成还要的时间
Count 计数器
State 进程状态(P,W,F)
Arrive_time到达时间
next 链指针
run当前运行进程指针
start 就绪队列头指针
end就绪队列尾指针
finish 完成队列头指针
void insert(PCB *p) //时间片插入函数
void create() //时间片算法创建进程函数
void roundrobin() //时间片算法函数
void firstin() //运行就绪队列的第一个进程
你可以到这个地址下载文章看一下。
'http://wenku.baidu.com/view/f3bca1d333d4b14e85246830.html'
首先启动 到达时间是0 的A进程,
第二个时间片,还是A,
第三开始启动B进程
第四 回到A
第五 启动C
。。。原则就是每个进程运行一个时间片,然后选择下一个,如果没有到达“到达时间”就选下一个,如果到了,就开始轮转,直到完成进程
时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)