操作系统--实验六-文件系统设计试验

合集下载

大学计算机基础实验教程

大学计算机基础实验教程

返回
11
2021/8/8
第1章 Windows XP 操作系统应用
实验七 控制面板及其操作
实验目的
⒈ 熟悉控制面板的功能和特点 ⒉ 掌握控制面板的常用操作 ⒊ 掌握设置显示器和屏幕保护程序的方法 ⒋ 学会添加和删除程序
返回
12
2021/8/8
第1章 Windows XP 操作系统应用
实验七 控制面板及其操作
实验目的
1. 熟悉鼠标的操作方法 2. 了解键盘的外观及组成 3. 熟练键盘的基本操作
实验内容
1. 鼠标的基本操作 2. 鼠标左键和右键的设置 3. 键盘操作
5
返回
2021/8/8
第1章 Windows XP 操作系统应用
实验三 Windows XP的桌面组成和操作
实验目的
1. 了解桌面的基本组成 2. 掌握图标的操作 3. 熟练任务栏的设置
实验内容
1.Excel的启动与退出 2.Excel的窗口组成 3.Excel的基本操作
⑴ 新建工作簿 ⑵ 插入工作表
4.工作表数据输入 5.编辑单元格
⑴ 插入单元格 ⑵ 删除单元格 6.编制不规则表格
⑶ 移动工作表
⑷ 重命名工作表
⑸ 保存工作表
返回
28
2021/8/8
第3章 Excel 2003
实验四 窗口的操作
实验内容
1. 窗口的基本组成 2. 窗口的主要操作 3. 菜单的基本操作 4. 对菜单的操作 5. 控制菜单 6. 对话框操作
8
返回
2021/8/8
第1章 Windows XP 操作系统应用
实验五 汉字输入法的设置及使用
实验目的
⒈ 掌握汉字输入法的设置及删除方法 ⒉ 掌握汉字输入法的转换方法 ⒊ 掌握一种汉字输入法

操作系统实验系统调用

操作系统实验系统调用

操作系统实验系统调用 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】实验六系统调用学时:2学时1.实验内容:系统调用实验2.实验目的:通过调用PV操作解决生产者、消费者问题,了解系统中并发进程是怎样同步执行的。

3.实验题目:编写一段程序模拟PV操作实现进程同步,且用PV操作解决生产者、消费者问题。

4.实验提示:⑴PV操作由P操作原语和V操作原语组成。

P操作原语P(s)将信号量s减1,若s<0则执行原语的进程被置成等待状态。

V操作原语V(s)将信号量s加1,若s<=0则释放一个等待的进程。

⑵生产者、消费者问题主要解决的是进程并发执行时访问公共变量的问题。

假定有一个生产者和一个消费者。

生产者每次生产一个产品,并把产品存入共享缓冲区供消费者取走。

消费者每次从共享缓冲区取出一个产品去消费。

禁止生产者将产品放入已满的缓冲区,禁止消费者从空缓冲区内取产品。

⑶模拟程序中对应关系如下:实例代码:开始!当前的产品数[ 0] 加快生产速度呀,没有产品了。

当前的产品数[ 1] 生产了一个产品。

当前的产品数[ 2] 生产了一个产品。

当前的产品数[ 1] 消费了一个产品。

当前的产品数[ 2] 生产了一个产品。

当前的产品数[ 1] 消费了一个产品。

当前的产品数[ 2] 生产了一个产品。

当前的产品数[ 3] 生产了一个产品。

当前的产品数[ 2] 消费了一个产品。

当前的产品数[ 3] 生产了一个产品。

当前的产品数[ 2] 消费了一个产品。

当前的产品数[ 3] 生产了一个产品。

当前的产品数[ 4] 生产了一个产品。

当前的产品数[ 3] 消费了一个产品。

当前的产品数[ 4] 生产了一个产品。

计算机操作系统试验lab6

计算机操作系统试验lab6

实验六消息通信1.目的要求更进一步领会消息通信的进行过程,基本掌握消息通信函数的使用2、实验内容1)查询Linux帮助文档,解释下述各个函数的作用①msgget( )②msgsnd( )③msgrcv( );④msgctl( );2)用vi编辑器编辑下面C程序,并在Linux平台下编译运行,记录下程序的运行结果,并对程序的功能作一个简要说明# include <stdio.h># include <sys/types.h># include <sys/msg.h># include <sys/ipc.h># define MSGKEY 75struct msgform{long mtype;char mtrex[1030];}msg;int msgqid, i;void CLIENT()int i;msgqid=msgget(MSGKEY,0777);printf("%d",msgqid);for(i=3;i>=1;i--){ msg.mtype=i;printf("clien)sent\n");scanf("%s",msg.mtrex);msgsnd(msgqid, &msg,1024,0);}exit(0);}void SERVER(){msgqid=msgget(MSGKEY,077|IPC_CREAT);do{msgrcv(msgqid,&msg,1030,0,0);printf("(server)received\n %s\n",msg.mtrex); } while(msg.mtype!=1);msgctl(msgqid,IPC_RMID,0);exit(0);}void main(){while((i=fork())==-1);if(!i) SERVER();while((i=fork())==-1);if(!i) CLIENT();wait(0);wait(0);运行结果程序功能3、准备工作1)Linux平台的计算机,能够熟练使用vi编辑器和cc或者gcc编译器。

五邑大学计算机学院20142015操作系统试验使用班级120801

五邑大学计算机学院20142015操作系统试验使用班级120801

实验项目名称:进程的同步(实验一)1、实验目的(1) 掌握进程和线程基本概念和属性;(2) 掌握用PV操作解决并发进程的同步问题;(3) 掌握用于同步的信号量初值的设置;(4) 掌握如何处理共享资源的直接制约关系。

2、实验内容(1) 设计一个模拟若干售票网点的售票程序。

界面可以参考图1。

还应设计多个后台售票线程并发运行。

图1售票(2) 模拟:桌上有一只盘子,每次只能放入一个水果。

爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,一个女儿专等吃盘子里的苹果,一个儿子专等吃盘子里的桔子。

只要盘子空则爸爸或妈妈都可以向盘子放一个水果,仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。

放-取水果的几种情况如图2(a)~(f)所示,可以参照进行设计。

(a)盘子空时取水果 (b)父亲放入苹果(c) 儿子取水果 (d) 女儿取水果(e)儿子取走桔子 (f)盘子满时放水果图2 放-取水果(3) 自选其它能反映进程互斥问题的应用。

实验项目名称:处理机调度(实验二)1、实验目的(1) 掌握几种处理机调度算法的基本思想和特点;(2) 理解并发与并行的区别;(3) 比较几种算法的特点。

2、实验内容编写程序模拟处理机调度,参照图3。

(1) 时间片轮转(2) 动态优先权调度(3) 高响应比优先调度图3 模拟处理机调度实验项目名称:银行家算法(实验三)1、实验目的银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。

加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。

2、实验内容(1) 设计进程对各类资源最大申请表示及初值确定。

(2) 设定系统提供资源初始状况。

(3) 设定每次某个进程对各类资源的申请表示。

(4) 编制程序,依据银行家算法,决定其申请是否得到满足。

具体设计可参照图4(a)~(c) 进行。

(a) 某时刻系统资源情况(b)测试安全性(c)安全序列图4银行家算法实验项目名称:存储器管理(实验四)1、实验目的存储器是计算机系统的重要组成部分。

普通高校操作系统课程实践环节的研究与设计

普通高校操作系统课程实践环节的研究与设计

Vol.28No.9Sep.2012赤峰学院学报(自然科学版)JournalofChifengUniversity(NaturalScienceEdition)第28卷第9期(上)2012年9月《操作系统》是计算机各专业的核心基础课程.该课程原理性很,知识体系繁杂,内容涉及到了理论、算法、技术实现等,因此学生在学习的过程中往往难于掌握其整体设计思想和实现技术.这就要求授课教师在精心设置理论教学内容的同时,必须充分重视该课程的实践教学环节,只有这样学生才能对“操作系统”这一计算机最重要的系统软件的工作原理有真正的认识、理解,才可以进一步培养学生的规范的系统程序设计能力、提高学生的实际动手能力和创新能力.1国内操作系统课程实践环节的现状因为操作系统涉及的内容广,所以实践环节也有深有浅,采用的模式不一.在我国的本科高校中,依据高校的层次、师资力量、硬件环境和学生素质的差异,目前操作系统课程的实践主要有以下几种模式:1.1实现与设计模式该模式是指通过编程来扩充或替换操作系统的某些功能模块以及设计一个小型的操作系统内核.例如北京大学根据MIT课程,通过五届学生的实习工作,“增量式”地对LittleOS基础系统进行功能扩充,最终形成一个具备基本功能模块的教学用操作系统[1].1.2阅读、分析具体操作系统的源代码模式由于Linux系统具有开放性,特别是其早期版本,由于源代码量少,可读性好,适合学生在较短学时内阅读理解;结构清晰,包含了操作系统的基本功能,没有过多的选项或硬件驱动,便于掌握操作系统的总体结构和设计思想.因此目前主要阅读、分析的是linux源代码.1.3模拟实现操作系统内核中相关算法的模式针对操作系统中一些典型功能或算法,如进程调度、内存分配、页面置换、文件系统、死锁检测、磁盘调度等进行编程实现,可通过操作界面运行程序对这些功能加以验证.这种模式所涉及的软硬件资源和数据结构都是自建的,并不对真实的系统资源进行访问和修改,因此可以摆脱具体操作系统的限制和软硬件细节[2].该模式是一般院校最常见的实践方式.2操作系统模拟实验的设计为了实现操作系统教学目标,结合我校实际情况,我们采用了第三种模式.良好的实践环境是实践教学活动得以顺利开展的前提,经过优化和系统对比,我们采用学生最为熟悉的windowsXP+VC6.0作为实验环境,利用WindowsSDK提供的系统接口(API)完成程序功能.2.1设计实践教学的目标和原则安排教学实践环节要考虑到学校培养目标人才的定位,在实践中才能有意识的培养学生的不同能力.由于我们是一所培养应用型人才的高校,所以我们实验教学的目的是让学生理解、掌握操作系统的基本原理和基本功能,激发学生的学习兴趣和创新意识,进一步锻炼学生设计、编写大型软件的动手能力.根据这一目标笔者认为操作系统模拟实验的设计应该遵循以下基本原则:2.1.1与理论教学相融合的原则普通高校操作系统课程实践环节的研究与设计李振美(济宁学院计算机科学系,山东曲阜273155)摘要:在探索操作系统课程实践教学环节发展现状的基础上,结合理论教学内容构建了适合本校的实践教学体系,设计了合理的实验项目,为普通高校从根本上解决操作系统理论教学和实践教学脱离的现状提供了一个切实可行的参考方案.关键词:操作系统;实践环节;实验设计中图分类号:G642文献标识码:A文章编号:1673-260X(2012)09-0207-02基金项目:济宁学院2011年教改研究项目(2011JX04)207--我们设计的是模拟实验,所以就要注意仿真性,即所设计的实验内容要符合实际操作系统内的功能,与理论教学相结合,同时注意重点难点的兼顾.2.1.2可操作性原则在设计实验时,应该综合考虑学校的软硬件实验环境、学生能力素质等因素.所设计的实验应该是在现有教学条件下能够实施的,在难易程度上应该因材施教,即对于基本型的实验,要求所有的学生必须完成,而对于成绩好、能力强的同学,再增加选做实验.2.2实践教学内容的设计依据操作系统的五大功能,选择操作系统理论教学中一些重要和关键的算法,设计相应的实验,要求学生使用程序模拟的方式将这些算法实现[4].据此我们设计了如下几个基本实验:实验一:单处理机系统中的进程调动模拟实验目的:让学生进一步区别进程和程序的不同、理解进程控制块(即PCB)的作用及进程的并发执行[3].具体要求:设计进程PCB;完成进程队列的创建;模拟进程调度算法,包括先来先服务算法、优先级算法和轮转算法.实验二:进程死锁的模拟实验目的:让学生能够进一步理解进程同步和死锁的概念,理解为什么要对系统中多个相关的并发进程进行同步和互斥管理.具体要求:设计了两个进程用于模拟完成销售车票的过程.一方面,利用关键代码段(临界区)实现进程同步;另一方面,模拟实现进程死锁.实验三:页式虚拟存储管理的模拟实验目的:了解存储器管理任务和功能,深入了解页式虚拟存储管理中的地址转换过程和缺页中断处理过程,并掌握多种页面置换算法.具体要求:设计用于描述内存、内存块及页面的数据结构和管理内存中页面的链表;用软件实现地址转换过程;用常用的几种页面置换算法中的一种来处理缺页中断并研究其命中率.实验四:批处理系统中作业调度的模拟实验目的:让学生进一步理解在批处理系统中,由于主存容量及其它一些资源的限制,在外存后备队列中的作业不能同时被装入主存中.具体要求:设计作业控制结构;完成作业队列的创建;模拟作业调度算法,包括先来先服务算法、最短作业优先算法和最高响应比优先算法等.实验五:文件管理功能的模拟实验目的:让学生了解文件系统是如何实现“按名存取”及如何实现各种操作命令的.具体要求:设计两级目录结构;设计文件的保护措施;实现如下文件操作命令:建立文件、打开文件、读文件、写文件、关闭文件和删除文件.实验六:SPOOLING技术的模拟实验目的:通过设计一个SPOOLING假脱机输出的模拟程序,让学生更好的理解和掌握SPOOL-ING技术的实现原理.具体要求:设计一个输出服务进程,一个输出进程,两个用户请求进程.当用户进程请求输出信息时,调用输出服务进程,该输出服务进程将信息送进输出井中,等待输出进程进行输出.2.3实践教学的组织管理与考核在实践教学中,学生是主体,教师是主导.教师简明扼要地讲授实验理论知识、实验目的、实验内容、重点和难点、注意事项,然后让学生进行实验.实验过程中,出现问题一般由学生自主研究解决,教师仅作启发性提示和引导.教学为灵活开放式教学,可建立BSS互动教学平台或提供优秀论坛网址,增强与学生的交流;鼓励、帮助学生完成实验.实践作为实现教学目标的一个不可或缺的组成部分,还应建立严格的成绩考核制度.对每一个实验题目都进行相应的记录考核,检查其实验效果,成绩计入期末考试成绩,督促学生提高对实验的重视程度.3结束语在自己动手模拟实现操作系统某一功能的过程中,不仅可以加深学生对操作系统原理、功能、概念、算法、数据结构的理解,而且可以培养学生的创新意识,培养学生开发大型软件时应有的系统结构设计和软件工程思维能力.因此操作系统实践教学在深化教学改革,培养社会需求的应用型人才方面发挥了其应有的作用.———————————————————参考文献:〔1〕孙微微,等.研究型大学操作系统课程实习项目的设计[J].农业网络信息,2006(5):105-107.〔2〕孙自广,等.操作系统课程的实践教学模式探讨[J].计算机教育,2010(8):146-148.〔3〕杨成.计算机信息管理专业实践环节指导[M].北京:清华大学出版社,2001.〔4〕颜彬,等.计算机操作系统实验教程[M].北京:清华大学出版社,2008.208--。

操作系统实验六

操作系统实验六

实验六时间片轮转调度一、实验目的·调试EOS 的线程调度程序,熟悉基于优先级的抢先式调度。

·为EOS 添加时间片轮转调度,了解其它常用的调度算法。

二、实验内容1、执行了实验指导书3.2的步骤,学习了“rr”命令是如何测试时间片轮转调度的。

算法实现原理是,按进程到达顺序(FCFS 原则)将进程依次加入就绪队列当中,然后将CPU 分配给位于队首的进程,确定一个时间片,让该进程执行一个时间片。

当该进程执行时间到时,该进程可能已经执行完毕(可能在时间片未到时就以及执行完毕),或者未执行完毕,如果是前者只需将进程弹出队列即可,如果是后者则将该进程加入队尾,并将CPU 分配给新的队首进程,如此循环。

在没有时间片轮转调度时的执行结果如下图所示。

2、执行了实验指导书3.3的步骤,对EOS 的线程调度程序PspSelectNextThread 函数进行调试,学习了就绪队列、就绪位图以及线程的优先级是如何在线程调度程序中协同工作的。

调试当前线程不被抢先的情况:基于优先级的抢先式调度算法,新建的第0 个线程会一直运行,而不会被其它同优先级的新建线程或者低优先级的线程抢先。

通过调试可以观察到“rr”命令新建的第0 个线程始终处于运行状态,而不会被其它具有相同优先级的线程抢先。

对在EOS 内核中实现这种调度算法进行调试,刷新“就绪线程队列”窗口,观察到如下图结果。

在“监视”窗口中添加表达式“/t PspReadyBitmap”,以二进制格式查看就绪位图变量的值,此时就绪位图的值为100000001,表示优先级为8 和0 的两个就绪队列中存在就绪线程。

在“快速监视”对话框的“表达式”中输入表达式“*PspCurrentThread”,查看当前正在运行的线程(即被中断的线程)的线程控制块中各个域的值。

通过以上调试线程调度函数PspSelectNextThread 的执行过程,“rr”命令新建的第0个线程在执行线程调度时没有被抢先的原因可以归纳为两点:(1) 第0个线程仍然处于“运行”状态;(2) 没有比其优先级更高的处于就绪状态的线程。

操作系统试验大纲

操作系统试验大纲

《操作系统》实验教学大纲一、实验目的及要求(一)实验目的操作系统实验(上机练习)是必不可少的学习环节之一,也是检验掌握操作系统知识的手段之一。

一方面通过上机练习,可加深对课程内容的理解和掌握。

另一方面,使用VC来编写操作系统程序程序上机调试、运行可以实现操作系统理论和实践相结合。

操作系统实验是培养学生熟练运用C语言,掌握操作系统的核心内容,理解计算机系统整体结构及工作原理,提高系统软硬件开发能力。

(二)具体要求通过本课程的上机实验,学生应达到下列要求:1.理解和掌握操作系统的基本概念、基本组成与工作原理;2.理解和掌握操作系统中进程调度的工作原理及其实现算法;3.掌握软件模块设计技能;熟悉并能较好地利用VC++软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。

二、实验项目安排整个课程的实验按照其难易程度分为验证型实验、设计型实验,共6个实验项目。

其中验证型实验3个、设计型实验3个。

验证型实验是验证所学部分程序的正确性,加深对理论的理解;设计型实验是用于培养学生的设计能力,将所学的知识运用于解决实际问题。

三、实验项目说明实验一 WINDOWS进程初识【实验目的与要求】(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。

(2)掌握WINDOWS API的使用方法。

(3)编写测试程序,理解用户态运行和核心态运行。

【实验内容】(1)编写基本的Win32 Consol Application步骤1:登录进入Windows,启动VC++ 6.0。

步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。

创建一个新的控制台应用程序工程。

步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。

操作系统实验六-虚拟存储器实验报告

操作系统实验六-虚拟存储器实验报告

实验六虚拟存储器一、实验内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。

二、实验目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。

用这种办法扩充的主存储器称为虚拟存储器。

通过本实验帮助同学理解在分页式存储管理中怎样实现虚拟存储器。

三、实验题目本实验有三道题目,其中第一题必做,第二,三题中可任选一个。

第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。

[提示](1)分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。

为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式为:其中,标志----用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。

主存块号----用来表示已经装入主存的页所占的块号。

在磁盘上的位置----用来指出作业副本的每一页被存放在磁盘上的位置。

(2)作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式:绝对地址=块号×块长+单元号计算出欲访问的主存单元地址。

如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。

若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,有操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。

(3)设计一个“地址转换”程序来模拟硬件的地址转换工作。

当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。

当访问的页不在主存时,则输出“* 该页页号”,表示产生了一次缺页中断。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统--实验六-文件系统设计试验实验目的与要求:通过设计一个基于索引结构的文件系统,加深对文件系统的基本知识理解。

了解文件系统设计的基本概念。

(1)熟悉文件系统的物理结构;(2)熟悉文件系统的目录管理;(3)掌握文件系统空闲空间管理的基本方法;(4)进一步理解现代操作系统文件管理知识。

实验设备(环境):(1)一台安装有Cygwin Terminal的计算机(2) Windows XP操作系统(3)VC++6.0实验内容:(1)熟悉文件系统的物理结构;(2)熟悉文件系统的目录管理;(3)掌握文件系统空闲空间管理的基本方法;(4)进一步理解现代操作系统文件管理知识。

实验步骤、实验结果及分析:(1) 设计一个文件系统的索引结构,描述逻辑结构与物理索引结构之间的关系;(2) 设计文件目录,描述文件名与文件物理结构之中的映射关系;(3) 定义作业;(4) 设计文件建立;(5)设计文件系统的其它功能;实验结论:试验运行结果:图1程序运行结果4、思考该试验中,从功能能上讲,根据所学的文件系统管理方面知识,你所设计的(模拟)文件还有那些没有实现:对以后设计的修改建议:目前所做的修改及实际结果如下:程序清单:#include "stdio.h"#include "stdlib.h"//文件索引表的定义struct index{int lr[32];int pr[32];char st[32];}*wq;#define JOBN 20//文件目录的定义struct list{char names[32];int size[32];struct index*p[32];//文件的索引表地址}*HEAD;//作业序列struct que{char name;int size;}job[JOBN];int i,j,ly,li;char bb;int NFile=0;//系统的总文件数,模拟开始时为0;int N=0;//工作变量,标记当前分配文件int M=32;//系统中空闲磁盘物理块数,开始为32块int J[4][8];//用位图表示这些磁盘物理块,J[j][i]为0时标记第j*8+i块空闲,为1标记该块已分配出去FILE *e;//记录模拟中的相关数据int jobs=0;//作业数void run(){int x1,y,z;//如果当前空闲磁盘物理块数能够满足需要,则进行分配if(job[N].size<=M){ly=0;N=NFile;//标记当前分配文件NFile++;//标记下次分配处理文件M-=job[N].size;HEAD->names[N]=job[N].name;//将文件名以及大小,索引地址填写到文件目录HEAD->size[N]=job[N].size;wq=(struct index *)malloc(sizeof(struct index));HEAD->p[N]=wq;//对分配文件的索引表初始化for(z=0;z<32;z++){wq->lr[z]=z;//逻辑块号wq->pr[z]=0;////物理块地址wq->st[z]='N';}//从位图中分配,分配出去的块其状态为1。

一直到分配完成for(j=0;j<4&&(ly<job[N].size);j++)for(i=0;i<8&&(ly<job[N].size);i++){if(J[j][i]==0){li=j*8+i;wq->pr[ly]=li;wq-> st[ly]='Y';ly++;J[j][i]=1;}//找到一个空闲块,就分配出去}}//如果当前空闲磁盘物理块数不能够满足需要,则出错处理else{ fprintf(e,"\n There are no free blocks in the memory now! \n");fprintf(e,"File %c must wait!\n",job[N].name);}//报告目前为止的分配情况,首先报告文件目录的部分信息fprintf(e,"...This time ,the file directory: ----\n");fprintf(e,"NAME INDEX_ADDRESS\n");for(x1=0;x1<N+1;x1++)fprintf(e," %c %x\n",HEAD->names[x1],HEAD->p[x1]) ;//其次报告文件索引表的部分信息for(x1=0;x1<N+1;x1++){fprintf(e," //////////The index ofFILE%c://///////\n",HEAD->names[x1]);fprintf(e," LOGIC_NUMBERPHYSICAL_NUMBER FLAG\n");for(y=0;y<HEAD->size[x1];y++)fprintf(e," %d %d %c\n",HEAD->p[x1]->lr[y],HEAD->p[x1]->pr[y],HEAD->p[x1] ->st[y]);}//第三,报告位图信息fprintf(e," This time the bit mapping graph: \n");for(j=0;j<4;j++){fprintf(e, " ");for(i=0;i<8;i++)fprintf(e,"%d",J[j][i]);fprintf(e,"\n");}}void main(){int k;e=fopen("results.txt","w");//打开保存结果的文件for(j=0;j<4;j++)for(i=0;i<8;i++)J[j][i]=0;//初始化位图HEAD=(struct list*)malloc(sizeof(struct list));for(i=0;i<32;i++){HEAD->names[i]=' '; HEAD->size[i]=0;HEAD->p[i]=NULL;}//初始化文件目录printf("Please input number of jobs:"); scanf("%d",&jobs);scanf("%c",&bb);int kk=0;//以下输入建立的文件数以及文件名字,并将这些信息保存在job数组之中while(kk<jobs){fprintf(e,"FILE %d: \n",kk);printf("FILE %d: \n",kk);printf("Name and Size");scanf("%c,%d",&(job[kk].name),&(job[kk].size ));scanf("%c",&bb);fprintf(e,"%c,%d",job[kk].name,job[kk].size) ;kk++;}for(k=1;k<=jobs;k++)run();//每个文件进行一次分配//回收资源fclose(e);for(i=0;i<32;i++){free(HEAD->p[i]);HEAD->p[i ]=NULL;}free(HEAD);HEAD=NULL;}文件系统模拟程序1.索引结构和文件目录2.文件目录模拟struct list{char names[32];int size[32];struct index*p[32];//文件的索引表地址 }*HEAD;该模拟文件最多只能模拟32个文件,HEAD 指针指向了该模拟目录。

3.文件索引表模拟文件索引表的定义struct index{ 12… …N文等 块 块 块int lr[32];int pr[32];char st[32];}*wq;4.位图int J[4][8]。

位图J表示这些磁盘物理块的情况。

J[j][i]为0时标记块空闲,为1标记该块已分配出去。

各块号按行存储。

因此,J[j][i] 表示j*8+i(块号)块的分配情况5.run函数6.Main函数实验分析:程序要为每个文件建立一张索引表,索引表中用数组指出文件信息所在的逻辑块号和与之对应的物理块号。

程序中int J[j][i]表示这些磁盘物理块的情况。

J[j][i]为0时标记块空闲,为1标记该块已分配出去。

各块号按行存储。

实验总结(包括过程总结、心得体会及实验改进意见等):1. 在命令提示符中运行应用程序时要先转到应用程序所在的盘符下,要把应用程序所在目录位置输入正确,才能找到相应的程序运行。

2. 文件的物理结构和组织是指逻辑文件在物理存储空间中存放方法和组织关系;使用多级目录可以解决文件重名问题与缩短搜索时间;现代操作系统文件管理就是对块空间的管理,包括空闲块的分配、回收和组织;索引文件结构中的索引表是用来指示逻辑记录和物理块之间对应关系的。

3. 通过本次实验我了解了文件系统的基本概念,物理文件结构有三种结构,连续文件、链接文件、索引文件。

用户能直接处理其中的结构与数据的是逻辑结构,文件在外存上的存储组织形式是物理结构。

只有合理的进行存储空间的管理,才能保证多用户共享外存和快速的实现文件的按名存取。

指导教师评语:完成所有规定的实验内容,实验步骤正确,结果正确;以后需要进一步改进或注意的是:(1)实验目的与要求、实验设备、实验内容格式要对齐。

(2)源代码要进行命名以便区分。

(3)标题文字首行缩进。

(4)实验总结要分点讲述,并与分析、心得体会分开。

成绩评定 A(优秀)教师签字王远帆2015 年 6 月 22 日备注:注:1、报告内的项目或设置,可根据实际情况加以补充和调整2、教师批改学生实验报告应在学生提交实验报告10日内。

相关文档
最新文档