操作系统实践教学大纲.docx
- 文档编号:26494377
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:36
- 大小:23.73KB
操作系统实践教学大纲.docx
《操作系统实践教学大纲.docx》由会员分享,可在线阅读,更多相关《操作系统实践教学大纲.docx(36页珍藏版)》请在冰豆网上搜索。
操作系统实践教学大纲
自考《操作系统》实验环节实施方案
根据《操作系统》课程教学要求,实验环节应要求完成五个实验项目。
考虑到自考课程教学实际情况,结合我院实验室的条件,经任课教师、实验指导教师、教研室主任和我院学术委员会认真讨论,确定开设三个实验项目。
实验项目、内容及要求详见我院编制的《操作系统》课程实验大纲。
一、实验环境
目前,我院根据编制的《操作系统》课程实验大纲,实验环境基本能满足开设的实验项目。
实验环境主要设备为:
硬件:
一台能正常启动的计算机
软件:
VisualC++6.0,Windows2003等
二、实验报告要求与成绩评定
学生每完成一个实验项目,要求独立认真的填写实验报告。
实验指导教师将根据学生完成实验的态度和表现,结合填写的实验报告评定实验成绩。
成绩的评定按百分制评分。
三、实验考试
学生在完成所有实验项目后,再进行一次综合性考试。
教师可以根据学生完成的实验项目,综合出3套与实验相似的考试题,由学生任选一套独立完成。
教师给出学生实验考试成绩作为最终实验成绩上报。
四、附件
附件1《操作系统》课程实验大纲
附件2实验报告册样式
以上对《计操作系统》课程实验的实施方案,妥否,请贵校批示。
重庆科创职业学院
2009年3月20日
附件1《操作系统》课程实验教学大纲
实验课程负责人:
赵志斌开课学期:
第四学期
实验类别:
专业基础课程实验类型:
应用性实验
实验要求:
必修适用专业:
通信工程
课程总学时:
12学时课程总学分:
1分
《操作系统》课程实验项目及学时分配
序号
实验项目
实验内容及要求
学时
实验类型
备注
1
实验一:
页式存储管理方案
页式内存管理系统模拟程序
模拟页式存储管理,页面的分配与回收,能显示位视图和页表
4
应用型实验
2
实验二
文件管理
文件管理模拟程序
模拟操作系统中的建立文件、打开文件、读文件、写文件、关闭文件、删除文件、建立目录、显示目录内容、显示文件内容、改变文件属性等操作。
8
应用型实验
3
实验三
操作系统基础操作应用
操作系统基础应用操作
2
基础应用实验
实验一页式存储管理
一、实验目的
掌握页面存储管理的内存分配方法,位视图的表示。
二、实验内容
1、运行程序,由检查教师给出文件名,该文件中存有内存目前状况的位示图的数据(0和1的文件)。
(程序应做提示,界面友好)。
2、你所编制的程序应读入数据,存放在相应的数据结构中。
3、显示友好的用户界面,由检查教师输入内存申请(总块数)。
4、根据申请和位示图状态,为用户分配内存,并建立页表。
5、输出位示图和页表。
三、实验环境
1、一台能正常启动的P41.5GHZ以上个人计算机
2、安装有VisualC++6.0软件
四、实验原理与方法
内存被划分成2048块(页)。
用32位字长的字存放位示图,为0的位表示该块尚未分配,为1的位表示该块已分配。
五、实验步骤
1、启动VisualC++6.0,创建一个新的C++源程序
2、输入相应的代码。
3、保存程序
4、运行程序
主要的程序代码如下:
#include
#include
#include
constintPAGES=256;//定义总块数
constintWORD=32;//定义字长
constintWORDNUM=PAGES/WORD;//定义总字数
typedefstructnode{
charjobname[20];
intnum;
intnums[PAGES];
structnode*next;
}jobs;
inttable[WORDNUM][WORD];
intfreenum=0;
jobs*head;
//初始化函数
voidinitial(){
inti,j;
jobs*p;
//初始化位示图
for(i=0;i for(j=0;j table[i][j]=0; } } //初始化作业表头 p=newjobs; strcpy(p->jobname,"null"); p->num=0; p->next=NULL; head=p; } //读入位示图初始数据 voidreadData() { inti,j; FILE*fp; charfname[20]; cout<<"请输入初始位示图数据文件名: "< cin>>fname; if((fp=fopen(fname,"r"))! =NULL){ for(i=0;i for(j=0;j fscanf(fp,"%d",&table[i][j]); if(table[i][j]==1) freenum++; } } cout<<"初始位示图"< for(i=0;i for(j=0;j cout< } cout< } cout<<"总空闲块数: "< } else{ cout<<"文件不能打开"< } } //新加入作业函数 voidadd() { charjobname[20]; intnum; jobs*p; inti,j,k=0; cout<<"请输入新增的作业名: "; cin>>jobname; cout<<"新增作业所需页数: "; cin>>num; if(num<=freenum){ freenum-=num; p=newjobs; strcpy(p->jobname,jobname); p->num=num; for(k=0;k i=0; j=0; while(table[i][j]==1){ j=0; while(table[i][j]==1)j++; if(table[i][j]==1) i++; } p->nums[k]=i*WORD+j; table[i][j]=1; } p->next=head->next; head->next=p; } else{ cout<<"错误,当前剩余页数小于所需页数,请稍候再试: )"< } } //完成作业函数 voidfinish() { charjobname[20]; jobs*p,*q; intn,i,j,num,k; cout<<"请输入完成的作业名: "; cin>>jobname; p=head->next; q=head; while(p! =NULL){ if(strcmp(p->jobname,jobname)){ q=q->next; } p=p->next; } p=q->next; num=p->num; for(k=0;k n=p->nums[k]; i=n/WORD; j=n%WORD; table[i][j]=0; } freenum+=num; q->next=p->next; deletep; } //显示当前位示图函数 voidview_table() { inti,j; cout<<"当前位示图"< for(i=0;i for(j=0;j cout< } cout< } cout<<"总空闲块数: "< } //显示所有页表函数 voidview_pages() { jobs*p; inti; p=head->next; if(p==NULL)cout<<"当前没有用户作业"< else cout<<"当前所有的用户作业页表情况"< while(p! =NULL){ cout<<"作业名: "< "< cout<<"本作业所点块的序列是: "< for(i=0;i cout< } cout< p=p->next; } } //显示版权信息函数 voidversion() { cout< cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"< cout<<"┃ 页式内存管理系统模拟程序 ┃"< cout<<"┠───────────────────────┨"< cout<<"┃ 重庆科创职业学院 ┃"< cout<<"┃ 1.0版 ┃"< cout<<"┃ 2009年3月19日┃"< cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"< cout< } voidmain() { intt=1,chioce; version(); initial(); readData(); while(t==1){ cout< cout<<"页式内存管理系统模拟程序"< cout<<"==========================================="< cout<<"1.加入新作业2.完成作业3.显示当前内存位示图4.显示所有作业页表0.退出"< cout<<"请选择: "; cin>>chioce; switch(chioce){ case1: add(); break; case2: finish(); break; case3: view_table(); break; case4: view_pages(); break; case0: t=0; break; default: cout<<"选择错误"< } } } 六、思考题 1.页面的分配和回收是如何操作的. 七、实验报告要求 认真填写试验报告,程序代码清单要完整,准确。 实验二文件管理 一、实验目的 掌握操作系统文件管理的基本方法。 二、实验内容 编写程序代码,模拟操作系统对文件的操作。 1、运行程序,由检查教师给出文件名,该文件中存有相应的若干命令。 (程序应做提示,界面友好)。 2、要求实现两个命令: mkdir目录名(目录已存在,应给出错误信息。 ) cd目录名(目录不存在,应给出错误信息。 ) 3、你所编制的程序应读入文件,并执行其中的每一条命令。 4、在屏幕上显示文件目录的结构。 (界面自己设计,但要清晰明了。 ) 三、实验环境(宋体小四加粗) 1、一台能正常启动的P41.5GHZ以上个人计算机 2、安装有VisualC++6.0软件 四、实验原理与方法 模拟一个文件系统,包括目录文件,普通文件,并实现对它们的一些 基本操作。 假定每个目录文件最多只能占用一个块;一个目录项包括文件名(下一级目录 名),文件类型,文件长度,指向文件内容(下一级目录)的指针内容。 普通文件可以 只用目录项(FCB)代表。 (详细的数据结构见后面的说明) 程序功能方面的要求: 需要实现一个命令行操作界面,包含如下命令: 1改变目录 格式: CD〈目录名〉 功能: 工作目录转移到指定的目录下,只要求完成改变到当前目录的某一个子目录 下的功能,不要求实现相对目录以及绝对目录。 2创建文件 格式: CREATE〈文件名〉〈文件长度〉 功能: 创立一个指定名字的新文件,即在目录中增加一项,不考虑文件内容,但必 须能输入文件长度。 3删除文件 格式: DEL〈希望删除的文件名〉 功能: 删除指定的文件 4显示目录 格式: LSALL 功能: 显示全部目录以及文件,输出时要求先输出接近根的目录,再输出子目录。 图示如图。 5创建目录 格式: MD〈目录名〉 功能: 在当前路径下创建指定的目录 6删除目录 格式: RD〈目录名〉 功能: 删除当前目录下的指定目录,如果该目录为空,则可删除,否则应提示是否 作删除,删除操作将该目录下的全部文件和子目录都删除。 对于上述功能要求,完成1-4为及格,完成1-5为良,完成1-6为优。 程序实现方面的要求: 1对于重名(创建时),文件不存在(删除时),目录不存在(改变目录时)等错误* 作情况,程序应该作出相应处理并给出错误信息,但是程序不得因此而退出。 2界面友好,程序强壮。 3界面的提示符为#,提示的命令以及调试的方法应和前面的要求一致。 不要自己设计命 令或者附加不要求的功能。 4在考卷的说明部分(背面)有一段程序的源代码以及对源代码的说明,考试的编码应 在这个程序的基础上修改而成。 这段源代码中规定了文件系统使用的数据结构和需要实 现的函数框架,请将你的实现代码填写到合适的位置中去,可以自己添加辅助数据结构、 变量、常量以及函数,但是不得改变已有的代码(如数据结构的定义以及函数的名称以 及参数说明)。 5考试提交的源程序请命名为filesys.c。 6程序设计环境使用TC2.0,在DOS操作系统下完成全部程序代码。 本程序包括实现: 1改变目录 格式: CD〈目录名〉 功能: 工作目录转移到指定的目录下,只要求完成改变到当前目录的某一个子目录 下的功能,不要求实现相对目录以及绝对目录。 2创建文件 格式: CREATE〈文件名〉〈文件长度〉 功能: 创立一个指定名字的新文件,即在目录中增加一项,不考虑文件内容,但必 须能输入文件长度。 3删除文件 格式: DEL〈希望删除的文件名〉 功能: 删除指定的文件 4显示目录 格式: LSALL 功能: 显示全部目录以及文件,输出时要求先输出接近根的目录,再输出子目录。 图示如图。 5创建目录 格式: MD〈目录名〉 功能: 在当前路径下创建指定的目录 6删除目录 格式: RD〈目录名〉 五、实验步骤 1、启动VisualC++6.0,创建一个新的C++程序 2、输入相应的代码。 3、保存程序 4、运行程序 主要的代码如下: include #include #include #include #include #include //******************目录和文件的结构定义****** typedefstructnode{ charname[50];/*目录或文件的名字*/ inttype;/*0代表目录,1代表普通文件*/ structnode*next;/*指向下一个兄弟结点的指针*/ structnode*sub;/*指向第一个子结点的指针*/ structnode*father;/*指向父结点的指针*/ intsize;/*如果是文件则表示文件的大小*/ }dirNode; dirNode*workDir;//定义当前工作目录 dirNoderoot;//定义根目录 charpath[100];//定义路径信息 //初始化函数 voidinitial() { strcpy(root.name,"root"); root.type=0; root.next=NULL; root.sub=NULL; root.father=NULL; root.size=0; workDir=&root; strcpy(path,"root"); } //初始化新结点函数 dirNode*init() { dirNode*p; p=newdirNode; strcpy(root.name,""); root.type=0; root.next=NULL; root.sub=NULL; root.father=NULL; root.size=0; returnp; } //1改变目录 voidCD(chardirName[]) { dirNode*p; intflag=0; p=workDir->sub; if(p==NULL){ cout<<"错误,\""< } else{ while(p){ if(p->type==0){ if(! strcmp(p->name,dirName)){ flag=1; break; } } p=p->next; } if(flag==1){ workDir=p; strcat(path,"\\"); strcat(path,p->name); cout<<"工作目录已进入\""< } else{ cout<<"错误,\""< } } } //2创建文件 voidCREATE(charfileName[],intfileSize) { intflag; dirNode*p,*q; q=newdirNode; strcpy(q->name,fileName); q->sub=NULL; q->type=1; q->next=NULL; q->father=workDir; q->size=fileSize; p=workDir->sub; if(p==NULL){ workDir->sub=q; cout<<"\""< } else{ flag=0; while(p){ if(p->type==1){ if(! strcmp(p->name,fileName)){ flag=1; cout<<"错误,\""< } } p=p->next; } if(flag==0){ p=workDir->sub; while(p->next){ p=p->next; } p->next=q; cout<<"\""< } } } //3删除文件 voidDEL(charfileName[]) { dirNode*p,*q; intflag=0; p=workDir->sub; if(p==NULL){ cout<<"错误,\""< } else{ while(p){ if(p->type==1){ if(! strcmp(p->name,fileName)){ flag=1; break; } } p=p->next; } if(flag==1){ if(p==workDir->sub){ workDir->sub=p->next; } else{ q=workDir->sub; while(q->next! =p){ q=q->next; } q->next=p->next; deletep; } cout<<"\""< } else{ cout<<"错误,\""< } } } //4显示所有目录 //显示本目录下所有兄弟目录和文件 voiddir(dirNode*p) { while(p){ if(p->type==0){ cout.setf (2); cout< } else{ cout.setf (2); cout< } p=p->next; } } // voiddirs(dirNode*p,charstr[]) { charnewstr[100]; dirNode*q; cout< "< dir(p); q=p; if(q->sub){ strcpy(newstr,""); strcat(newstr,str); strcat(newstr,"\\"); strcat(newstr,q->name); dirs(q->sub,newstr); } q=p; while(q->next){ if(q->next->sub){ strcpy(newstr,""); strcat(newstr,str); strcat(newstr,"\\"); strcat(newstr,q->next->name); dirs(q->next->sub,newstr); } q=q->next; } } //显示所有目录 voidLSALL() { dirNode*p; cout<<"显示所有目录结构"< p=root.sub; dirs(p,"root"); } //5创建目录 voidMD(chardirName[]) { intflag; dirNode*p,*q; q=newdirNode; strcpy(q->name,dirName); q->sub=NULL; q->type=0 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1