第一题 问题 A: 各位同学请先完成此题以规范你们的语法

参考代码(Java):

import java.util.Scanner;/*** @author 作者 : 吴泽胜* @createDate 创建时间:2020-5-21 上午11:19:35*/public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int a = sc.nextInt();int b = sc.nextInt();System.out.println(a+b);}}

第二题 问题 B: 进程调度1:最高响应比优先

操作系统中高响应比优先调度算法例子

进程 到达时刻 运行时间/ms 
P1      0           10  
P2      1            1 
P3      2            2 
P4      3            1 
P5      4            5 
0时刻P1运行, 10时刻,P1运行完,此时P2-P5的响应比分别为: P2:(1+9)/1=10 P3:(2+8)/2=5 P4:(1+7)/1=8 P5:(5+6)/5=2.2因此执行P2 11时刻。

P2运行完,此时P3-P5的响应比分别为: P3:(2+9)/2=5.5 P4:(1+8)/1=9 P5:(5+7)/5=2.4因此执行P4 11时刻。

P4运行完,此时P3.P5的响应比分别为: P3:(2+10)/2=6 P5:(5+8)/5=2.6因此执行P3,最后执行P5。

所以此算法进程的平均周转时间为:(10+10+12+9+15)/5=56/5=11.2

参考代码(Java)(运行的内存17560 KB>16M,不能通过,换成C语言了):


import java.util.Scanner;/*** @author 作者 : 吴泽胜* @createDate 创建时间:2020-5-21 上午11:30:58*/class thread{String name;       //线程名int start_time;        //开始时刻int run_time;     //运行时间//Set方法public void Set(String name, int start_time,int run_time){this.name = name;this.start_time = start_time;this.run_time = run_time;}
}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);thread theads[] = new thread[3];for(int i = 0 ; i < 3 ; i++){     //输入数据theads[i] = new thread();theads[i].Set(sc.next(), sc.nextInt(), sc.nextInt());}sc.close();int k = 0, j = 0, m = 0, i = 0;//寻找最小时间,最初开始的线程int time = theads[0].start_time + theads[0].run_time;for(i = 1 ; i < 3 ; i++){if( theads[i].start_time < theads[0].start_time){k = i;time = theads[i].start_time + theads[i].run_time;}else if(theads[i].start_time == theads[0].start_time) {if (theads[i].run_time < theads[0].run_time) {k = i;time = theads[i].start_time + theads[i].run_time;}}}for (i = 0; i < 2 ; i++) {if (i != k) {j = i + 1;if (j != k) {if (theads[j].start_time < theads[i].start_time) {m = i; i = j; j = m;}break;}}}if (theads[i].start_time <= time) {if (theads[j].start_time <= time) {//最高响应比优先的调度算法公式if (((time - theads[j].start_time) * theads[i].run_time) > ((time - theads[i].start_time) * theads[j].run_time) ) {System.out.print(theads[i].name);}else{System.out.print(theads[j].name);}}//需算相应比else {System.out.print(theads[j].name);}}else {if ((time - theads[j].start_time) * theads[i].run_time < (time - theads[i].start_time) * theads[j].run_time) {System.out.print(theads[j].name);}else {System.out.print(theads[i].name);}}}
}

参考代码(C语言)

#include<stdio.h>
struct proce
{char name[10];int start_time;int run_time;
}pro[3];int main()
{int m = 0;int time = 0;int i, j , k = 0;for (i = 0; i < 3; i++) {scanf("%s %d %d", pro[i].name, &pro[i].start_time, &pro[i].run_time);}time = pro[0].start_time + pro[0].run_time;for (i = 1; i < 3; i++) {if (pro[i].start_time < pro[0].start_time) {k = i;time = pro[i].start_time + pro[i].run_time;}else if (pro[i].start_time = pro[0].start_time) {if (pro[i].run_time < pro[0].run_time) {k = i;time = pro[i].start_time + pro[i].run_time;}}}//printf("%d %d\n",k,time);//min:最小开始时间;k:进程数for (i = 0; i <2 ; i++) {if (i != k) {j = i + 1;if (j != k) {if (pro[j].start_time < pro[i].start_time) {m = i; i = j; j = m;}break;}}}//printf("%d %d\n", i, j);if (pro[i].start_time <= time) {if (pro[j].start_time <= time) {if (((time - pro[j].start_time) * pro[i].run_time) > ((time - pro[i].start_time) * pro[j].run_time)   ) {printf("%s", pro[i].name);}else{printf("%s", pro[j].name);}}//需算相应比else {printf("%s", pro[j].name);}}else {if ((time - pro[j].start_time) * pro[i].run_time < (time - pro[i].start_time) * pro[j].run_time) {printf("%s", pro[j].name);}else {printf("%s", pro[i].name);}}return 0;
}

第三题 问题 C: 进程调度2:最短剩余时间优先

参考代码(C语言):

#include<stdio.h>struct proce
{char name[10];int start_time;      //开始时刻 int run_time;        //运行时间
}pro[3];int main(){int run_time1,run_time2,run_time3;for (int i = 0; i < 3; i++)          //导入数值 scanf("%s %d %d", pro[i].name, &pro[i].start_time, &pro[i].run_time);run_time1=pro[0].run_time-(pro[1].start_time-pro[0].start_time);run_time2=pro[1].run_time;if(run_time1<run_time2){run_time1=run_time1-(pro[2].start_time-pro[1].start_time);run_time3=pro[2].run_time;if(run_time1>=run_time3){printf("%s",pro[1].name);}else{if(run_time2>=run_time3){printf("%s",pro[1].name);}else{printf("%s",pro[2].name);}}}else{run_time3=pro[2].run_time;if(run_time1>=run_time3){printf("%s",pro[0].name);}else{printf("%s",pro[2].name);}}    return 0;
}

第四题 问题 D: 进程调度3

参考代码(C语言):

#include<stdio.h>
#include<string.h>struct process
{char name[10];     // 进程名      m int priority;     // 优先级      a int run_time;     // 运行时间     b
}pro[25535];int main(){int N, n = 0, index, count = 0, num = 0;scanf("%d",&N);char m[N][20];for(int i = 0;i < N;i++)scanf("%s %d %d",&pro[i].name,&pro[i].priority,&pro[i].run_time);int M = 0;                   //累加优先级数 for(int i = 0;i < N;i++)M += pro[i].priority;  for( int i = M - 1; i >= 0; i-- ){index = 0;for(int j = 0;j < N;j++){if(pro[j].priority == 0)num++;if(num == N)count = 1;if(pro[j].run_time > 0)if(pro[j].priority > index){index = pro[j].priority;n = j;}}if(count == 0){if(pro[n].priority > 0)pro[n].priority--;pro[n].run_time--;printf("%s",pro[n].name);if(i > 0)printf(" ");}else{for(int j = 0;j < N;)if(pro[j].run_time > 0){printf("%s",pro[j].name);if(i > 0)printf(" ");pro[j].run_time--;break;}elsej++;}}return 0;
}

第五题 问题 E: 进程调度4:时间片轮转

参考代码(C语言):

#include<stdio.h>
#include<string.h>struct proce
{char name[10];int run_time;
}pro[100];int main(){int Time_Slice = 0;   //时间片               1int n = 0;            //n个进程数             3int Time_Slice_number = 0; //时间片轮转次数  3scanf("%d",&Time_Slice);     //输入时间片scanf("%d",&n);            //输入进程数 for(int i = 0 ; i < n ; i++)  //输入进程 scanf("%s %d",&pro[i].name,&pro[i].run_time);scanf("%d",&Time_Slice_number);  //输入时间片轮转次数//此方法很笨,不是更优解 int number = 0;           //已进行的轮转次数 int k = 0,i = 0,m = 0;    // k:记录目前所在进程的位置  i:循环进程  m:控制循环跳出   while( m < 1000){  //控制跳出 if(number >= Time_Slice_number )  break;if( pro[i].run_time > 0){ //当进程的运行时间不为0时,运行 k = i;    //k记录当前进程位置 pro[i].run_time -= Time_Slice; //运行时间减去时间片时间 number++;   //记录时间片轮转次数if(pro[i].run_time < 0)   //当运行时间小于0时,应该为0 pro[i].run_time = 0;}i++;if( i == n){i = 0;   //返回循环点 m++;  //进程循环次数+1 }}if( m == 1000)printf("over");elseprintf("%s",pro[k].name);return 0;
}

第六题 问题 F: 存储管理1

参考代码(Java):


import java.util.Scanner;/*** @author 作者 : 吴泽胜* @createDate 创建时间:2020-5-22 上午09:38:13*/public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt(); sc.close();int arr[] = new int[64];int count = 0;arr[1] = 1;    arr[7] = 1;    arr[13] = 1;   arr[23] = 1;   arr[47] = 1;   arr[59] = 1;if(n>58){System.out.print("false");}else{for (int i = 0; i < n+1; i++){if (arr[i]==1)count++;}System.out.print(count+n-1);}}}

第七题 问题G_存储管理2backup

参考代码(Java):


import java.util.Scanner;/*** @author 作者 : 吴泽胜* @createDate 创建时间:2020-5-22 上午09:49:02*/public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt();int arr[] = new int[n];for(int i = 0 ; i < n ; i++)arr[i] = sc.nextInt();sc.close();int Memory[] = new int[64];        //内存块for(int i = 0 ; i < 64 ; i++){if(i == 2 || i == 7 || i == 13 || i == 23 || i == 37 || i == 47 || i == 59 || i == 61)Memory[i] = 1;elseMemory[i] = 0;}int count = arr[0];for(int i = 0 ; i < n ; i++){if(arr[i] > count){System.out.print("false"+ " ");continue;}count += arr[i];for(int j = 0 ; j < 64 ; j++){if(arr[i] == 0){System.out.print (j-1);break;}if(Memory[j] == 0){Memory[j] = 1;arr[i]--;}}System.out.print(" ");}}}

第八题 问题H_存储管理3

参考代码(Java):


import java.util.Scanner;/*** @author 作者 : 吴泽胜* @createDate 创建时间:2020-5-22 下午12:56:15*/public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt();int arr[] = new int[n];for(int i = 0 ; i < n ; i++)arr[i] = sc.nextInt();String tread_ = sc.next();sc.close();String str_=String.valueOf(tread_.charAt(1));int reback = Integer.parseInt(str_) ;int Memory[] = new int[64];     //内存块for(int i = 0 ; i < 64 ; i++){if(i == 2 || i == 7 || i == 13 || i == 23 || i == 37 || i == 47 || i == 59 || i == 61)Memory[i] = 1;elseMemory[i] = 0;}int count = arr[0];boolean flag = false;for(int i = 0 ; i < n ; i++){if(arr[i] > count){System.out.print("false"+ " ");if(i == reback - 1) flag = !flag;continue;}count += arr[i];for(int j = 0 ; j < 64 ; j++){if(arr[i] == 0){System.out.print (j-1);break;}if(Memory[j] == 0){if(i == reback - 1){Memory[j] = 2;arr[i]--;continue;}Memory[j] = 1;arr[i]--;}}System.out.print(" ");}System.out.println();if(flag)System.out.print("false");else{for(int j = 0 ; j < 64 ; j++)if(Memory[j] == 2)System.out.print(j + " ");}        }
}

湖北师范大学计信2018届操作系统实训(参考答案)相关推荐

  1. 湖北师范大学计信2018届计算机组成原理实训(参考答案)

    第一题 问题 A: 简单运算器-74LS181 参考代码(C语言): #include <stdio.h> #include <stdlib.h>int main() {cha ...

  2. 湖北师范大学计信计科2018届期末实训EduCoder习题 (参考答案)

    题一:抢红包小程序 第1关:抢红包小程序之随机分配红包 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中完成随机分配红包的功能,具体要求如下: RedPacketUtil ...

  3. 江西师范大学20届Java方向实训参考答案

    江西师范大学20届Java方向实训参考答案 送分题-A+B Problem 略 #1. A + B Problem 略 「HNOI2017」抛硬币 中国剩余定理+范德蒙德卷积+拓展Lucas+预处理伪 ...

  4. 湖北师范大学计信学院C语言学期实训

    目录 1.进制转换 1.1二进制转十进制 1.2十进制整数转二进制 1.3十进制小数转二进制

  5. linux管道通信题目,操作系统实训(Linux)——习题解答、例题解析、实验指导-王红-实验实验7软中断及管道通信课案.ppt...

    操作系统实训(Linux)--习题解答.例题解析.实验指导-王红-实验实验7软中断及管道通信课案.ppt 实验7 软中断及管道通信 一.实验目的(1)掌握linux系统软中断通信的实现方法.(2)掌握 ...

  6. 计算机基础知识实训答案,《计算机应用基础》实训作业答案

    <<计算机应用基础>实训作业答案.doc>由会员分享,可免费在线阅读全文,更多与<<计算机应用基础>实训作业答案>相关文档资源请在帮帮文库(www.wo ...

  7. 头歌实践教学平台答案(Java实训作业答案)

    搜集整理了一份最新最全的头歌(EduCoder)Java实训作业答案,分享给大家.(EduCoder)是信息技术类实践教学平台.(EduCoder)涵盖了计算机.大数据.云计算.人工智能.软件工程.物 ...

  8. 计算机操作系统实训心得总结,计算机操作系统安全实训心得总结

    <计算机操作系统安全实训心得总结>由会员分享,可在线阅读,更多相关<计算机操作系统安全实训心得总结(2页珍藏版)>请在人人文库网上搜索. 1.本次实训,是对我能力的进一步锻炼, ...

  9. 进程管理系统的设计与实现 SDUT 操作系统实训 项目 Java

    进程管理系统的设计与实现 要求: (1)设计一个完整的进程调度系统,至少包含三种常用的算法(FCFS.SPF.静态优先权.响应比.时间片轮转),系统中至少包含5个进程,并且能够体现进程的动态申请; ( ...

最新文章

  1. java url json字符串_使用HttpClient将URL中的JSON查询字符串发送到Web服务(Java)
  2. ubuntu进入linux系统安装程序,Ubuntu Linux下安装软件方法
  3. 内温的整体优先效应实验_陕西师范大学《普通心理学》第四章-知觉
  4. 获取顺序容器vector,deque,string和array的首尾元素的方法有四个
  5. Go标准库os/exec使用指南
  6. C#实例:datagridview单元格合并
  7. 【Python】Scrapy的安装与使用
  8. php __FILE__,__CLASS__等魔术变量,及实例
  9. 原型设计-结对第一次作业
  10. linux逻辑分区被删除了怎么办,找到了linux分区顺序错乱修复方法
  11. 实现同步请求_图解 Promise 实现原理(二)—— Promise 链式调用
  12. 中国联通加快数据中心建设:全网机架数量超过32万架
  13. logback日志pattern_003、Spring Boot使用slf4j进行日志记录
  14. c++语言偶数分离,在C++的链表中分离偶数和奇数节点
  15. Oracle不完全恢复-主动恢复和incarnation/RMAN-20208/RMAN-06004
  16. linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
  17. 【Django 2021年最新版教程36】 python django runserver 后台运行
  18. 【简记】Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist: No URLs in
  19. SQLiteSpy下载安装
  20. 超详细!Jmeter性能测试(一)

热门文章

  1. windows电脑制作mac os u盘重装系统_为什么不建议用360重装系统 请耐心等待几分钟...
  2. 后疫情时代,美团是否会掉队?
  3. 新生研讨课调研——通信网络时代发展及其应用
  4. 关于blue soleil无法识别某些蓝牙适配器的解决方法
  5. android ios 唱歌评分代码sdk
  6. 《学习笔记》------温故而知新
  7. 【HDU 6973】Bookshop (树剖+平衡树)
  8. 计算机CPU的含义是,cpu的含义
  9. 前端初学者的Ant Design Pro V6总结(上)
  10. Typora 破解版 Mac自取