操作系统--实验六-文件系统设计试验
大学计算机基础实验教程
返回
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
实验六消息通信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
实验项目名称:进程的同步(实验一)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)设计一个“地址转换”程序来模拟硬件的地址转换工作。
当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。
当访问的页不在主存时,则输出“* 该页页号”,表示产生了一次缺页中断。
操作系统课程实验报告-实验六文件系统
hierarchy, filesCompareOutput = diffDir(sys.argv[1], sys.argv[2])
print('{0}\n 比较文件结构:\n{0}'.format(' '*10)) PrintHierarchy(hierarchy) print() if len(filesCompareOutput) != 0:
subname[1])
# 合并结果
filesCompareOutput += subCompareOutput
sameFileHierarchy.append(('{0}'.format(name),
subFileHierarchy))
elif ( os.path.isfile(subname[0])
华南理工大学 操作系统课程实验报告
实验概述
【实验目的及要求】
加深对 linux 文件系统的理解。 实现一个“difftree”命令,其功能是比较两个目录下的文件结构和文件信 息。当在命令行方式下执行“difftree <dir1> <dir2>”命令时,能够比较目录 dir1 和 目录 dir2 是否具有相同的结构,对相同的部分,进一步比较相同文件名的 文件内容。列出比较的文件系统结构图。 本实验是对单个文件比较的扩展,设计中需要考虑目录操作。
for item in hierarchy: if isinstance(item, tuple): print(' '*level*3 + ' ' + item[0] + '/') PrintHierarchy(item[1], level+1) else: print(' '*level*3 + ' ' + item)
中山大学《操作系统原理》
中山大学信息科学与技术学院计算机科学系 中山大学信息科学与技术学院计算机科学系课程教学大纲《操作系统原理》课程教学大纲课程名称:操作系统原理类别:专业必修课授课对象:本科生总学时:72学时适用专业:计算机科学与技术/信息安全开课学期:第五学期编写人员:丘静玉审核人员:印鉴编写日期:2006年4月一、教学目的操作系统是配置在计算机硬件上的第一层软件,其他所有的系统软件和应用软件都必须依赖于操作系统的支持。
《操作系统原理》是计算机学科各相关专业的重要的必修课程之一,它在计算机知识结构中有着极其重要的地位和作用,可为学生较全面地建立起关于计算机系统的概念。
学生通过学习本课程应该达到以下目标:1.掌握操作系统的基本概念、原理、技术和方法,深入了解操作系统在计算机系统中的地位及作用,以及它与硬件和其它软件之间的关系,进而了解操作系统控制整个计算机系统执行的全过程,具有操作系统的整体概念。
2.能用程序设计语言编写、调试和运行操作系统的主要算法和功能模块。
3.了解一个以上主流操作系统的实现技术,熟练掌握应用。
4.获取知识的同时,掌握学科的基本规律及研究方法,初步培养自我拓展知识和运用知识的能力。
总之,本课程要求学生全面地了解和掌握操作系统的目标、作用和模型,从资源管理的角度领会操作系统的功能和实现过程,使学生系统科学地受到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力,鼓励并初步培养学生的研究精神和能力。
二、教材选择1. 教学内容概述《操作系统原理》讲述操作系统的基本概念、原理和方法,其课程内容应包含《中国计算机科学与技术学科课程2002》(简称CCC2002)里列举的知识体系:CS-OS1至8。
从资源管理的角度来说,课程内容主要围绕操作系统的几个基本功能展开:(1) 操作系统概述:介绍操作系统的基本概念、目标、功能、发展历史和类型、操作系统的主要成就以及现代操作系统的特点等。
(2) 处理器管理:在进程概念的基础上讨论进程描述、进程控制、进程同步和互斥、死锁、饿死、线程、处理器调度等问题。
所有用户的基本信息都被保存在et...
linux67138目录前言2实验一 Linux 使用基础3实验二 Linux 文件系统及常用命令5实验三 Linux 文件系统管理13实验四系统管理16实验五网络管理20实验六架设WWW服务器23实验七架设FTP服务器24实验八架设Mail Server 26实验九基于Linux的网络服务设计与实现28前言计算机操作系统是装载于计算机裸机上的最基本的软件系统,它管理着计算机的软硬件资源。
无论巨型机、小型机、PC机或是计算机网络都必须有操作系统,任何应用程序都必须运行于一定的操作系统之上。
操作系统是计算机系统最基本和最重要的组成部分。
《计算机操作系统》是高等学校计算机专业本、专科学生的必修课程,是计算机专业核心课程之一。
操作系统的设计和实现是计算机科学与技术专业的学生必须掌握的基本知识。
以前的计算机专业操作系统课只有理论课教学,理论课教学中存在的一个问题是:国内现有的操作系统教材大都以UNIX操作系统为实例介绍操作系统的设计与实现原理,但平常学生接触的操作系统以Windows居多,这样造成对许多概念和理论不能很好的掌握。
另外,随着互连网的飞速发展对网络管理人才的需求剧增,网络管理人才的培养除了需掌握网络知识、路由交换技术外,非常重要的是服务器的配置和管理,现在互连网上服务器,尤其是高端服务器上的主流操作系统是UNIX操作系统,掌握UNIX操作系统的操作与服务器的配置是必要的。
鉴于此,在学院领导的重视下于2001年4月组建了Linux 操作系统实验室,并已为98级开设了UNIX 操作系统实验课。
实验讲义由九个实验组成。
实验一至五为Linux使用基础、文件系统、文件系统管理、系统管理和网络管理的内容;实验六到八为常用服务器(WWW服务器、FTP服务器及E-Mail)的配置;实验九为综合设计实验。
实验室的建设和实验讲义的编写是在我院领导和老师支持的结果,在这里表示深深的感谢。
特别是麻海雷、石瑞峰、杨东东、倪小钢、张凯学、潘新、冯小龙、白戈力老师,在实验室的建设中给予了大力的支持和帮助,感谢你们!实验讲义虽已在98级本科操作系统实验课中试用,但由于时间仓促,错误在所难免,请老师和同学多提宝贵意见,不断改进。
linux操作系统实验报告
LINUX操作系统实验报告姓名班级学号指导教师2011 年05月16 日实验一在LINUX下获取帮助、Shell实用功能实验目的:1、掌握字符界面下关机及重启的命令。
2、掌握LINUX下获取帮助信息的命令:man、help。
3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替换与别名,管道及输入输出重定向.实验内容:1、使用shutdown命令设定在30分钟之后关闭计算机.2、使用命令“cat /etc/cron.daliy"设置为别名named,然后再取消别名。
3、使用echo命令和输出重定向创建文本文件/root/nn,内容是hello,然后再使用追加重定向输入内容为word.4、使用管道方式分页显示/var目录下的内容。
5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件.实验步骤及结果:1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入命令Shutdown -h 302、使用命令alias将/etc/cron.daliy文件设置为别名named,左边是要设置的名称右边是要更改的文件。
查看目录下的内容,只要在终端输入命令即可。
取消更改的名称用命令unalias 命令:在命令后输入要取消的名称,再输入名称。
3.输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。
步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。
4。
使用命令ls /etc显示/etc目录下的内容,命令是分页显示。
“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入.5实验二文件和目录操作命令实验目的:1、掌握LINUX下文件和目录的操作命令,如pwd、cd、ls、touch、mkdir、rmdir、cp、mv、rm等。
操作系统(二)实验报告
Last access:WedOct1915:25:442005
Last modify inode:Wed Oct1915:25:442005
5.再来一个更有趣的实验。修改父进程创建子进程的程序,用显示程序段、数据段地址的方法,说明子进程继承父进程的所有资源。再用父进程创建子进程,子进程调用其它程序的方法进一步证明子进程执行其它程序时,程序段发生的变化。
if(argc-i>1) printf("\n");
}
return ret;
}
运行结果:
[stud028@localhost stud028]$ ./pro41.o pro41.c
File:a.c
On device(major/minor):31,inode number:884266
Size:12 Type: 0100000 Permission:00664
return 1;
}
printf("\nFile Nhomakorabea%s\n",file);
printf("On device(major/minor):%d %d,inode number:%ld\n",
major(buf.st_dev),minor(buf.st_dev),buf.st_ino);
printf("Size:%ld\t Type: %07o\t Permission:%05o\n",buf.st_size,
【提示】这个实验可参考例程3中“父进程创建子进程,子进程调用其他程序的例”以及下面例程10两个程序。设法在子进程运行的程序中显示程序段、数据段地址,以此说明:开始时子进程继承了父进程的资源,一旦子进程运行了其他程序,就用该进程替换从父进程处继承的程序段和数据段。
计算机文化 实验六 文件管理
实验六文件管理【实验目的】1.掌握文件和文件夹的相关操作;2.掌握Windows系统中进行文件管理的方法。
【实验环境】装有Windows XP的计算机。
【实验相关知识】1.如何新建、删除文件和文件夹。
2.如何重命名、复制文件和文件夹。
3.如何进行文件和文件夹的查找。
4.如何使用我的电脑管理文件及文件夹。
5.如何使用资源管理器管理文件及文件夹。
【实验内容与步骤】1.使用“我的电脑”管理文件和文件夹(1)在E盘根目录下创建一个名为“WORK”的文件夹。
(2)练习连续选中(shift),不连续选中(ctrl)和全部选中文件(ctrl+a);(3)将C盘Windows文件夹中的所有以字母B开头的文件及文件夹复制到(1)所建得“WORK”目录中(提示:进行此操作之前要先按“名称”排列图标。
)(4)将1)中创建的“Work”目录改名为“Walk”。
(5)删除“Walk”文件夹,并将回收站中的所有内容删除。
2.使用“资源管理器”管理文件和文件夹(1)从“开始”菜单、右击“开始”按钮、右击“我的电脑”图标、快捷键“win+e”四种方式启动“资源管理器”,比较这四种方式进入“资源管理器”后所在位置有何不同。
(2)查找C盘中所有扩展名为“DOC”的WORD文档。
(3)找出“c:\Windows”文件夹中所有扩展名为“ini”的文件。
(4)在C盘根目录建立一个名为“TEMP”的文件夹,并将“Windows”文件夹中的“temp”文件夹及其中的文件复制到“TEMP”文件夹中,然后删除“TEMP”文件夹。
(5)将回收站在每个硬盘上的空间百分比设为12%。
(6)在c:查找notepad.exe,并在桌面上创建快捷方式,并命名为“记事本”。
(7)在c:查找wordpad.exe,在D盘中创建快捷方式,并命名为“写字板”。
(8)把上面创建的“记事本”快捷方式与“写字板”快捷方式互换位置。
(即移动操作)3.查找文件或文件夹选“开始”-“查找”-“文件或文件夹”,在名称输入abc.bmp,搜索处输入“本地硬盘驱动器”,观察可以查找到的内容,然后将名称改为“abc.*”,观察结果与刚才有何不同,体会他们的区别,然后让学生自己练习一会;4.设置或取消下列文件夹的查看选项,观察其区别:(1)显示所有的文件和文件夹。
《操作系统》实践报告
《操作系统》实践报告准考证号:考生姓名:一.实验目的操作系统是一门实践性很强的计算机专业课程,它要求我们掌握操作系统的工作原理和基本理论知识。
它注重方法、技术的实际应用。
在上机实践考核中,为培养考生良好的学习与工作作风。
要求考生按一定的规范进行上机前的考核准备。
熟悉软硬件环境。
上机调试和正确运行程序,以及提交实践考核报告。
上机实践考核在机器环境上调试、运行程序和产生正确的结果。
但准备阶段和整理实践报告也十分重要,只有做好充分的准备,熟悉机器及环境,尽可能的正确编码,才能高效率地利用机时。
在书写报告时,必须依照规定的格式整理好文档资料,为考生将来从事于软件开发和研制工作,打下一个坚实的基础。
二.实验环境1. 硬件环境:CPU: P4 2.4GHz内存: 256M硬盘: 40G (局域网)2.软件环境:操作系统:Windows XP开发工具:Microsoft Visual C++ 6.0三. 实验内容3.1实验六1. 内容描述在Windows环境下创建子进程,在父子进程之间实验进程通信。
2. 实验过程2.1 实验原理:系统内部进程间通讯和数据交换有多种方式:消息、共享内存、匿名(命名)管道、邮槽、Windows套接字等多种技术。
其中利用消息机制实现IPC虽然同其他方法相比有交换的数据量小、携带的信息少等缺点,但由于其实现方便、应用灵活而广泛应用于无须大量、频繁数据交换的内部进程通讯系统之中。
Windows是一种面向对象的体系结构,Windows环境和应用程序都是通过消息来交互的。
Windows应用程序开始执行后,Windows为该程序创建一个"消息队列(message queue)",用以存放邮寄给该程序可能创建的各种不同窗口的消息。
消息队列中消息的结构(MSG)为typedef struct tagMSG{HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;}MSG;其中第一个成员变量是用以标识接收消息的窗口的窗口句柄;第二个参数便是消息标识号,如WM_PAINT;第三个和第四个参数的具体意义同message值有关,均为消息参数。
《操作系统》实验教学大纲
《操作系统》实验教学大纲实验名称:操作系统实验实验课程:计算机科学与技术、软件工程、电子信息工程实验学时:24学时(12次课程实验)实验目的:1.通过操作系统实验,学生将深入了解操作系统的原理和设计。
2.学生将掌握操作系统的基本概念和常用技术。
3.提高学生的实践能力和创新能力,培养学生的团队合作精神。
实验内容:1.实验一:操作系统基本概念-实验介绍:了解操作系统的基本概念和基本功能。
-实验要求:学生通过阅读文献或参考书籍,掌握操作系统的基本概念。
-实验过程:学生通过讨论或小组讨论的方式,给出操作系统的定义和基本功能列表。
2.实验二:进程管理-实验介绍:通过实验来学习进程管理的基本概念和常用算法。
-实验要求:学生通过自己编写程序,实现进程的创建、销毁和调度。
-实验过程:学生根据给定的问题,设计进程模型并实现相应的程序。
3.实验三:内存管理-实验介绍:了解内存管理的基本概念和常用算法,学习虚拟内存技术的原理。
-实验要求:学生通过编写程序,实现内存分配和回收的算法。
-实验过程:学生通过模拟内存分配和回收的过程,理解内存管理的基本原理。
4.实验四:文件系统-实验介绍:了解文件系统的基本概念和常用算法,学习文件管理的基本原理。
-实验要求:学生通过编写程序,实现文件的创建、删除和查找。
-实验过程:学生通过模拟文件的创建、删除和查找的过程,理解文件管理的基本原理。
5.实验五:设备管理-实验介绍:通过实验学习设备管理的基本概念和常用算法,了解设备驱动程序的实现原理。
-实验要求:学生通过编写程序,模拟设备的控制和管理。
-实验过程:学生通过模拟设备的请求、分配和释放的过程,理解设备管理的基本原理。
6.实验六:作业调度-实验介绍:通过实验学习作业调度的基本概念和常用算法。
-实验要求:学生通过编写程序,实现作业的调度。
-实验过程:学生通过输入作业和作业调度算法,模拟作业调度的过程。
实验评定:-实验报告:60%-实验成果:20%-实验操作:20%实验环境:- 操作系统:Linux、Windows实验要求:-学生需认真完成实验任务,编写实验报告。
操作系统实验(六) 读写磁盘
实验六读/写磁盘指定位置信息实验目的:1)了解磁盘的物理组织。
2)掌握windows系统提供的有关对磁盘操作API。
3)根据输入的扇区号读/写指定扇区。
实验准备知识:1) 设置读写操作的位置:函数SetFilepointer()用于移动一个打开文件中的读/写指针,这里磁盘设备被当作文件处理,因此用于移动文件读/写指针在磁盘上的位置。
2) 读文件:用函数ReadFile()读取磁盘指定区域的内容(从文件指针指示的位置开始读取文件中的数据)。
3)写文件:用函数Write File()将数据写入磁盘指定区域。
函数在文件指针所指的位置完成写操作,写操作完成后,文件指针按实际写入的字节数来调整。
实验内容:在实验五的基础上,继续完成该试验。
编写两个函数,分别完成如下功能。
1)对给定的扇区号读取该扇区的内容。
2)将用户输入的数据写入指定的扇区。
实验要求:深入理解操作系统设备当作文件处理的特性,理解函数SetFilepointer()、ReadFile()及Write File()中每个参数的实际意义并能在本实验中正确应用。
实验指导:在主程序中让用户选择:R、W、Q或,若用户选择R,则调用函数BOOL SectorRead (HANDLEHandle),完成读给指定扇区的功能;若用户选择W,则调用函数BOOL SectorWrite(HANDLEHandle),完成对给定扇区号写入信息的功能,若用户选择Q,则程序退出。
参考源代码:// 操作系统实验六.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "操作系统实验六.h"#include "winioctl.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS__FILE[]=__FILE__;#endifDISK_GEOMETRY disk_info;HANDLE GetDiskInformation(char drivername);BOOL SectorRead(HANDLE Handle);BOOL SectorWrite(HANDLE Handle);///////////////////////////////////////////////////////The one and only application objectCWinApp theApp;using namespace std;int _tmain(int argc,TCHAR* argv[],TCHAR* envp[]){int nRetCode=0;HANDLE Handle;char Choice;Handle=GetDiskInformation('C');while(TRUE){printf("Please Select Read or Write!Input 'R' ro read,'W' to Write,'Q' to quit!\n"); Choice=getchar();printf("\n");switch(Choice){case 'W':{if(!SectorWrite(Handle)) printf("Write Sector Fail!\n");getchar();break;}case 'R':{if(!SectorRead(Handle)) printf("Read Sector Fail!\n");getchar();break;}case 'Q':{exit(0);break;}default:{printf("Input Error!,Try again please!\n");getchar();}}}return nRetCode;}HANDLE GetDiskInformation(char drivername) // GetDiskInformation获取磁盘信息{char device[]="\\\\.\\";device[4]=drivername;HANDLE FloopyDisk;DWORD ReturnSize;// DWORD双字节值DWORD Sector;double DiskSize;FloopyDisk=CreateFile(device,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS|FILE_FLAG_NO_BUFFERING,NULL);if(FloopyDisk==INV ALID_HANDLE_V ALUE)printf("INV ALID_HANDLE_V ALUE!\n");if(GetLastError()==ERROR_ALREADY_EXISTS)printf("Can not Open Disk!%d\n",GetLastError());if(!DeviceIoControl(FloopyDisk,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&disk_info,50,&ReturnSize,(LPOVERLAPPED)NULL))printf("Open Disk Error!%d\n",GetLastError());printf("Disk Information:\n");printf("\t BytePerSector:%d\n",disk_info.BytesPerSector);printf("\t SectorPerTrack:%d\n",disk_info.SectorsPerTrack);printf("\t TracksPerCylider:%d\n",disk_info.TracksPerCylinder);printf("\t Cylider:%d\n",disk_info.Cylinders);Sector=disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;printf("\t There is %d Sectors!\n",Sector);DiskSize=Sector*disk_info.BytesPerSector;printf("\t Size of Disk:%4.2f KB\n",(DiskSize)/(1024*1024));return FloopyDisk;}BOOL SectorRead(HANDLE Handle){char ReadBuffer[1024*16];DWORD SectorNumber;DWORD BytestoRead;DWORD Sector;DWORD rc;int i;if(Handle==NULL){printf("There is No disk!\n");return FALSE;}printf("Please Input the Sector Number to Read Form:\n");scanf("%d",&SectorNumber);printf("\n");Sector=disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;if(SectorNumber>Sector) printf("There is not this Sector!\n");printf("Content:\n");BytestoRead=SectorNumber*(disk_info.BytesPerSector);rc=SetFilePointer(Handle,BytestoRead,NULL,FILE_BEGIN);if(!ReadFile(Handle,ReadBuffer,BytestoRead,&BytestoRead,NULL)) {printf("Read File Error:%d\n",GetLastError());return FALSE;}printf("\t Text Content:\n");for(i=0;i<512;i++){printf("%c",ReadBuffer[i]);}printf("\n");printf("\t Hex Text Content:\n");for(i=0;i<512;i++){printf("%x",ReadBuffer[i]);printf(" ");}printf("\n");return TRUE;}BOOL SectorWrite(HANDLE Handle){char WriteBuffer[1024];DWORD SectorNumber,SectorMove;DWORD BytestoWrite;DWORD Sector;DWORD rc;if(Handle==NULL){printf("There is No disk!\n");return FALSE;}printf("Please Input the Sector Number to Write to:\n");scanf("%d",&SectorNumber);printf("\n");Sector=disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;if(SectorNumber>Sector)printf("There is not this Sector!\n");printf("Please Input the Content to Write to Disk A:\n");scanf("%s",&WriteBuffer);// WriteBuffer指的是写缓冲区SectorMove=SectorNumber*(disk_info.BytesPerSector);rc=SetFilePointer(Handle,SectorMove,NULL,FILE_BEGIN);if(!WriteFile(Handle,WriteBuffer,512,&BytestoWrite,NULL)){printf("Read File Error:%d\n",GetLastError());return FALSE;}printf("Write Complete!\n");return TRUE;}实验步骤:1)根据实验五的实验步骤首先新建一个工程文件以及把参考代码输进去,还要在参考代码中需要手动输入头文件包含命令#include "winioctl.h"。
操作系统实验---配置和编译Linux内核
实验题目
姓名:
学号:
课程名称:
操作系统
所在学院:
信息科学与工程学院
专业班级:
计算机
任课教师:
实验项目名称
在Ubuntu16.04上配置和编译Linux内核
一、实验目的与要求:
1.按照提供的连接认真准备实验。
2.提前了解Linux内核的特点以及编译方法。
3.熟悉相关的指令代码并知道其作用。
4.编译完成可使用的内核,内核以姓名和学号命名,请勿直接拷贝其他同学的内核。
二、实验设备及软件:
计算机一台
Linux操作系统
三、实验方法(原理、流程图)
1、构建内核源码树
1)下载安装包
2)解压到内核源码目录下
2、编译内核
1)安装基本工具软件
2)在终端进入你的解压的内核源码的目录
3)依次执行相对应的命令
七、教师批阅意见:
成绩评定:
教师签字:
年月日
八、备注:
(4)依次执行以下命令
$ cd linux-3.19.0
$ cp /boot/config-$(uname -r) .config
$ make menuconfig
$ kg clean
$ fakeroot make-kpkg--initrd--revision166003566.001--append-to-version--20160906 kernel_image kernel_headers
3.编译完成可使用的内核
得到最终文件
四、实验过程、步骤及内容
五、编译内核
(1)安装基本的工具软件。
(2)我是在这里下载的源码包:https:///pub/linux/kernel/v3.x/,我下载的源码包是linux-3.19.0.tar.xz
操作系统上机实验报告
5.在主菜单里选择系统工具选择系统监视器来监视系统性能。
评语:
日期:年月日
实验五:vi的基本操作
实验目的:
1.熟悉并掌握vi命令模式、文本编辑模式和最后行模式三种工作模式之间的转换方法。
2.掌握利用vi新建和保存文件;熟悉光标的移动,文本的插入与删除等操作。
3.掌握字符串替换;行的复制、移动、撤消和删除等操作。
2.打开f2文件并显示行号。
3.在f2文件的第一行后插入如下一行内容:“With the development of
4.将文本中所有的“eyeballs”用“eye-balls”替换。
5.把第二行移动到文件的最后,删除第一和第二行并恢复删除,并不保存
6.复制第二行,并添加到文件的最后,删除第二行,保存修改后退出vi。
实验内容:
1.利用vi新建文件f2,内容为:
How to Read Faster
When I was a schoolboy I must have read every comic book ever published. But as I got older, my eyeballs must have slowed down or something I mean, comic books started to pile up faster then I could read them!
14.重复上一步操作。
15.查看刚执行过的5个命令。
实验步骤:
1.先安装VMwareWorkstation。安装后,双击图标弹出界面,在界面上单击新建虚拟机,新建一个Linux的虚拟机,按界面提示一步一步完成操作。注意:(安装过程ISO镜像操作的使用)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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日内。