当前位置: 首页 > 范文大全 > 自查报告 >

大一c语言实验报告 [c语言读盘程序设计-操作系统实验报告]

时间:2021-10-27 14:33:53 来源:网友投稿

 实验要求:

 C 语言读盘程序设计:块方式或文件方式 (电子版 )

 (1). 写的代码要有注释说明。

 (2). 要有运行结果截图。

 (3). 以实验报告的形式提交。

 输入 :磁头所在的位置以及对块的请求序列

 输出 :对块的调度访问序列

 算法 :你自己用 C 语言模拟一个读盘的调度算法

 实验内容与算法分析:

 NOOP 电梯算法实现了一个简单的 FIFO 队列 ,它像电梯的工作主法一样对 I/O 请求进

 行组织 , 当有一个新的请求到来时 , 它将请求合并到最近的请求之后 , 以此来保证请求同一介

 质 .NOOP 倾向饿死读而利于写 . 因为写请求比读请求更容易 . 写请求通过文件系统 cache,

 不需要等一次写完成 , 就可以开始下一次写操作 , 写请求通过合并 , 堆积到 I/O 队列中 .读请求

 需要等到它前面所有的读操作完成 , 才能进行下一次读操作 . 在读操作之间有几毫秒时间 , 而

 写请求在这之间就到来 , 饿死了后面的读请求 .

 实验运行记录

 第一个参数为当前读取位置,后续参数为请求的数字

 语言源码

 #include <stdio.h>

 #include <stdlib.h>

 intcmp(const void *a, const void *b){

 return *(int *)a > *(int *)b;

 }

 int main(intargc, char *argv[]){ // 第一个参数为当前读取位置,后续参数为请求的数字

 int stack[100];

 intpos = atoi(argv[1]);

 inti;

 intstack_top;

 int requests[100];

 if(argc< 3){

 fprintf(stderr, " 至少 2 参数 \n");

 return 1;

 }

 else if(argc> 102){

 fprintf(stderr, " 数字数量太多 \n");

 return 2;

 }

 for(i = 2; i<argc; i++){

 requests[i - 2] = atoi(argv[i]);

 }

 qsort(requests, argc - 2, sizeof(int), cmp);

 for(i = 0; i<argc - 2; i++){

 if(requests[i] <pos){

 

 //对请求排序

 stack[i] = requests[i];

 stack_top = i;

 }else{

 

 // 存储位置比当前指针小的数据

 printf("%d, ", requests[i]); // 输出位置比当前指针大的数据

 }

 }

 for(; stack_top>= 0; stack_top--){

 printf("%d, ", stack[stack_top]); // 反向输出位置比当前指针大的数据

 }

 printf("\n");

 }

相关热词搜索: 程序设计 操作系统 语言 实验 报告