操作系统实践教学大纲.docx

上传人:b****1 文档编号:14009800 上传时间:2023-06-20 格式:DOCX 页数:36 大小:23.73KB
下载 相关 举报
操作系统实践教学大纲.docx_第1页
第1页 / 共36页
操作系统实践教学大纲.docx_第2页
第2页 / 共36页
操作系统实践教学大纲.docx_第3页
第3页 / 共36页
操作系统实践教学大纲.docx_第4页
第4页 / 共36页
操作系统实践教学大纲.docx_第5页
第5页 / 共36页
操作系统实践教学大纲.docx_第6页
第6页 / 共36页
操作系统实践教学大纲.docx_第7页
第7页 / 共36页
操作系统实践教学大纲.docx_第8页
第8页 / 共36页
操作系统实践教学大纲.docx_第9页
第9页 / 共36页
操作系统实践教学大纲.docx_第10页
第10页 / 共36页
操作系统实践教学大纲.docx_第11页
第11页 / 共36页
操作系统实践教学大纲.docx_第12页
第12页 / 共36页
操作系统实践教学大纲.docx_第13页
第13页 / 共36页
操作系统实践教学大纲.docx_第14页
第14页 / 共36页
操作系统实践教学大纲.docx_第15页
第15页 / 共36页
操作系统实践教学大纲.docx_第16页
第16页 / 共36页
操作系统实践教学大纲.docx_第17页
第17页 / 共36页
操作系统实践教学大纲.docx_第18页
第18页 / 共36页
操作系统实践教学大纲.docx_第19页
第19页 / 共36页
操作系统实践教学大纲.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

操作系统实践教学大纲.docx

《操作系统实践教学大纲.docx》由会员分享,可在线阅读,更多相关《操作系统实践教学大纲.docx(36页珍藏版)》请在冰点文库上搜索。

操作系统实践教学大纲.docx

操作系统实践教学大纲

自考《操作系统》实验环节实施方案

根据《操作系统》课程教学要求,实验环节应要求完成五个实验项目。

考虑到自考课程教学实际情况,结合我院实验室的条件,经任课教师、实验指导教师、教研室主任和我院学术委员会认真讨论,确定开设三个实验项目。

实验项目、内容及要求详见我院编制的《操作系统》课程实验大纲。

一、实验环境

目前,我院根据编制的《操作系统》课程实验大纲,实验环境基本能满足开设的实验项目。

实验环境主要设备为:

硬件:

一台能正常启动的计算机

软件:

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<<"作业名:

"<jobname<<"所用块数:

"<num<

cout<<"本作业所点块的序列是:

"<

for(i=0;inum;i++){

cout<nums[i]<<"";

}

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<name<"<

}

else{

cout.setf

(2);

cout<name<"<size<

}

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2