「时间片轮转算法java」时间片轮转怎么计算

博主:adminadmin 2022-12-12 03:39:09 86

本篇文章给大家谈谈时间片轮转算法java,以及时间片轮转怎么计算对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

四、算法实现

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() //运行就绪队列的第一个进程

你可以到这个地址下载文章看一下。

''

用JAVA实现时间片轮转调度算法

你先用C++写,然后做成DLL。

再用java去调就好了。

一般java做底层控制和调用都会这么做。

就像io什么的,都是去调用C的代码完成的

一般java调用c写的dll代码都比较方便。

c调用java的代码几乎不可能。

求一个基于优先级的时间片轮转调度算法。实在是不太会做了,没思路。要求java 要求: (1)设系统

cpu进程调度模拟

四个队列是优先级队列(优先级高的在前面)

可以使用结构体做队列的节点

时间片轮转就是指定一个执行时间,时间一到就处理下一个进程,将当前进程进行状态转换(也就是换着状态需要向其放入相应的队列中,优先级队列)

理清头绪的话程序不算太复杂但也很麻烦

程序设计中的时间片是什么意思,java中如何实现

cpu吧所有的时间分成相等的很小的时间片,每个进程一次只能得到一个时间片去执行,如果在这个时间片以内时间内完成任务那最好,如果还没完成,则要先暂停然别的程序执行,然后过了一会儿又轮到刚才的程序执行,但是这种轮转还是很快的,我们一般感觉不到

至于java如何实现,不知道,就像楼上说的,应该是由CPU根据时间片轮转算法确定的

什么是时间片轮转调度算法

时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

时间片轮转调度算法的算法

多级反馈队列调度算法

(1) 设置多个就绪队列,并为各个队列赋予不同的优先级. 第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低.

该算法赋予各个队列中进程执行时间片的大小也各不相同:

在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小.

例如:第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍.

(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度.当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采取按时间片轮转的方式运行.

(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行; 仅当第1~(i-1) 队列均空时,才会调度第i队列中的进程运行.如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程.?

性能

(1)终端型作业用户

(2) 短批处理作业用户

(3) 长批处理作业用户

满足了多数用户的需求 优先权调度算法

1,优先权调度算法的类型

非抢占式优先权算法

在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成; 或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程.这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中.

抢占式优先权调度算法

系统同样把处理机分配给优先权最高的进程,使之执行.但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程.

这种抢占式的优先权调度算法,能更好地满足紧迫作业的要求,常用于要求比较严格的实时系统中, 以及对性能要求较高的批处理和分时系统中.

2,优先权的类型

(1) 静态优先权

静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变.

一般地,优先权是利用某一范围内的一个整数来表示的,例如,0~7或0~255中的某一整数, 又把该整数称为优先数.只是具体用法各异:有的系统用0表示最高优先权,当数值愈大时,其优先权愈低;而有的系统恰恰相反.

确定进程优先权的依据有如下三个方面:

1.进程类型.(系统进程/用户进程)

2.进程对资源的需求.(需求量的大小)

3.用户要求.(用户进程紧迫程度)

(2) 动态优先权

动态优先权是指在创建进程时所赋予的优先权,可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能.

例如,我们可以规定,在就绪队列中的进程,随其等待时间的增长,其优先权以速率a提高.若所有的进程都具有相同的优先权初值,则显然是最先进入就绪队列的进程,将因其动态优先权变得最高而优先获得处理机,此即FCFS算法.

优先权的变化规律可描述为:

由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP.据此,又可表示为:

3,高响应比优先调度算法

由上面的式子可以得到以下结论:

(1) 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业.

(2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务.

(3) 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高, 从而也可获得处理机.

该算法照顾了短作业,且不会使长作业长期得不到服务 1. 非抢占式调度算法

为每一个被控对象建立一个实时任务并将它们排列成一轮转队列,调度程序每次选择队列中的第一个任务投入运行.该任务完成后便把它挂在轮转队列的队尾等待下次调度运行.

2. 非抢占式优先调度算法.

实时任务到达时,把他们安排在就绪队列的对首,等待当前任务自我终止或运行完成后才能被调度执行.

3. 抢占式调度算法

1)基于时钟中断的抢占式优先权调度算法.

实时任务到达后,如果该任务的优先级别高于当前任务的优先级并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务.

2)立即抢占的优先权调度算法.

在这种调度策略中,要求操作系统具有快速响应外部时间中断的能力.一旦出现外部中断,只要当前任务未处于临界区便立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务,实时进程调度,实时进程抢占当前。 1 实现实时调度的基本条件

1-1. 提供必要的信息-就绪时间.

1-2. 开始截止时间和完成截止时间.

1-3. 处理时间.

1-4. 资源要求.

1-5. 优先级.

2. 系统处理能力强

在实时系统中,通常都有着多个实时任务.若处理机的处理能力不够强,则有可能因处理机忙不过来而使某些实时任务不能得到及时处理, 从而导致发生难以预料的后果.假定系统中有m个周期性的硬实时任务,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,系统可调度必须满足下面的限制条件:

当系统不可调度时解决的方法是提高系统的处理能力,其途径有二:

其一仍是采用单处理机系统,但须增强其处理能力, 以显著地减少对每一个任务的处理时间;

其二是采用多处理机系统.假定系统中的处理机数为N,则应将上述的限制条件改为:

3. 采用抢占式调度机制

当一个优先权更高的任务到达时,允许将当前任务暂时挂起,而令高优先权任务立即投入运行.采用这种方式去满足那些开始截止时间即将到来的任务.?

4. 具有快速切换机制

应具有的能力:

(1) 对外部中断的快速响应能力.为使在紧迫的外部事件请求中断时系统能及时响应,要求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务).?

(2) 快速的任务分派能力.在完成任务调度后,便应进行任务切换.为了提高分派程序进行任务切换时的速度, 应使系统中的每个运行功能单位适当的小,以减少任务切换的时间开销.实时调度实例

一, 最早截止时间优先算法(EDF)

EDF算法用于非抢占调度方式

优先级:根据任务的开始截止时间来确定任务的优先级.

二,最低松弛优先算法(LLF)

例如:系统中有两个周期性实时任务A和B,任务A要求每20ms执行一次,执行时间为10ms;任务B要求每50ms执行一次,执行时间为25ms.这样可知A和B每次必须完成的时间和开始截止时间如图所示

优先级:根据任务紧急程度来确定任务优先级

A和B任务每次必须完成的时间

A1 (10) A2 (30) A3(50) A4 (70) A5(90) A6 (110) A7(130) A8(150)

0 、10、 20、 30 、40、 50 、60、 70、 80 、90 、100 、110、 120、130、 140、 150

B1(25) B2(75) B3(125)

A和B任务每次必须开始的时间

时间(ms) A截止时间 B截止时间 调度对象

0 A1(10) B1(25) A1

10 A2(20) B1(15) B1

30 A2(0) B1(15) A2

40 A3(10) B1(5) B1

45 A3(5) B2(30) A3

55 A4(15) B2(20) B2

70 A4(0) B2(20) A4

松弛度

松弛度

( 20-10-0 ) ( 50-25-0 )

(40-10-10 ) ( 50-25-10 )

(40-10-30) (50-5-30)

(60-10-40) (50-5-40)

(60-10-45) (100-25-45)

(80-10-55) (100-25-55)

(80-10-70) (100-10-70 )

3.4.1 多处理器系统的类型

(1) 紧密耦合(Tightly Coupted)MPS.

这通常是通过高速总线或高速交叉开关,来实现多个处理器之间的互连的.它们共享主存储器系统和I/O设备,并要求将主存储器划分为若干个能独立访问的存储器模块,以便多个处理机能同时对主存进行访问.系统中的所有资源和进程,都由操作系统实施统一的控制和管理.

3.4 多处理机系统中的调度

从处理器之间耦合的紧密程度上划分:

松散耦合(Loosely Coupled)MPS.

在松散耦合MPS中,通常是通过通道或通信线路,来实现多台计算机之间的互连.每台计算机都有自己的存储器和I/O设备,并配置了OS来管理本地资源和在本地运行的进程.因此,每一台计算机都能独立地工作, 必要时可通过通信线路与其它计算机交换信息,以及协调它们之间的工作.

根据系统中所用处理器的相同与否划分:

(1) 对称多处理器系统SMPS. 在系统中所包含的各处理器单元,在功能和结构上都是相同的,当前的绝大多数MPS都属于SMP系统.例如,IBM公司的SR/6000 Model F50, 便是利用4片Power PC处理器构成的.?

(2) 非对称多处理器系统.在系统中有多种类型的处理单元,它们的功能和结构各不相同,其中只有一个主处理器,有多个从处理器:

1. 对称多处理器系统中的进程分配方式

在SMP系统中,所有的处理器都是相同的,因而可把所有的处理器作为一个处理器池(Processor pool),由调度程序或基于处理器的请求,将任何一个进程分配给池中的任何一个处理器去处理.在进行进程分配时,可采用以下两种方式之一.

1) 静态分配(Static Assigenment)方式

2) 动态分配(Dynamic Assgement)方式?

3.4.2 进程分配方式

静态分配(Static Assigenment)方式

一个进程从开始执行直到完成,都被固定分配到一个处理器上去执行.

2) 动态分配(Dynamic Assgement)方式

系统中设置有公共的就绪队列.分配进程时,可以将进程分配到任何一个处理器上.

动态分配方式的主要优点是消除了各处理器忙闲不均的现象

2. 非对称MPS中的进程分配方式?

对于非对称MPS,其OS大多采用主—从(Master-Slave)式OS,即OS的核心部分驻留在一台主机上(Master),而从机(Slave)上只是用户程序,进程调度只由主机执行.每当从机空闲时,便向主机发送一索求进程的信号,然后,便等待主机为它分配进程.在主机中保持有一个就绪队列,只要就绪队列不空,主机便从其队首摘下一进程分配给请求的从机.从机接收到分配的进程后便运行该进程,该进程结束后从机又向主机发出请求.

缺点:对主机要求高,出现故障导致整个系统瘫痪

1. 自调度(Self-Scheduling)方式

1) 自调度机制?

在系统中设置有一个公共的进程或线程就绪队列, 所有的处理器在空闲时,都可自己到该队列中取得一进程(或线程)来运行.在自调度方式中,可采用在单处理机环境下所用的调度算法,如先来先服务(FCFS)调度算法,最高优先权优先(FPF)调度算法和抢占式最高优先权优先调度算法等.

3.4.3 进程(线程)调度方式

2) 自调度方式的优点?

1,系统中的公共就绪队列可按照单处理机系统中所采用的各种方式加以组织;其调度算法也可沿用单处理机系统所用的算法,即很容易将单处理机环境下的调度机制移植到多处理机系统中

2,只要系统中有任务(公共就绪队列不空)就不会出现处理机空闲的情况,也不会发生处理器忙闲不均的现象,因而有利于提高处理器的利用率.

3)自调度方式的缺点

3.4.4进程调度过程

1、进程名:作为进程的标识。

指针:进程按顺序排成循环链表,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一个进程的进程控制块首地址。

2、要求运行时间:假设进程需要运行的单位时间数。

已运行时间:假设进程已经运行的单位时间数,初值为0。

状态:可假设有两种状态,就绪状态和结束状态。进程的初始状态都为就绪状态。

3、每次运行所设计的处理器调度程序调度进程之前,为每个进程任意确定它的要求运行时间。

4、此程序是模拟处理器调度,因此,被选中的进程并不实际启动运行,而是执行

已运行时间+1

来模拟进程的一次运行,表示进程已经运行过一个单位时间。

.5、在所设计的程序中应有显示或打印语句,能显示或打印每次被选中的进程名以及运行一次后进程队列的变化。

6、为进程任意确定要求运行时间,运行所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。

7、设有一个就绪队列,就绪进程按优先数(优先数范围0-100)由小到大排列(优先数越小,级别越高)。当某一进程运行完一个时间片后,其优先级应下调(如优先数加2或3)。

8、例如一组进程如下表: 进程名 A B C D E F G H J K L M 到达时间 0 1 2 3 6 8 12 12 12 18 25 25 服务时间 6 4 10 5 1 2 5 10 4 3 15 8

时间片轮转算法java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于时间片轮转怎么计算、时间片轮转算法java的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-12,除非注明,否则均为首码项目网原创文章,转载请注明出处。