操作系统实验(八):文件管理
【实验目的】
掌握文件的存取方法;掌握文件的逻辑结构和物理结构;掌握存储空间的分配和回收;掌握磁盘管理与调度。
【实验内容】
用程序模拟磁盘的调度过程,并计算各磁盘调度算法包括先来先服务算法、最短寻道时间优先算法、扫描算法和循环扫描算法的平均寻道长度。
本实验是模拟操作系统的磁盘寻道方式,运用磁盘访问顺序的不同来设计磁盘的调度算法。实现的磁盘调度算法有FCFS,SSTF,SCAN,CSCAN和 NStepSCAN算法。设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。按算法的寻道效率进行排序,并对各算法的性能进行分析比较。
【实验步骤】
数据结构
void FCFS(int b[],int n,int init)//先来先服务
void SSTF(int b[],int n,int k)//最短寻道时间优先
void SCAN1(int b[],int n,int k)//扫描算法(SCAN),移动臂由里向外
void SCAN2(int b[],int n,int k)//扫描算法(SCAN),移动臂由外向里
void C_SCAN(int b[],int n,int k)//循环扫描算法(C-SCAN)
实验代码
#include <stdio.h>
#include<math.h>
void FCFS(int b[],int n,int init)
{int i = 0;int s = 0;int sum = 0;int a[20];for(i = 0; i < n; i++)a[i] = b[i];s = init;sum = 0;for(i = 0; i < n; i++){printf("第%d次访问的磁道:%d\n",i+1,a[i]);sum += abs(s - a[i]);s = a[i];}printf("平均寻道长度:%f\n",sum * 1.0 / n);
}
void SSTF(int b[],int n,int k)
{int i = 0;int j = 0;int s = 0;int sum = 0;int p = 0;int a[20];for(i = 0; i < n; i++)a[i] = b[i];for(i = n - 1; i >= 0; i--){s = a[0];p = 0;for(j = 0; j <= i; j++)if(abs(a[j] - k) < abs(s - k)){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += abs(s - k);k=s;}printf("平均寻道长度:%f\n",sum * 1.0 / n);
}void SCAN1(int b[],int n,int k)
{int i,j,s,sum = 0,p,biaoji;int a[20];for(i = 0; i < n; i++)a[i] = b[i];for(i = n - 1; i >= 0; i--){biaoji = 0;for(j = 0; j <= i; j++)if(a[j] - k < 0){biaoji = 1;p = j;break;}if(biaoji == 1){s = a[p];for(j = 0; j <= i; j++)if(a[j] < k && k - a[j] < k - s){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += k - s;k = s;}else{s = a[0];for(j = 0; j <= i; j++)if(a[j] - k <= s - k){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += abs(k - s);k = s;}}printf("平均寻道长度:%f\n",sum * 1.0 / n);
}void SCAN2(int b[],int n,int k)
{int i,j,s,sum = 0,p,biaoji;int a[20];for(i = 0; i < n; i++)a[i] = b[i];for(i = n - 1; i >= 0; i--){biaoji = 0;for(j = 0; j <= i; j++)if(a[j] - k > 0){biaoji = 1;p = j;break;}if(biaoji == 1){s = a[p];for(j = 0; j <= i; j++)if(a[j] > k && a[j] - k < s - k){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += s - k;k = s;}else{s = a[0];for(j = 0; j <= i; j++)if(k - a[j] <= k - s){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);printf("\n"); sum += abs(k - s);k = s;}}printf("平均寻道长度:%f\n",sum * 1.0 / n);
}void C_SCAN(int b[],int n,int k)
{int i,j,s,sum = 0,p,biaoji;int a[20];for(i = 0; i < n; i++)a[i] = b[i];for(i = n - 1; i >= 0; i--){biaoji = 0;for(j = 0; j <= i; j++)if(a[j] - k > 0){biaoji = 1;p = j;break;}if(biaoji == 1){s = a[p];for(j = 0; j <= i; j++)if(a[j] > k && a[j] - k < s - k){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += s - k;k = s;}if(biaoji == 0) break;}s = a[0];for(j = 0; j <= i; j++)if(a[j] <= s){s = a[j];p = j;}a[p] = a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += k - s;k = s;i--;for(; i >= 0; i--){s = a[0];for(j = 0;j <=i ; j++)if(a[j] - k < s - k){s = a[j];p = j;}a[p]=a[i];printf("第%d次访问的磁道:%d\n",n - i,s);sum += s - k;k = s;}printf("平均寻道长度:%f\n",sum * 1.0 / n);
}int main()
{int a[20];int i,n,k,k1,init;printf("请输入需要访问的磁道总数:");scanf("%d",&n);for(i = 0; i < n; i++){printf("需要访问的磁道编号%d:",i + 1);scanf("%d",&a[i]);}printf("请输入指针所在磁道编号:");scanf("%d",&init);k = 1;while(k){printf("** 1.先来先服务(FCFS) **\n");printf("** 2.最短寻道时间优先(SSTF) **\n");printf("** 3.扫描算法(SCAN) **\n");printf("** 4.循环扫描算法(C-SCAN) **\n");printf("** 0.退出 **\n");printf("***************宋潘婷*******************\n\n");printf("请在下面输入您的选择:");scanf("%d",&k);switch(k){case 1:FCFS(a,n,init);break;case 2:SSTF(a,n,init);break;case 3:k1=1;while(k1){printf("************20201219 *************\n");printf("** 1.移动臂由里向外 **\n");printf("** 2.移动臂由外向里 **\n");printf("** 0.返回上一层 **\n");printf("**********************************\n\n");printf("请在下面输入您的选择:");scanf("%d",&k1);switch(k1){case 1:SCAN1(a,n,init);break;case 2:SCAN2(a,n,init);break;}}break;case 4:C_SCAN(a,n,init);break;}}
}
操作系统实验(八):文件管理相关推荐
- 操作系统实验八-文件结构
操作系统第八次实验 个人博客地址 文件结构 一.实验内容 把文件的逻辑结构转换成存储结构 设计便于顺序存取和直接存取的文件存储结构. 二.实验目的 研究用户概念中的信息组织方式 理解文件的逻辑结构.存 ...
- 操作系统实验八:页面置换模拟程序设计
一.实验目的 1.通过软件模拟页面置换过程,加深对请求页式存储管理实现原理的理解 2.理解和掌握OPT.FIFO和LRU三种页面置换算法,深入分析三者之间的优缺点. 二.实验环境 硬件环境:计算机一台 ...
- 操作系统实验:文件管理 C语言
设计实现一个模拟文件系统.包括文件目录管理.存储空间管理.文件创建.删除.读.写等基本操作功能.测试环境 DEVc++ #include<stdio.h> #include<stdl ...
- 操作系统实验五:文件管理
实验五 文件管理 一.实验要求 (1)了解文件权限及作用: (2)掌握文件权限的设置: (3)掌握文件权限的管理与应用: (4)掌握文件基本操作: (5)理解文件系统管理文件的实现机制. 二.实验内容 ...
- 软件工程专业大二操作系统实验报告
目录 实验一 Linux 安装 一.实验目的 二.预习报告 1. Linux背景 1.1 Red Hat 1.2 Fedora Linux 1.3 Ubuntu 2. Linux安装 2.1 安装步骤 ...
- 计算机操作系统32,计算机操作系统实验指导书32138
计算机操作系统实验指导书32138 (22页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 <计算机操作系统>实验指导书程科白素 ...
- 操作系统实验报告9:进程间通信—管道和 socket 通信
操作系统实验报告9 实验内容 实验内容:进程间通信-管道和 socket 通信. 编译运行课件 Lecture11 例程代码: alg.11-3-socket-input-2.c alg.11-4-s ...
- 操作系统实验一到实验九合集(哈工大李治军)
操作系统实验 作者寄语 操作系统实验的学习是一个循序渐进的过程,初次看linux-0.11中的代码,看着满屏的汇编语言,确实头疼.但通过学习赵炯博士的Linux内核0.11完全注释,结合着王爽老师的汇 ...
- 操作系统学习之文件管理:
操作系统学习之文件管理: 一.文件的逻辑结构: 1.无结构文件:文件的内部的数据就是一系列的二进制流或字符流组成,又称为流式文件(Windows操作系统中的.txt文件). 2.有结构文件:由一组相似 ...
- 操作系统实验五:用户进程管理(详细分析)
操作系统实验五:用户进程管理 一. 实验目的 二. 实验任务 三. 实验准备 1.alloc_proc() 函数 2.do_fork() 函数 3.idt_init() 函数 4.trap_dispa ...
最新文章
- python快捷键设置_UltraEdit搭建Python IDE环境+设置快捷键
- 每日两道前端面试题20190221
- windows tomcat 升级openssl_Linunx开发环境配置——Tomcat
- Mac使用Homebrew安装Kafka
- Java Selenium - 处理页面弹出窗
- Linux单用户模式(修改密码、运行级别)方法详解
- pycharm: connot find declaration to go to
- minecraftjava版光追_我的世界:网易版终于更新狐狸生物?Java版光追技术已开始测试?...
- android 多媒体相册,朵朵多媒体相册免费版
- 微信小程序之登录界面示例
- win10 OCX控件的注册
- 天池竞赛赛题-特征工程-天猫用户重复购买预测解析
- 产品经理的分类和职责
- 大学计算机数学基础2,计算机数学基础-中国大学mooc-题库零氪
- Row size too large (> 8126). Changing some columns to TEXT or BLOB… | Mysql / MariaDB
- 简单有效的多标准中文分词详解
- 计算钱币(编写程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。)
- Windows Server 2008 安装SVN
- 维修手记——燃气热水器低水压点火困…
- linux 客户端ftp 登陆成功之后ls 卡死
热门文章
- 通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能
- uniapp 获取页面高度及元素高度
- 高斯径向基函数的理解
- Flink:四大基石[Time,Window,Checkpoint,State]
- iloc和loc区别和应用总结
- java参考中文站 http://www.javaref.cn
- 基于MATLAB对系统的串联滞后校正
- 三毛的诗 I 如果有来生
- mysql 海明距离_mysql根据经纬度求两地距离(示例代码)
- rpm包管理器常见用法