操作系统代码

进程调度1—静态非剥夺式优先级调度计算平均作业周转时间

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int a[][]=new  int[3][2];
		String str;
		for(int i=0;i<3;i++) {
			str=sc.next();
			a[i][0]=sc.nextInt();
			a[i][1]=sc.nextInt();
		}		
		if(a[0][0]<a[1][0]) {
			fun(a,0,1);
		}
		if(a[0][0]<a[2][0]) {
			fun(a,0,2);
		}
		if(a[1][0]<a[2][0]) {
			fun(a,1,2);
		}
		System.out.println(String.format("%.1f", (a[1][1]*2+a[2][1])/3.0+a[0][1]));
	}

	private static void fun(int[][] a, int i, int j) {
		int t=a[i][0];
		a[i][0]=a[j][0];
		a[j][0]=t;
		t=a[i][1];
		a[i][1]=a[j][1];
		a[j][1]=t;
	}
}

进程调度2–最高响应比优先计算每个作业的周转时间

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		double a[][]=new  double[3][4];
		String str;
		int sj=0,zx=-1;
		double max;
		for(int i=0;i<3;i++) {
			str=sc.next();
			a[i][0]=sc.nextInt();
			a[i][1]=sc.nextInt();
		}
		while(a[0][1]>0 || a[1][1]>0 || a[2][1]>0 ) {
			max=0;
			zx=-1;
			for(int i=0;i<3;i++) {
				if(a[i][1]>0 && a[i][0]<=sj) {
					a[i][2]=(sj-a[i][0]+a[i][1])/a[i][1];
					if(a[i][2]>max) {
						max=a[i][2];
						zx=i;
					}else if(a[i][2]==max && a[i][0]<a[zx][0]){
						max=a[i][2];
						zx=i;
					}
				}
			}
			if(zx>=0) {
				sj+=a[zx][1];
				a[zx][3]=sj-- -a[zx][0];
				a[zx][1]=0;
			}
			sj++;
		}
		for(int i=0;i<3;i++) {
			System.out.print((int)a[i][3]+" ");
		}
	}
}

死锁—利用银行家算法判断系统的安全性

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int a[][]=new  int[4][6];
		String str;
		int x,y,z;
		x=sc.nextInt();
		y=sc.nextInt();
		z=sc.nextInt();
		for(int i=0;i<4;i++) {
			str=sc.next();
			a[i][0]=sc.nextInt();
			a[i][1]=sc.nextInt();
			a[i][2]=sc.nextInt();
			a[i][3]=sc.nextInt();
			a[i][4]=sc.nextInt();
			a[i][5]=sc.nextInt();
			x-=a[i][3];
			y-=a[i][4];
			z-=a[i][5];
		}
		int sum=0,num=0;
		str="";
		for(int i=0;num<=4-sum;i++,i%=4) {
			if(a[i][0]>0 &&  x>=(a[i][0]-a[i][3]) && y>=(a[i][1]-a[i][4]) && z>=(a[i][2]-a[i][5])) {
				x+=a[i][3];
				y+=a[i][4];
				z+=a[i][5];
				a[i][0]=-1;
				str+="P"+(i+1)+" ";
				sum++;
				num=0;
			}else {
				num++;
			}
//			System.out.println("x:"+x+" y:"+y+" z"+z);
		}
		if(sum==4) {
			System.out.println(str);
		}else {
			System.out.println(false);
		}
	}
}

问题 D: 存储管理—可变分区存储管理方式的最佳适应分配算法

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt(),y=0;
		int a[][]=new  int[n][2];
//		String str;
		for(int i=0;i<n;i++) {
//			str=sc.next();
			a[i][0]=i+1;
			a[i][1]=sc.nextInt();
		}	
		fun(a);
		for(int i=0;i<3;i++) {
			int x=sc.nextInt();
			for(int j=0;j<n;j++) {
//				System.out.println(x+"  "+a[j][1]);
				if(a[j][1]>=x) {
					System.out.print(a[j][0]+" ");
					a[j][1]-=x;
					fun(a);
					break;
				}
				if(j+1==n) {
					System.out.print(false+" ");
				}
			}
		}
		
	}

	private static void fun(int[][] a) {
			
		for(int i=0;i<a.length;i++) {
        	for(int j=i;j<a.length;j++) {
        		if(a[i][1]>a[j][1]) {
        			int t=a[i][0];
        			a[i][0]=a[j][0];
        			a[j][0]=t;
        			t=a[i][1];
        			a[i][1]=a[j][1];
        			a[j][1]=t;
        		}
        	}
        }
	}
}

问题 I: 存储管理1

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int a[]=new  int[64];
		a[1]=a[7]=a[13]=a[23]=a[47]=a[59]=1;
		for(int i=0;n>0&&i<64;i++) {
			if(a[i]==0) {
				n--;
				if(n==0) {
					System.out.println(i);
					return;
				}
			}
		}
			
		System.out.println(false);
		
	}

	
}


题目9:存储管理2

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int num[]=new  int[n];
		for(int i=0;i<n;i++) {
			num[i]=sc.nextInt();
		}
		int a[]=new int[64];
		int sx=56;
		a[2]=a[7]=a[13]=a[23]=a[37]=a[47]=a[59]=a[61]=1;
		for(int i=0;i<n;i++) {	
			
			if(num[i]>sx) {
				System.out.print(false+" ");
			}else {
				for(int j=0;num[i]>0 && j<64;j++) {
					if(a[j]==0) {
						num[i]--;
						a[j]=1;
						sx--;
					}
					if(num[i]==0) {
						System.out.print(j+" ");
					}
				}
			}
		}	
	}
}



题目10:存储管理3

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int num[][]=new  int[n][65];
		for(int i=0;i<n;i++) {
			num[i][64]=sc.nextInt();
		}
		String string=sc.next();
		int a[]=new int[64];
		int sx=56;
		a[2]=a[7]=a[13]=a[23]=a[37]=a[47]=a[59]=a[61]=a[41]=1;
		for(int i=0;i<n;i++) {	
			if(num[i][64]>sx) {
				System.out.print(false+" ");
			}else {
				for(int j=0;num[i][64]>0 && j<64;j++) {
					if(a[j]==0) {
						num[i][64]--;
						num[i][j]=1;
						a[j]=1;
						sx--;
					}
					if(num[i][64]==0) {
						System.out.print(j+" ");
					}
				}
			}
		}	
		System.out.println();		
		int x=Integer.parseInt(string.substring(1));
		if(x<=n && string.charAt(0)=='p' && num[x-1][64]==0) {
			for(int i=0;i<64;i++) {
				if(num[x-1][i]==1) {
					System.out.print(i+" ");
				}
			}
		}else{
			System.out.print(false);
		}
	}
}



题目11:带存储管理的处理器调度4

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Node{
	String name;
	int size;
	int time;
	int p;
	boolean jr=false;
	boolean zx=false;
}
public class Main {
	
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		Node arr []=new Node[3];
		List<Node> list=new ArrayList<>();
		for(int i=0;i<3;i++) {
			Node tmp=new Node();
			tmp.name=sc.next();
			tmp.size=sc.nextInt();
			tmp.time=sc.nextInt();
			tmp.p=sc.nextInt();
			arr[i]=tmp;
		}
		int num=0,sy=0,jr=0;
		while(num<3) {
			while(jr<3-num) {
				int tmpp=-1;
				Node tmpNode=null;
				for(int i=0;i<3;i++) {
					if( sy+arr[i].size<=100 && arr[i].p>tmpp && arr[i].jr==false) {
						tmpNode=arr[i];
						tmpp=tmpNode.p;
					}
				}				
				if(tmpNode==null) {
					break;
				}else {
					jr++;
					System.out.println("jr:"+tmpNode.name);
					sy+=tmpNode.size;
					tmpNode.jr=true;
				}
			}
			
			while(jr>0) {
				int tmptime=100000000;
				Node tmpNode=null;
				for(int i=0;i<3;i++) {
					if(arr[i].time<tmptime && arr[i].jr==true && arr[i].zx==false) {
						tmpNode=arr[i];
						tmptime=tmpNode.time;
					}
				}
				jr--;
				num++;
				sy-=tmpNode.size;
				tmpNode.zx=true;
				System.out.println("zx:"+tmpNode.name);
				list.add(tmpNode);
				break;
			}
		}
		for(Node tmpNode :list) {
			System.out.print(tmpNode.name+" ");
		}
		
	}
}



问题 E: 存储管理—FIFO页面替换算法计算中断次数

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt(),y=0;
		int a[]=new  int[n];
		for(int i=0;i<n;i++) {
			a[i]=sc.nextInt();
		}
		int x=sc.nextInt();
		int a2[][]=new int[x][2];
		for(int i=0;i<n;i++) {
			for(int j=0;j<x;j++) {
				if(a[i]==a2[j][1] && a2[j][0]>0) {
					break;
				}
				if(j==x-1) {
					y++;
//					System.out.println(a[i]+" "+(i+1)+" "+a2[0][1]+" "+a2[0][0]);
					a2[0][1]=a[i];
					a2[0][0]=i+1;
					fun(a2);
					
				}
			}
		}
		System.out.println(y);
		
	}

	private static void fun(int[][] a) {		
		for(int i=0;i<a.length;i++) {
        	for(int j=i;j<a.length;j++) {
        		if(a[i][0]>a[j][0]) {
        			int t=a[i][0];
        			a[i][0]=a[j][0];
        			a[j][0]=t;
        			t=a[i][1];
        			a[i][1]=a[j][1];
        			a[j][1]=t;
        		}
        	}
        }	
	}
}


进程调度3-优先级调度

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int  a[][]=new  int[n][3];
		String str;
		int zx=-1;
		int max,x=0;
		for(int i=0;i<n;i++) {
			str=sc.next();
			str=str.substring(1);
			a[i][0]=sc.nextInt();
			a[i][1]=sc.nextInt();
			a[i][2]=Integer.parseInt(str);
		}
		while(x<n) {
			max=-1000000;
			for(int i=0;i<n;i++) {
				if(a[i][1]>0 && a[i][0]>max) {
					max=a[i][0];
					zx=i;
				}
			}
			a[zx][1]--;
			a[zx][0]--;
			System.out.print("P"+(a[zx][2])+" ");
			if(a[zx][1]==0) {
				x++;
				a[zx][0]=-1;
			}
		}
	}
}

进程调度4----时间片轮转

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int x=sc.nextInt();
		int n=sc.nextInt();
		int  a[]=new  int[n];
		String str;
		for(int i=0;i<n;i++) {
			str=sc.next();
			a[i]=sc.nextInt();
		}
		int num=sc.nextInt(),y=-1,n2=n;
		while(num >0 && n2>0) {
			for(int i=0;i<n;i++) {
				if(a[i]>0) {
					a[i]-=x;
					if(a[i]<=0) {
						n2--;
					}
					num--;
					if(num==0) {
						y=i;
					}
				}
			}
		}
		if(y>0) {
			System.out.println("P"+(y+1));
		}else {
			System.out.println("over");
		}
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值