java如何实现操作系统进程调度试验

Python036

java如何实现操作系统进程调度试验,第1张

可以的,想必你是个学生,而且正在学习的是操作系统这门课程。我想你们老师只是会教你们操作系统这门课程,会教你们先来先服务,时间片轮流这几种进程调度的方法。如果你上课听懂了,那么你要做的是熟悉这个思想,而不是真的要去实现操作系统级别的进程调度(这对于一个学生来说很有难度,当然天才除外)。

所以目的明确,办事的方法不一样,你只要熟悉JAVA进程编程这一块,你就可以动手开始写了,你可以用JAVA带的进程类thread,因为你的目的是为了熟悉进程调度算法,而不是如何去创建一个进程(创建JAVA为你封装好了)。至于如何实现这些调度算法就靠你自己写了。

也许看到这里,你会觉得我一点有用的代码都没贴出来,原因很简单:我没时间写这种代码(多进程编程一直是编程的难点,特别是资源的共享这一块)。第2,成果是要自己争取,别人不会给你最终的答案,最多给你指个方向(出来工作这么久,没人给过现成的,能跑的代码。给个方向就已经非常感激别人了,很多时候,别人理都赖的理你)。

public class CLSS_ch2 {

public static void main(String[] args) {

int sum = 0

for (int i = 1i <= 100i++) {

if (i % 10 == 3)

continue

sum += i

}

System.out.println(sum)

}

}

计算机图形技术组的成员在1993年开发出了 Lua。它被设计成为脚本语言,是一种不可获取的过程式编程语言,以简单而强大而闻名。

公众:类PrivilegeProcess {公共静态无效的主要(字串[] args){ MyQueue的MyQueue的新MyQueue的()/ /声明队列 印刷电路板[PCB = {新的PCB(001 ,8,1),新的PCB(002,7,9),新的PCB(003,3,8),新的PCB(004,1,7),新的PCB(005,7,4)} >PCB段=新的PCB()(INT I = 0<pcb.length+ +){/ /初始化先进行排序,选择排序这里使用的是高优先级的一线队(J =我<pcb.lengthJ + +){(PCB [I]。特权<PCB [J]。特权){段= PCB [1] PCB [I] = PCB [J] PCB [J] =段} } } 体系。通过out.println(“入队后第一时间的进程的顺序:”)(INT I = 0<pcb.length+ +){的System.out调用println(第一次入队#程序名称:“+ PCB [我]。名称+ totaltime:”+ PCB [I]。totaltime +“的”特权“+ PCB [我]。特权)} () myqueue.start(PCB)} } 类MyQueue的{ INT指数= 0 PCB [] PC =新的PCB [5] PCB [] PC1 =新的PCB [4] PCB温度=新的PCB() BR />公共无效排队(PCB工艺){/ /排队算法(指数== 5){(“出界!”)返回} PC [索引] =进程指数+ +} 公共:PCB DEQUEUE(){/ /出队算法(索引== 0)返回空(INT I = 0<pc1.length+ +){ PC1 [I] = PC [ +1]} 指数 - 温度= PC [0](INT I = 0<pc1.length+ +){ BR />PC [I] = PC1 [I]} 回报条件} 公共无效启动(PCB [] PC){/ /进程表算法(PC [0]。isNotFinish ==真| | PC [1 isNotFinish ==真| | PC [2 isNotFinish ==真| | PC [3]。时isNotFinish ==真| | PC [4]。isNotFinish ==){ / / *注:| |运算符都是假的,所有的表达式结果为假,否则真(INT I = 0<PC长度+ +){ PC [I]。运行(这一点)/>} 的System.out.println()(INT I = 0<pc.length+ +){/ /处理每个运行一次运行的时间片的长度重新排序优先一旦(J =我<pc.lengthJ + +){如果(PC [I]特权<PC [J]。特权){温度= PC [I] PC [I] = PC [J] PC [J] =温度} } } } } } 类PCB {/ /声明过程级和int名,totaltime ,运行时特权布尔isNotFinish的公众PCB(){} 公开PCB(名称,诠释totaltime特权){ this.name =的名称/ /进程名 this.totaltime = totaltime / / this.privilege =特权/ /总时间优先 this.runtime = 2 / /时间片值是2 this.isNotFinish =真/ /是否执行完成(“初始值:程序名称:”+名+“totaltime:”+ totaltime +“特权”+特权) System.out的。调用println()} MyQueue的MQ公共无效的run(){/ /处理的基础上实施的时间片算法(totalTime>1){ totaltime =运行/ /总时间大于1,总时间=总时间 - 时间片特权 - (“程序名称:”+姓名+“ remaintime:“+ +”特权“+特权)totaltime 的} else if(totaltime == 1){ totaltime - / /总时间为1时,执行时间为1 >特权 - (“程序名称:”+姓名+“remaintime:”+ totaltime +“特权”+特权)}其他{ isNotFinish =假/ / 0,将isNotFinish标志设置为假} 如果(isNotFinish ==真){br mq.deQueue() mq.enQueue(本)} } }