好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2022年操作系统上机实验.pdf

9页
  • 卖家[上传人]:cn****1
  • 文档编号:567387787
  • 上传时间:2024-07-20
  • 文档格式:PDF
  • 文档大小:67.66KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验一编程接口实验目的本实验通过使用系统调用编制程序,加深对操作系统提供的编程接口的理解实验预备内容复习 c 语言的五个常用函数的功能和使用方法,汇编语言5 各系统调用的功能和使用方法实验内容利用 c语言五个常用函数和汇编语言5 各系统调用分别编写一段程序,使用的函数 (系统调用)不限,完成的功能也不限实例用 5 个库函数完成三字符串的输入、比较大小、计算最大字符串的长度,并输出最大字符串和其长度从键盘上获取字符串函数:gets();字符串比较函数:strcmp();字符串复制函数:strcpy();求字符串长度函数:strlen();往标准输出设备上输出数据函数:printf(). 程序:#include #include void main() { char str1[10],str2[10],str3[10]; int length; gets(str1); gets(str2); gets(str3); length=strlen(str1); printf("%d\n",length); printf("%s\n",strcat(str1,str2)); if(strcmp(str3,"China")==0) printf("yes\n"); else printf("no\n"); } 实验二作业(进程)调度实验实验目的与要求本实验的目的是通过作业或进程调度算名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 法模拟设计,进一步加深对作业或进程调度算法的理解,通过计算平均周转时间和带权平均周转时间,进一步加深对算法的评价方法的理解。

      实验预备内容(1)预习作业或进程调度算法2)预习平均周转时间和带权平均周转时间计算实验内容设定一组作业或进程,给定相关参数,对这组进程或作业按调度算法实施调度,输出调度次序,并计算平均周转时间和带权平均周转时间要求实现的调度算法有:(1)先来先服务调度算法2)优先级调度算法3)短作业(或进程)优先调度算法4)响应比高优先调度算法使用的主要数据结构:1.定义一个结构体结构体的主要成员有:序号作业(进程)号或名称提交时间运行时间优先数进入输入井时间开始运行时间尚需运行时间运行结束时间周转时间带权周转时间运行次序等2.利用定义的结构体,定义一个结构体数组,用来记录系统中的作业或进程程序:/* 没有进行数据清除操作*/ #include #include #define MAX 10 struct task_struct { int number; /* 进程编号 */ char name[10]; /* 进程名称 */ float come_time; /* 到达时间 */ float run_begin_time; /* 开始运行时间 */ float run_time; /* 运行时间 */ float run_end_time; /* 运行结束时间 */ int priority; /* 优先级 */ int order; /* 运行次序 */ int flag; /* 调度标志 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - }tasks[MAX]; int counter; /* 实际进程个数*/ int fcfs(); /* 先来先服务 */ //int rr(); /* 轮转调度 */ int ps(); /* 优先级调度 */ /*int mlqs(); /* 分级轮转调度*/*/ /*int mlfqs(); /* 分级反馈轮转调度*/*/ int sjf(); /* 短作业优先 */ int hrrn(); /* 响应比高优先 */ int pinput(); /* 进程参数输入*/ int poutput(); /* 调度结果输出*/ void main() { int option; pinput(); while(1) { printf(" 请选择调度算法(0~7):\n"); printf("1. 先来先服务 \n"); printf("2. 轮转调度 \n"); printf("3. 优先级调度 \n"); printf("4. 短作业优先 \n"); printf("5. 响应比高优先 \n"); printf("6. 分级轮转调度 \n"); printf("7. 分级反馈轮转调度\n"); printf("0. 退出 \n"); scanf("%d",&option); printf("%d\n",option); switch (option) { case 0: printf(" 运行结束。

      \n"); return; case 1: printf(" 对进程按先来先服务调度\n"); fcfs(); poutput(); break; case 2: printf(" 轮转调度 \n"); printf(" 感兴趣自己编!\n"); break; case 3: printf(" 优先级调度\n"); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - ps(); poutput(); break; case 4: printf(" 短作业优先\n"); sjf(); poutput(); break; case 5: printf(" 响应比高优先\n"); hrrn(); poutput(); break; case 6: printf(" 分级轮转调度\n"); printf(" 感兴趣自己编!\n"); break; case 7: printf(" 分级反馈轮转调度\n"); printf(" 感兴趣自己编!\n"); break; default: printf(" 选择错误,请重选。

      \n"); break; } } } int fcfs() /* 先来先服务 */ { float time_temp=0; int i; time_temp=tasks[0].come_time; for(i=0;itasks[i].priority) ) { max_priority=tasks[i].priority; i=j; } j++; } /* 查找第一个被调度的进程*/ /* 对第一个被调度的进程求相应的参数*/ number_schedul=i; tasks[number_schedul].run_begin_time=tasks[number_schedul].come_time; tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time; tasks[number_schedul].flag=1; temp_time=tasks[number_schedul].run_end_time; tasks[number_schedul].order=1; temp_counter=1; while (temp_counter max_priority)) { max_priority=tasks[j].priority; i=j; } j++; } /* 查找下一个被调度的进程*/ /* 对找到的下一个被调度的进程求相应的参数*/ number_schedul=i; tasks[number_schedul].run_begin_time=temp_time; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time; tasks[number_schedul].flag=1; temp_time=tasks[number_schedul].run_end_time; temp_counter++; tasks[number_schedul].order=temp_counter; } return 0; } /* 短作业优先 */ int sjf() { float run_time,temp_time=0; int i=0,j,number_schedul,temp_counter; run_time=tasks[i].run_time; j=1; while (jmax_respond_rate) { max_respond_rate=respond_rate; number_schedul=j; } } } /* 找响应比高的进程*/ tasks[number_schedul].run_begin_time=temp_time; tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time; temp_time=tasks[number_schedul].run_end_time; tasks[number_schedul].flag=1; temp_counter+=1; tasks[number_schedul].order=temp_counter; } return 0; } int pinput() /* 进程参数输入*/ { int i; printf(" 请输入进程个数:"); scanf("%d",&counter); for(i=0;i

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.