搜档网
当前位置:搜档网 › 操作系统试验模拟文件管理系统.doc

操作系统试验模拟文件管理系统.doc

操作系统试验模拟文件管理系统.doc
操作系统试验模拟文件管理系统.doc

.

【实验报告正文】

一、实验目的和要求(必填)

实验目的:通过在 VC 平台下编程,设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件系统对文件及目录的管理。

实验要求:两名学生成组结对完成实验,仿真出文件系统中对文件和目录的操作。

二、实验内容(必填)

文件管理:实现一个简单的文件系统

三、实验原理或实验方法(必填)

装原理:通过结构体来描述文件和目录,利用链表知识实现目录树结构,通过对链表的操作实现整个文件系统中目录和文件的相关操作。

方法:学生两人结对进行实验,分别实现对文件和目录的操作。

线

对文件的操作包括:创建文件create、读文件 read、写文件 write 、删除文件 delete。

对目录的操作包括:创建目录mkdir 、切换目录 cd、展示目录内容 dir 、删除目录 rm。

四、主要仪器设备或实验条件

Windows 操作系统, VC 开发环境

五、实验步骤(含实验数据记录处理)或操作设计过程记录

#include "stdio.h"

#include "iostream.h"

#include "string.h"

#define FILENAME_LENGTH 10 //文件名称长度

#define COMMAND_LENGTH 10// 命令行长度

#define PATH_LENGTH 30//参数长度

struct filenode

{

char filename[FILENAME_LENGTH];

int isdir;

char content[255];

filenode *parent;

filenode *child;

filenode *prev;

filenode *next;

};

filenode *initnode(char filename[],int isdir);

void createroot();

int run();

int findpath(char *topath);

void help();

int mkdir();

int create();

int read();

int write();

int del();

int rm();

int cd();

int dir();

filenode *root,*recent,*temp,*ttemp,*temp_child;

char

path[PATH_LENGTH],command[COMMAND_LENGTH],temppath[PATH_LENGTH],rece ntpath[PATH_LENGTH];

//创建文件或目录的存储节点

filenode* initnode(char filename[],int isdir)

{

filenode *node=new filenode;

strcpy(node->filename,filename);

node->isdir=isdir;

node->parent=NULL;

node->child=NULL;

node->prev=NULL;

node->next=NULL;

return node;

}

//初始化文件系统根结点

void createroot ()

{

recent=root=initnode("/",1);

root->parent=NULL;

root->child=NULL;

root->prev=root->next=NULL;

strcpy(path,"/");

}

void help()

{

cout<

cout<<"create:建立文件。"<

cout<<"logout:退出登录。"<

}

int dir()

{

int i=0,j=0;

temp=new filenode;

temp=recent;

if(temp==root)

{cout<<"

"<<"."<

if(temp!=root)

{cout<<"

"<<".."<

if(temp->child==NULL)

{

cout<<"Total: "<<" directors" <

return 1;

}

temp=temp->child;

while(temp)

{

if(temp->isdir)

{cout<<"

"<filename<

{cout<<""<filename<next;

}

cout<<"Total: "<<" directors" <

}

int read()

char filename[FILENAME_LENGTH];

cin>>filename;

if(recent->child==NULL)

{

cout<<"文件不存在 !"<

return 1;

}

if(strcmp(recent->child->filename,filename)==0) {

cout<child->content<

return 0;

}

else

{

temp=recent->child;

while(temp->next)

{

if(strcmp(temp->next->filename,filename)==0) {

cout<next->content<

return 0;

}

}

cout<<"文件不存在 !"<

return 1;

}

}

int write()

char filename[FILENAME_LENGTH];

cin>>filename;

if(recent->child==NULL)

{

cout<<"文件不存在 !"<

return 1;

}

if(strcmp(recent->child->filename,filename)==0) {

cin>>recent->child->content;

cout<<"文件写入成功 !"<

return 0;

}

else

{

temp=recent->child;

while(temp->next)

{

if(strcmp(temp->next->filename,filename)==0) {

cin>>temp->next->content;

cout<<"文件写入成功 !"<

return 0;

}

}

cout<<"文件不存在 !"<

return 1;

}

}

int del()

{

char filename[FILENAME_LENGTH];

cin>>filename;

temp=new filenode;

if(recent->child)

{

temp=recent->child;

while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0)) temp=temp->next;

if(strcmp(temp->filename,filename)!=0 || temp->isdir!=0)

{

cout<<"不存在该文件! "<

return 0;

}

}

else

{

cout<<"不存在该文件! "<

return 0;

}

if(temp->parent==NULL)

{

temp->prev->next=temp->next;

if(temp->next)

temp->next->prev=temp->prev;

temp->prev=temp->next=NULL;

}

else

{

if(temp->next)

temp->next->parent=temp->parent;

temp->parent->child=temp->next;

}

delete temp;

cout<<"文件已删除 !"<

return 0;

}

int rm()

{

char filename[FILENAME_LENGTH];

cin>>filename;

temp=new filenode;

if(recent->child)

{

temp=recent->child;

while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=1)) temp=temp->next;

if(strcmp(temp->filename,filename)!=0 || temp->isdir!=1)

{

cout<<"不存在该目录! "<

return 0;

}

}

else

{

cout<<"不存在该目录! "<

return 0;

}

if(temp->parent==NULL)

{

temp->prev->next=temp->next;

if(temp->next)

temp->next->prev=temp->prev;

temp->prev=temp->next=NULL; }

else

{

if(temp->next)

temp->next->parent=temp->parent;

temp->parent->child=temp->next;

}

delete temp;

cout<<"目录已删除 !"<

return 0;

}

int cd()

{ char topath[PATH_LENGTH];

cin>>topath;

if(strcmp(topath,".")==0)

return 0;

if(strcmp(topath,"..")==0)

{

int i;

while(recent->prev)

recent=recent->prev; //向前回溯,找到第一次创建的目

录 if(recent->parent)

{

recent=recent->parent;

}

i=strlen(path);

// printf("%d %s\n",i,path);

while(path[i]!='/' && i>0)

i--; //找到最右边的 /

if(i!=0)

{path[i]='\0';

//printf("%s",path); //path 中不止有一个 / }

else

path[i+1]='\0';

}

else

{

findpath(topath);

}

return 0;

}

int findpath(char *topath)

{

unsigned int i=0;

int sign=1;

if(strcmp(topath,"/")==0) // 如果命令是 cd /

{

recent=root;

strcpy(path,"/");

return 0;

}

temp=recent;

strcpy(temppath,path);

if(topath[0]=='/') //cd 命令以 cd /开始

{

recent=root->child;

i++;

strcpy(path,"/");

//printf("\n%s",path);

}

else

{

if(recent!=NULL && recent!=root)

{

strcat(path,"/");

//printf("\n%s\n",path);

}

if(recent && recent->child)

{

if(recent->isdir)

recent=recent->child;

else

{

printf(" 路径错误! \n");

return 1;

}

}

}

while(i<=strlen(topath) && recent)

{

int j=0;

if(topath[i]=='/' && recent->child)

{

i++;

if(recent->isdir)

recent=recent->child;

else

{printf(" 路径错误 \n");

return 1;

}

strcat(path,"/");

}

while(topath[i]!='/' && i<=strlen(topath))

{

recentpath[j]=topath[i];

i++;j++;

}

recentpath[j]='\0';

while((strcmp(recent->filename,recentpath)!=0 || (recent->isdir!=1)) && recent->next!=NULL)

{

recent=recent->next;

}

if(strcmp(recent->filename,recentpath)==0)

{

if(recent->isdir==0)

{strcpy(path,temppath);

recent=temp;

printf(" 是文件不是目录。 \n");

return 1;

}

strcat(path,recent->filename);

}

if(strcmp(recent->filename,recentpath)!=0 || recent==NULL) {

strcpy(path,temppath);

recent=temp;

printf(" 输入路径错误 \n");

return 1;

}

}

return 0;

}

int mkdir()

{

temp=initnode(" ",1);

cin>>temp->filename;

if(recent->child==NULL)

{

temp->parent=recent;

temp->child=NULL;

recent->child=temp;

temp->prev=temp->next=NULL;

printf(" 目录建立成功 !\n");

}

else

{

ttemp=recent->child;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1)

{

{

printf(" 目录已存在 !\n");

return 1;

}

}

while(ttemp->next)

{

ttemp=ttemp->next;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1)

{

printf(" 目录已存在 !\n");

return 1;

}

}

ttemp->next=temp;

temp->parent=NULL;

temp->child=NULL;

temp->prev=ttemp;

temp->next=NULL;

printf(" 目录建立成功 !\n");

}

return 0;

}

int create()

{

temp=initnode(" ",0);

cin>>temp->filename;

if(recent->child==NULL)

{

temp->parent=recent;

temp->child=NULL;

recent->child=temp;

temp->prev=temp->next=NULL;

cout<<"文件创建成功 !"<

}

else

{

ttemp=recent->child;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) {

printf(" 文件已存在 !\n");

return 1;

}

while(ttemp->next)

{

ttemp=ttemp->next;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) {

printf(" 文件已存在 !\n");

return 1;

}

}

ttemp->next=temp;

temp->parent=NULL;

temp->child=NULL;

temp->prev=ttemp;

temp->next=NULL;

cout<<"文件建立成功 !"<

}

return 0;

}

int run()

{

cout<<"filesystem:"<";

cin>>command;

if(strcmp(command,"mkdir")==0)

mkdir();

else if(strcmp(command,"dir")==0)

dir();

else if(strcmp(command,"cd")==0)

cd();

else if(strcmp(command,"create")==0) create();

else if(strcmp(command,"read")==0)

read();

else if(strcmp(command,"rm")==0)

rm();

else if(strcmp(command,"write")==0)

write();

else if(strcmp(command,"delete")==0) del();

else if(strcmp(command,"help")==0)

help();

else if(strcmp(command,"logout")==0)

return 0;

else

cout<<"请参考 help 提供的命令列表 !"<

return 1;

}

void main()

{

cout<<"***************************************************************"<

cout<<"********************操作系统课程设计项目 *********************"<

cout<<"*简单文件系统模拟*"<

cout<<"*键入 help 可以获取帮助*"<

cout<<"***************************************************************"<

cout<

createroot();

while(1)

{

if(!run())

break;

}

}

单纯的课本内容,并不能满足学生的需要,通过补充,达到内容的完善

.

法学虚拟仿真实训平台软件

法源法律实务综合模拟软件 一、产品名称及规格型号 法源法律实务综合模拟软件V1.0 二、产品说明 (一)系统介绍 法源法律实务综合模拟软件是完全模拟诉讼实务中的程序和标准的法律案件审理程序的整个过程的一套训练系统。系统覆盖现今所有法律机构办案流程,通过模拟了解法院、检察院、公安机关、仲裁、行政机构如何进行案件审理,以及在整个诉讼、侦查等过程中,如何去实现自己的诉讼权利等等。系统内置的业务涉及法院、检察院、公安侦查、仲裁、行政复议(处罚)、调解的四十余种诉讼与非讼业务流程。 (二)系统价值 1、通过软件的案件和流程设置,学生通过模拟了解法院、检察院、公安机关、仲裁、行政机构如何进行案件审理,以及在整个诉讼、侦查等过程中,如何去实现自己的诉讼权利等等。 2、软件内置的业务涉及法院、检察院、公安侦查、仲裁、行政复议(处罚)、调解等。 3、软件内置的教学案例为真实的案例,并且在教师端可以进行自由添加删除修改。所谓的真实案例是该案件要求附带整套证据扫描件。 4、教师端可以进行实时庭审的监控以及对实验的所有学生进行实验进度的监控和评分。 5、管理员端可以进行班级、账号的添加,可以对软件的数据进行添加修改(如添加视频)。 6、学生端可以完成老师安排的实验也可以自行添加实验进行练习(实验的业务详见参数),可以进行单人多角色模式和多人互动模式进行操作,庭审中即可用语言视频操作也可以用文字录入模式进行操作。 7、业务流程以流程图式和 flash两种方式嵌入,即让学生和教师快速清楚了解诉讼侦查等业务的整个概况,又增加了趣味性。

8、考核功能:具有主观与自动评分相结合来(实验完成的时间、完成程度、教师预先设定的实验要求)考核学生的整个实验。 9、诉讼流程:系统用流程图跟踪颜色变动方式来显示,可以清楚直观的显示学生的实验情况,以及教师对其的监控。 10、实验数据:实验数据可以在教师端口导出所有学生的所有已完成实验的案件文书,可保存WORD打印。 11、软件数据: (1)真实案件 50 例; (2)文书模版:内置 1400 份各类型的法律文书模板; (3)司法案例,内置上千例司法案例、两高公报等; (4)合同模板:内置上千份合同模板库。 (5)法律法规:内置40余万的法律法规、司法解释等 12、软件为B/S架构网络版,客户端没有站点限制。 三、系统优势 A功能: 1、操作模式: 单人模式:单帐号扮演案件中的所有角色,让学生独立完成实验,方便其熟悉诉讼中的每个环节。 多人模式:多帐号互动扮演案件中的角色,让学生之间互动操作来配合完成实验,可根据分析案情、证据、焦点等全面提高法律技能。 2、实验流程: (1)法院: 民事诉讼 A民事一审程序、B民事一审反诉程序、C民事二审程序、D民事非诉特别程序:督促程序、E民事非诉特别程序:公示催告程序F民事非诉特别程序:企业破产程序、G民事特别程序:选民资格案件程序H民事特别程序:宣告公民失踪和宣告公民死亡案件程序、I民事特别程序:认定公民无行为能力或者限制行为能力案件程序、J民事特别程序:认定财产无主案件程序K民事特别程序:宣告婚

操作系统模拟文件管理

操作系统课程设计报告 模拟文件管理 目) 院系:计算机科学技术学院计算机科学与技术系班级:计07--2 班 姓名:刘德庆 学号:12 指导教师:鲁静轩 2009 年6 月15 日

操作系统课程设计任务书 一、设计题目:模拟文件管理 二、设计目的 《操作系统原理》课程设计是软件工程专业实践性环节之一,是学习完《操作系统原理》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。 三、设计要求 (1)选择课程设计题目中的一个课题,合作完成。 (2)良好的沟通和合作能力 (3)充分运用前序课所学的软件工程、程序设计等相关知识 (4)充分运用调试和排错技术 (5)简单测试驱动模块和桩模块的编写 (6)查阅相关资料,自学具体课题中涉及到的新知识。 (7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实 四、设计内容及步骤 1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。 2.根据实现的功能,划分出合理的模块,明确模块间的关系。 3.编程实现所设计的模块。 4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。

6.编写课程设计报告; 设计报告要求:A4纸,详细设计部分主要叙述本人的工作内容 五、课程设计工作计划 设计在学期的第15、16周进行,时间安排如下: 序号内容时间(天) 1 预习、讲课 1 2 设计 3 3 编码、测试 5 4 验收 1 合计10 。 六、成绩评定办法 成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个等级。其中设计表现占30%,验收40%,设计报告占30%。 1.设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。 2.验收:要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。 3.设计报告:学生设计后应按时完成设计报告。要求:内容充实、写作规范、项目填写正确完整、书面整洁等。

管理信息系统实验报告

一、对实习目的认识 ERP模拟实习(实验)是在学生学习《生产运作管理》等相关课程的基础上,为使学生加深对理论教学的理解,配合教学内容所开设的实验教学环节。通过对与企业主要业务有关的各子系统的认知与操作,使学生了解ERP系统的基本构成与操作方法,能够增强学生计算机的应用能力,培养学生分析问题与解决问题的能力,有利于对理论教学内容的消化与吸收,并为今后从事实际工作打下一定的基础。 本实习是以广州五羊-本田公司某个月份的实际主要业务为基础,通过模拟实习,使学生在参与营销、技术、采购、设备、生产、品质、仓库、财务、人事等各个环节的实际操作过程中,熟悉各职能部门是怎样独立运作,部门之间是怎样相互协调关系。把企业作为整体系统适应外部环境变化的条件,应该如何有效地进行现代企业管理的运作。为便于实习,对每一个功能模块操作,提出较为具体的要求: 通过基础数据模块的实习,理解基础数据在企业管理中的作用。 通过营销管理模块的实习,掌握销售合同的签定,按客户订单组织生产的一般流程,掌握客户管理的基本内容与要求,了解售后服务的主要业务,明确营销管理在企业管理中的重要地位。 通过生产管理模块的实习,掌握生产计划的制定方法,以及按生产计划组织生产过程的一般流程,了解物料清单和物料需求计划的基本内容。 通过采购管理模块的实习,掌握物料采购的一般流程;理解物料供应的基本要求。 通过仓库管理模块的实习,掌握库存管理的一般流程,了解库存控制的方法。 通过品质管理模块的实习,理解品质管理的体系包括品质的控制、品质保证、品质工程三个重要组成部分的基本要求;掌握物料、产品质检的一般流程;了解质检技术标准。 通过财务管理模块的实习,掌握应收款和应付款业务处理流程;掌握成本核算的内容及要求;掌握财务成果核算的要点,了解资金筹备和运用的价值分析。 学生通过以上模块的实习,能够了解现代企业管理的一般流程,并能整合所学的管理理论知识,掌握现代企业管理的实用工具与方法,成为企业所需要的实用管理人才。 二、对《企业管理教学模拟实习软件》的整体设计思想的认识 现代企业管理教学模拟实习多媒体教学系统分为“实习目的、企业背景简介、企业流程介绍、模拟实习”四个部分;在模拟实习部分中包括十三个功能模块,每个模块都配有详细的操作说明以及相应的理论知识同时提供了完整的在线帮助、数据导入、数据流程图和教学案例等;完全模拟一个大型企业整体运作过程,学生可自行设计数据进行教学与实习,使教学与实习更贴近于实际。 我们通过对企业管理教学系统的操作学习,学生能够充分体验到企业在以销定产经营模式中,销售定单的变动将引起生产计划、物料分解、采购计划、库存管理、质量管理及相应的财务、设备、人事等各个环节的变化,反映出整个系统

操作系统文件管理实验报告

操作系统实验报告实验名称:文件管理 专业班级:网络工程1301 学号: 姓名: 2015 年6 月16 日

实验一文件管理 一、实验目的 文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 二、预备知识 1.VS2010的使用 2.C#的学习 3.文件主目录与子目录的理解 三、实验容与步骤 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5 个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write 等命令。 所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 程序流程图:

逻辑设计: 使用线性数组表表示MFD,泛型数组表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。 物理设计: //主目录 private FileUser[] mfd; //当前用户 private FileUser currentuser; ///

/// 文件 /// public class FileObject { public string filename; public int size=20; public int read=0; public int write = 0; public string author; } /// /// 文件系统用户 /// public class FileUser { public string username;

管理信息系统实验报告

实验一认识计算机硬件和网络结构 一、实验题目 认识计算机硬件和网络结构。 二、实验课时 2课时。 三、实验目的 认识计算机的主要构成部件、功能、型号、在计算机机箱内的位置、网络结构等。 四、实验内容和要求 1、利用多媒体演示计算机的主要组成部件:机箱、主板、CPU、内存条、硬盘、软驱、光驱、插槽、BUS总线、串行接口、并行接口、USB接口等; 2、打开机箱,实物展示并讲解个部件的功能及其连接; 3、机箱、主板、CPU、CPU风扇、内存条、显卡、网卡等分别如下所示。 机箱主板

内存条显卡网卡无线网卡 CPU CPU风扇硬盘 机箱背面并行接口串行接口USB接口 4、观察每个部件在机箱的位置,并掌握每个部件的功能和基本知识。 5、观察实验室网络结构图。 6、结合某网吧的例子更好地理解网络结构。 Parallel port Serial port USB port Keyboard and mouse ports

7、独立完成上述内容,并提交书面实验报告。 五、实验体会 通过本次实验,我了解了计算机的各种硬件和网络结构。知道了各种硬件的形状、功能、特征等。还知道了网络结构的流程、大体构造。这使我对计算机有了初步的认识,为以后更进一步的学习打下了坚实的基础。也为我以后的学习和生活提供了方便。 1、cpu——中央处理器,是一台计算机的运算核心和控制核心。 2、硬盘——是电脑的主要存储媒介之一。 3、主板——又叫主机板、系统板或母板,安装在机箱内,是微机最基本也是最重要的部件之一。 4、机箱——作为电脑配件的一部分,它起的主要作用是放置和固定各电脑配件,起到一个承托和保护作 用。 5、内存条——是连接CPU和其他设备的通道,起到缓冲和数据交换作用。

2014-2015(1)操作系统实验

实验项目名称:进程的同步(实验一) 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) 进行。

虚拟仿真实验教学中心平台建设方案

湖北警官学院虚拟仿真实验教学建设方案 一、方案背景 虚拟仿真实验教学是高等教育信息化建设和实验教学示范中心建设的重要内容,是学科专业与信息技术深度融合的产物。为贯彻落实《教育部关于全面提高高等教育质量的若干意见》(教高〔2012〕4号)精神,根据《教育信息化十年发展规划(2011-2020年)》,教育部决定于2013年启动开展国家级虚拟仿真实验教学中心建设工作。其中虚拟仿真实验教学的管理和共享平台是中心建设的重要内容之一。 目前,大多数高校都有针对课程使用实验教学软件,但由于每个专业或课程的情况不同,购买的软件所采用的工作环境、体系结构、编程语言、开发方法等也各不相同。由于学校管理工作的复杂性,各校乃至校内各专业的实验教学建设大都自成体系,各自为政,形成了“信息孤岛”。主要面临如下问题:? 管理混乱,各种实验教学软件缺乏统一的集中管理。 ? 使用不规范,缺乏统一的操作模式和管理方式; ? 可扩展性差,无法支持课程和相应实验的扩展; ? 各系统的数据无法共享,容易形成“信息孤岛”; ? 缺乏足够的开放性; ? 软件部署复杂,不同的软件不能运行在同一台服务器上; 二、方案目标 该方案的目标就是高效管理实验教学资源,实现校内外、本地区及更广范围内的实验教学资源共享,满足多地区、多学校和多学科专业的虚拟仿真实验教学的需求。平台要实现学校购置的所有实验软件统一接入和学生在平台下进行统一实验的目的,通过系统间的无缝连接,使之达到一个整体的实验效果,学校通过该平台的部署,不仅可以促进系统的耦合度,解决信息孤岛的问题,还可以使学校能够迅速实施第三方的实验教学软件。 平台提供了全方位的虚拟实验教学辅助功能,包括:门户网站、实验前的理论学习、实验的开课管理、典型实验库的维护、实验教学安排、实验过程的智能指导、实验结果的自动批改、实验成绩统计查询、在线答疑、实验教学效

操作系统课程试验

第3章处理机管理 7.1实验内容 处理机管理是操作系统中非常重要的部分。为深入理解进程管理部分的功能,设计几个调度算法,模拟实现处理机的调度。 7.2实验目的 在多道程序或多任务系统中,系统同时处于就绪状态的进程有若干个。也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊地运行,必须选择某种调度策略,以选择一进程占用处理机。要求学生设计一个模拟单处理机调度的算法,以巩固和加深处理机调度的概念。 7.3实验题目 7.3.1设计一个按先来先服务调度的算法 提示 (1)假设系统中有5个进程,每个进程由一个进程控制块(PCB)来标识。进程控制块内容如图7-1所示。 进程名即进程标识。 链接指针:按照进程到达系统的时间将处于就绪状态的进程连接成一个就绪队列。指针指出下一个到达进程的进程控制块首地址。最后一个进程的链指针为NULL。 估计运行时间:可由设计者指定一个时间值。 达到时间:进程创建时的系统时间或由用户指定。调度时,总是选择到达时间最早的进程。 进程状态:为简单起见,这里假定进程有两种状态:就绪和完成。并假定进程一创建就处于就绪状态,用R表示。当一个进程运行结束时,就将其置成完成状态,用C表示。 (2)设置一个队首指针head,用来指出最先进入系统的进程。各就绪进程通过链接指针连在一起。 (3)处理机调度时总是选择队首指针指向的进程投入运行。由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行: 估计运行时间减1 用这个操作来模拟进程的一次运行,而且省去进程的现场保护和现场恢复工作。 (4)在所设计的程序中应有显示或打印语句,能显示或打印正运行进程的进程名,已运行是、还剩时间,就绪队列中的进程等。所有进程运行完成是,给出各进程的周转时间和平均周转时间。 先来先服务(FCFS)调度算法 /*源程序1.cpp,采用先来先无法法在Visual C++ 6.0下调试运行*/ /*数据结构定义及符号说明*/ #include #include

建筑工程仿真实训平台

建筑工程虚拟仿真实训平台 三好建筑工程仿真实训平台GS2013 一、概述 三好建筑工程仿真实训平台2013,是以Unity3D为平台,结合当前最为流行的三维仿真技术,专门为开设有建筑类专业的中、高等院校而开发,以解决建筑类专业学生的实习实训任务为目标而打造的一款综合性系统软件。整个软件以当前施工现场流行的施工工艺和施工管理为主线,以真实的施工项目为背景而开发,人机交互加三维场景,将整个建筑工程搬进实训室,使学生身临其境,不出校门,即可完成实习、实训任务。从而达到学校育人和企业用人的无缝对接。 现阶段院校建筑类专业课程授课过程中所存在的情景教学资源少、实训操作场地局限、实训操作道具成本较高、重复利用率低等情况,以及学生就业方向对技能的要求,分模块化配套建筑信息化教学课改的专业核心内容,进行虚拟操作体验,从而达到理论结合实践,实践贴近实际的效果。对于提高建筑行业整体水平有较高的指导性和先进性,对提高行业综合实力意义重大。

二、系统介绍 1、功能特点 (1)实现施工管理流程与施工工艺流程同步仿真; (2)场景符合安全文明标化工地要求; (3)菜单形式显示施工任务流程,该任务过程中任意跳转; (4)资料库功能,仿真项目实施过程中所涉及到的图纸、施工方案、各种记录以及其他文件资料。 (5)多视角切换(可根据施工的不同程度,多方位、多视角查看施工情况);

(6)地图热点,实现三维漫游时的不同场景的快速跳转; (7)远近镜头调整; (8)智能语音提示功能,使得整个软件在运行过程中,更加生动形象。 (9)教学模式顺序展示; (10)仿真模式实现交互; (11)考评模式完成考核;理论考试与实务操作相结合,并记录成绩,更科学,更客观的评价学生对实际知识和技能的掌握情况。 (12)丰富的视频; (13)三维漫游功能。 2、专业实现 (1)真实还原施工现场、仿真展示、交互式操作; (2)平台包含典型案例工程、配套实训图纸、《实训任务书》、内业资料、施工管理流程、施工工艺流程; (3)典型工程案例(该工程包含地下室,地上为框支剪力墙、剪力墙结构),囊括现行施工工艺流程;现实生活中的真实项目,项目建筑面积不低于50000平米,楼高不低于50米。 (4)包含各阶段施工图纸、施工方案、技术交底、安全交底,并同步生成工程配套的各种技术资料和施工记录;

操作系统文件管理系统模拟实验

文件管理系统模拟 1.实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现 2.实验内容 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条) login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 3.实验提示 (1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 (2)用户创建的文件,可以编号存储于磁盘上。入file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 4.源代码 #include #include #include #define MEM_D_SIZE 1024*1024 //总磁盘空间为1M #define DISKSIZE 1024 //磁盘块的大小1K #define DISK_NUM 1024 //磁盘块数目1K #define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT 表大小

#define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号 #define ROOT_DISK_SIZE sizeof(struct direct) //根目录大小#define DIR_MAXSIZE 1024 //路径最大长度为1KB #define MSD 5 //最大子目录数5 #define MOFN 5 //最大文件深度为5 #define MAX_WRITE 1024*128 //最大写入文字长度128KB struct fatitem /* size 8*/ { int item; /*存放文件下一个磁盘的指针*/ char em_disk; /*磁盘块是否空闲标志位0 空闲*/ }; struct direct { /*-----文件控制快信息-----*/ struct FCB { char name[9]; /*文件/目录名8位*/ char property; /*属性1位目录0位普通文件*/ int size; /*文件/目录字节数、盘块数)*/ int firstdisk; /*文件/目录起始盘块号*/ int next; /*子目录起始盘块号*/ int sign; /*1是根目录0不是根目录*/ }directitem[MSD+2]; }; struct opentable { struct openttableitem { char name[9]; /*文件名*/ int firstdisk; /*起始盘块号*/ int size; /*文件的大小*/ }openitem[MOFN]; int cur_size; /*当前打文件的数目*/ }; struct fatitem *fat; /*FAT表*/ struct direct *root; /*根目录*/ struct direct *cur_dir; /*当前目录*/ struct opentable u_opentable; /*文件打开表*/ int fd=-1; /*文件打开表的

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

操作系统文件管理_答案

第六部分文件管理 1、文件系统的主要目的就是( )。 A、实现对文件的按名存取 B、实现虚拟存储 C、提供外存的读写速度 D、用于存储系统文件 2、文件系统就是指( )。 A、文件的集合 B、文件的目录集合 C、实现文件管理的一组软件 D、文件、管理文件的软件及数据结构的总体 3、文件管理实际上就是管理( )。 A、主存空间 B、辅助存储空间 C、逻辑地址空间 D、物理地址空间 4、下列文件的物理结构中,不利于文件长度动态增长的文件物理结构就是( )。 A、顺序文件 B、链接文件 C、索引文件 D、系统文件 5、下列描述不就是文件系统功能的就是( )。 A、建立文件目录 B、提供一组文件操作 C、实现对磁盘的驱动调度 D、实现从逻辑文件到物理文件间的转换 6、文件系统在创建一个文件时,为它建立一个( )。 A、文件目录 B、目录文件 C、逻辑结构 D、逻辑空间 7、索引式(随机)文件组织的一个主要优点就是( )。 A、不需要链接指针 B、能实现物理块的动态分配 C、回收实现比较简单 D、用户存取方便 8、面向用户的文件组织机构属于( )。 A、虚拟结构 B、实际结构 C、逻辑结构 D、物理结构 9、按文件用途来分,编译程序就是( )。 A、用户文件 B、档案文件 C、系统文件 D、库文件 10、将信息加工形成具有保留价值的文件就是( )。 A、库文件 B、档案文件 C、系统文件 D、临时文件 11、文件目录的主要作用就是( )。 A、按名存取 B、提高速度 C、节省空间 D、提高外存利用率 12、如果文件系统中有两个文件重名,不应采用( )。 A、一级目录结构 B、树型目录结构 C、二级目录结构 D、A与C 13、文件系统采用树型目录结构后,对于不同用户的文件,其文件名( )。 A、应该相同 B、应该不同 C、可以不同,也可以相同 D、受系统约束 14、文件系统采用二级文件目录可以( )。 A、缩短访问存储器的时间 B、实现文件共享 C、节省内存空间 D、解决不同用户间的文件命名冲突

模拟一个简单二级文件管理系统

模拟一个简单二级文件管理系统 设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 设计内容:模拟一个简单二级文件管理系统 一、实验内容描述 1 实验目标 本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现. 2 实验要求 为DOS系统设计一个简单的二级文件系统.要求做到以下几点: ①可以实现下列命令: login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 ②列目录时要列出文件名、物理地址、保护码和文件长度. ③源文件可以进行读写保护. 二、程序主要内容 1设计思路 程序中要求每个用户在登陆后才可对其拥有的文件进行操作,用户对于其他用户的文件无操作权.文件操作包括浏览、创建、删除、打开、关闭、阅读、写入、修改模式.其他操作包括新建用户、帮助、用户登入、用户登出、退出系统. 在程序文件夹下有个名为“file”的系统根目录,此目录下包括:一个名为“mfd”的文件,记录所有注册过的帐号及密码;用户文件,以用户名作为文件名,内容为其拥有的文件名及属性;一个名为“keiji”的文件夹.“keiji”文件夹中包括:“”指针文件,记录所有已用的物理地址;一些以物理地址为名的文件,内容为文件内容. 2 数据结构 file结构体系统文件数据结构: fpaddrint,文件的物理地址、flengthint,文件长度、fmodeint,文件模式 0.只读;1.可写;2.可读写;3.保护、 fname[]char,文件名; filemode结构体文件状态数据结构: isopenint,文件当前状态,0.关闭;1.打开、modeint,文件模式 0.只读;1.可写;2.可

停车场管理系统实验报告汇总

华北水利水电学院数据结构实验报告 2011~2012学年第二学期2011级计算机专业 班级:**** 学号:***** 姓名:**** - 实验二栈和队列及其应用 一、实验目的: 1.掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。 2.掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。 二、实验内容: 1.链栈的建立、入栈、出栈操作。 2.环形队列的建立、入队、出队操作。 3.停车场管理。设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表(带头结点)实现。 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束。 三、实验要求: 1.C/ C++完成算法设计和程序设计并上机调试通过。 2.撰写实验报告,提供实验结果和数据。 3.写出算法设计小结和心得。 四、程序源代码: 1.#include #include typedef struct stnode { int data; stnode *next;

ERP系统模拟实验报告

一、实验目的 通过本次实验使学生学会理论联系实际,让同学们了解企业的运营流程,了解各个角色在企业中的工作责任,学会根据市场预测去规划企业未来的发展,制定自己的运营策略。 二、实验地点 三、实验时间 2014年6月23日—2014年7月4日 四、实习组成员 CEO及助理 财务总监及助理 营销总监及助理 生产总监及助理 采购总监及助理 间谍 五、我的职责 我在我们企业中担任的是采购总监这个角色,负责根据生产产能和市场需求情况决定什么时候下原材料订单,要下多少订单,保证生产顺利进行的同时也不能积压原材料库存。 六、实验步骤 第一天,老师给我们介绍了一下沙盘模拟的操作规则,企业的初始状况、股东期望以及企业的财务状况,然后给我们进行了分组,每组大概12人,我们是U4组。 我们组的发展一直都采取的是主动进攻的策略,不管是在新产品研发还是市场开拓上,第一年为了成为P1产品的市场老大投放了9个广告,虽然广告费用并不是最多但由于另一个企业决策失误最终成功取得了P1产品的市场老大的地位,同时我们开始开拓区域、国内、亚洲三个市场,考虑到国际市场的产品利润空间并不是很大并且市场需求也不是很多就主动放弃了国际市场的开拓,并开始研发P2产品。为了保证足够的产能,我们在第二个季度开始筹建两条全自动生产线。由于投入较多,资金周转不开,所以我们在这一年贷了一桶短贷,虽然第二年有沉

重的还贷负担,但也正是这一桶短贷使我们在第一第二年的现金流始终没有中断,使企业能够持续经营下去。筹集资金在整个六年运作中至为重要。 第二年,我们P2产品研发成功,区域市场开拓完成,并在投放广告、选取订单时又取得了P2产品的本地市场老大,我们开始考虑要不要再研发P3产品,我们企业首次出现了意见不一的情况,由于近几年P3市场价格并不是很大,需求也不是很大,又需要很大的投资,并且已经有其他的企业开始在研发P3产品了,所以最终由CEO拍板决定只做P2,以产能优势取胜,虽然我们又贷了贷款,但这一年我们已经开始盈利了。 第三年,国内市场开拓完成,两条全自动生产线也开始投入生产,由于我们的主打产品已经转移到了P2,并且国内市场的P2价格与需求都良好,所以我们投入了较多的广告费来取得P2产品的国内市场老大以求获得足够的订单。第二季度,我们开始租赁小厂房,筹建三条全自动生产线,扩大产能。这一年,我们两条手工线和一条半自动线用于生产P1产品,另一条手工线和两条全自动生产线都用于生产我们的主打产品P2,虽然我们一直在贷款还款,但企业的发展态势良好,正一步步走上正轨。 第四年,由于资金问题,小产房的三条全自动生产线在第三年第四个季度暂停了一个季度筹建,所以到第四年的第二季度才可以投入生产,但这并没有影响到我们的生产进度。在这一年,我们又继续投入广告成为了P2产品的亚洲市场的老大,保证了我们企业能够获得足够的订单。 由于另一个企业U6小组的发展迅猛,让我们意识到我们企业之后发展的后劲不足,但要研发P3产品,获得利润的周期又太长,所以我们只能依靠获取更多的订单生产足够的P2产品来维持企业的发展。 第五年,最后一条全自动生产线也开始投入生产,此时生产产量已经达到最大化,但由于市场需求不足,导致最后剩余4个产品,所以在第六年我们企业选择了与其他的企业U3小组进行合作,互相帮助拿到自己所需要的订单,这是一个思维的突破。最终我们企业成功拿到了第一的好成绩。 最后,老师给了我们一个下午的时间进行每个组的总结报告,由每个组的代表依次进行上台发言,总结自己企业的具体操作步骤,以及财务状况。 七、实验感悟 在这为期两个周的ERP沙盘模拟实验里,我在游戏的氛围中学到了很多课本上没有的知识,体验了一个制造型企业管理的完整流程,包括物流、资金流和信

基于云计算的虚拟仿真实验平台设计

龙源期刊网 https://www.sodocs.net/doc/d09591652.html, 基于云计算的虚拟仿真实验平台设计 作者:崔连敏 来源:《软件导刊》2015年第11期 摘要摘要:针对高校虚拟仿真实验平台存在的重复投入、资源无法共享等问题,探讨云计算及其特点,提出基于云计算的虚拟仿真实验平台的架构模型,设计基于云计算的虚拟仿真实验平台,并介绍实验平台的功能和特点。 关键词关键词:云计算;虚拟仿真;实验平台;平台设计 DOIDOI:10.11907/rjdk.151843 中图分类号:TP302 文献标识码:A文章编号文章编号:16727800(2015)011000602 基金项目基金项目:上海市青年教师资助计划(1014204804);上海市教委重点课程项目(2015);2015年度上海理工大学“精品本科”教学改革项目(2015-JPBKZ-017) 作者简介作者简介:崔连敏(1988-),女,河南新乡人,硕士,上海理工大学实验室管理与服务中心助理实验师,研究方向为物理实验、信息技术。 0引言 虚拟仿真实验利用计算机网络技术和多媒体技术,通过计算机模拟实际实验操作,演示实验中的图形、文字、数据等信息。虚拟仿真实验打破了传统实验教学课时有限、场地固定等限制,提升了实验教学效果。随着信息技术和虚拟现实技术的发展,国内很多高校都建设了虚拟仿真实验室。然而许多高校建设虚拟仿真实验室时存在硬件重复投入、服务器闲置率高、建设及维护成本高、数据资源无法共享等问题。云计算技术被认为是一项继个人电脑、互联网技术后的信息技术革命性的新技术,在诸多领域都得到应用。借助云计算技术搭建虚拟仿真实验平台,对校内各实验中心的虚拟仿真实验平台统一部署和维护,能够整合硬件和软件资源,降低平台开发和搭建成本,实现信息资源共享。 1云计算虚拟仿真平台的优势 云计算是分布计算、并行计算、网络存储、虚拟化、负载均衡和热备份冗余等传统计算和网络技术发展融合的产物。云计算致力于解决网络平台的通讯、存储和资源利用等问题。自2006年Google公司首席执行官首次提出云计算的概念以来,云计算技术发展十分迅速。目前Google、IBM、亚马逊、微软、SUN等国际化大公司纷纷推出了自己的云计算平台,国内华为、阿里巴巴、腾讯、百度等也相继启动了云计算项目。典型的云计算架构分为基础设施层、

计算机操作系统实验-文件管理

哈尔滨工业大学计算机科学与技术学院 实验报告 课程名称:操作系统 课程类型:必修 实验项目名称:文件管理 实验题目:设计一个多用户的文件系统 班级:实验学院一班 学号:6040310110 姓名:张元竞 设计成绩报告成绩指导老师

一、实验目的 随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 二、实验要求及实验环境 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write等命令。 所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)

操作系统实验报告 实验一 进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5));