//高优先权优先调度算法
public class PrivilegeProcess {
public static void main(String[] args) {
MyQueue myqueue = new MyQueue();//声明队列
PCB[] pcb = {new PCB(001,8,1),new PCB(002,7,9),new PCB(003,3,8),new PCB(004,1,7),new PCB(005,7,4)};
PCB para = new PCB();
for(int i=0;i<pcb.length;i++){//初始化后首先执行一次排序,这里使用的是选择排序,优先级高的先入队
for(int j=i;j<pcb.length;j++){
if(pcb[i].privilege < pcb[j].privilege){
para = pcb[i];
pcb[i] = pcb[j];
pcb[j] = para;
}
}
}
System.out.println("初次入队后各进程的顺序:");
for(int i=0;i<pcb.length;i++){
System.out.println("初次入队后 # processname : " + pcb[i].name + " totaltime : " + pcb[i].totaltime + " privilege :" + pcb[i].privilege);
}
System.out.println();
myqueue.start(pcb);
}
}
class MyQueue {
int index = 0;
PCB[] pc = new PCB[5];
PCB[] pc1 = new PCB[4];
PCB temp = new PCB();
public void enQueue(PCB process){//入队算法
if(index==5){
System.out.println("out of bounds !");
return;
}
pc[index] = process;
index++;
}
public PCB deQueue(){//出队算法
if(index==0)
return null;
for(int i=0;i<pc1.length;i++){
pc1[i] = pc[i+1];
}
index--;
temp = pc[0];
for(int i=0;i<pc1.length;i++){
pc[i] = pc1[i];
}
return temp;
}
public void start(PCB[] pc){//显示进程表算法
while(pc[0].isNotFinish==true||pc[1].isNotFinish==true||pc[2].isNotFinish==true||pc[3].isNotFinish==true||pc[4].isNotFinish==true){
//*注意:||运算符,所有表达式都为false结果才为false,否则为true
for(int i=0;i<pc.length;i++){
pc[i].run(this);
}
System.out.println();
for(int i=0;i<pc.length;i++){//所有进程每执行完一次时间片长度的运行就重新按优先级排列一次
for(int j=i;j<pc.length;j++){
if(pc[i].privilege < pc[j].privilege){
temp = pc[i];
pc[i] = pc[j];
pc[j] = temp;
}
}
}
}
}
}
class PCB {//声明进程类
int name,totaltime,runtime,privilege;
boolean isNotFinish;
public PCB(){
}
public PCB(int name, int totaltime, int privilege){
this.name = name;//进程名
this.totaltime = totaltime;//总时间
this.privilege = privilege;//优先级别
this.runtime = 2;//时间片,这里设值为2
this.isNotFinish = true;//是否执行完毕
System.out.println("初始值: processname : " + name + " totaltime : " + totaltime + " privilege :" + privilege );
System.out.println();
}
public void run (MyQueue mq){//进程的基于时间片的执行算法
if(totaltime>1){
totaltime-=runtime;//在总时间大于1的时候,总时间=总时间-时间片
privilege--;
System.out.println(" processname : " + name + " remaintime : " + totaltime + " privilege :" + privilege );
}else if(totaltime==1){
totaltime--;//在总时间为1时,执行时间为1
privilege--;
System.out.println(" processname : " + name + " remaintime : " + totaltime + " privilege :" + privilege );
}else{
isNotFinish = false;//总时间为0,将isNotFinish标记置为false
}
if(isNotFinish==true){
mq.deQueue();
mq.enQueue(this);
}
}
}
分享到:
相关推荐
Linux 进程调度算法分析 基于 X86 平台 Linux2.6.26 内核进程调度部分代码,刨析 Linux 进程调度算法,对算法的原理,实现和复杂度进行了分析并提出了算法改进措施。 Linux 进程调度概述: Linux 系统支持用户态...
### 进程调度算法的设计 #### 一、设计目的 本次课程设计的主要目的是深化学生对操作系统资源管理模块的理解,特别是进程调度部分。通过动手实践,学生可以更好地掌握操作系统的基本原理和功能,具备一定的分析、...
操作系统课程设计大作业C++进程调度算法的模拟实现源码,实现了 动态优先级、先来先服务、时间片轮转 三个算法 安装教程 下载到本地,然后直接用VS打开运行即可 操作系统课程设计大作业C++进程调度算法的模拟实现...
进程调度算法的模拟实现 进程调度是操作系统中的一种机制,旨在将系统资源分配给不同的进程以提高系统的效率和性能。进程调度算法是操作系统中的一种核心算法,它决定了进程的执行顺序和时间。在本文中,我们将对五...
进程调度算法模拟程序设计 C++ 在操作系统中,进程调度算法是核心组件之一,负责分配系统资源和管理进程的执行顺序。下面我们将对进程调度算法的模拟程序设计进行详细的分析和解释。 进程调度算法 进程调度算法...
《操作系统》进程调度算法模拟 在操作系统中,进程调度算法是指操作系统将 CPU 资源分配给多个进程的算法。动态优先权调度算法是指根据进程的优先权来确定其执行顺序的算法。下面是对《操作系统》进程调度算法模拟...
进程管理和进程调度算法模拟 进程管理 在操作系统中,进程管理是指操作系统对进程的创建、执行、同步、通信和调度的管理。进程是操作系统中最基本的执行单元,它是资源分配和独立运行的基本单位。进程管理主要包括...
本文将深入探讨四种常见的进程调度算法:先来先服务(FCFS)、短进程优先(SPF)、高响应比优先(HRN)以及时间片轮转(RR),并结合提供的文件名,我们可以推测这可能是一个关于这些算法实现的编程项目。...
本文将深入探讨Java环境下实现的四种进程调度算法:先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)以及高响应比优先(HRN)。这些算法在多任务环境中用于决定哪个进程应该获得CPU的执行权,以达到资源分配的公平...
在这个C# Winform实现的操作系统模拟进程调度算法项目中,我们将探讨三种基本的调度策略:先来先服务(FCFS)、短作业优先(SJF)和优先级调度。 **先来先服务(FCFS)调度算法**是最简单的调度策略,它按照进程...
操作系统实验报告 C++实现进程调度算法,短进程优先SJF与先来先服务FCFS算法 本实验报告的主要目的是通过C++语言实现短进程优先SJF和先来先服务FCFS两种进程调度算法,并比较它们的性能。 第一部分:实验目的 本...
操作系统实验的进程调度算法 操作系统实验是计算机科学中的一门重要课程,对操作系统的实验和实践是学习和掌握操作系统知识的重要环节。本实验报告的主要内容是关于进程调度算法的设计和实现,旨在加深对操作系统...
根据给定文件的信息,我们可以详细地探讨一下操作系统中进程调度算法的具体实现,特别是结合C语言的编程环境。这里主要关注的是两种经典的进程调度算法:最高优先级优先(Priority Scheduling)与先来先服务(First-...
进程调度算法操作系统课程设计 进程调度算法是操作系统课程设计的重要组成部分,本文通过优先权法与轮转调度算法的模拟,加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现...
### 操作系统短作业优先进程调度算法 #### 一、概述 短作业优先进程调度算法是一种在批处理系统中常用的调度策略,其目的是为了提高系统的吞吐量和响应速度,通过优先选择运行时间较短的任务进行执行,从而减少...
进程调度算法的实现计算机操作系统课程设计 进程调度算法是计算机操作系统中的一种关键技术,它负责管理和调度系统中的进程,以提高系统的效率和性能。本文将详细介绍进程调度算法的实现计算机操作系统课程设计的...
C语言实现:短进程优先-进程调度算法 1. 采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已用CPU时间、进程...
操作系统实验三的主题是“进程调度算法实验”,旨在深入理解进程调度的概念,体验其工作机制,并学习如何在Linux系统中应用不同的调度策略。实验报告涵盖了三种主要的调度方法:SCHED_OTHER、SCHED_FIFO和SCHED_RR。...
本项目“基于Visual C++的进程调度算法模拟”是用C语言实现的一个实践工具,它允许用户模拟不同的进程调度算法,以便理解和分析这些算法在实际操作系统中的行为。 首先,我们要理解什么是进程调度。进程是操作系统...
进程调度算法实现代码(操作系统) 进程调度算法是操作系统中最核心的组件之一,它负责管理和调度系统中的进程,以确保系统的高效运行。下面是进程调度算法实现代码的详细解释: 进程队列结构 在进程调度算法中,...