*** 作系统的时间片轮转法具体的算法

 *** 作系统的时间片轮转法具体的算法,第1张

四、算法实现

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当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6072755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存