《操作系统》实践教学大纲Word格式.docx

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

《操作系统》实践教学大纲Word格式.docx

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

《操作系统》实践教学大纲Word格式.docx

页式内存管理系统模拟程序

模拟页式存储管理,页面的分配和回收,能显示位视图和页表

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<

stdio.h>

iostream.h>

string.h>

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<

WORDNUM;

i++){

for(j=0;

j<

WORD;

j++){

table[i][j]=0;

}

}

//初始化作业表头

p=newjobs;

strcpy(p->

jobname,"

null"

);

p->

num=0;

next=NULL;

head=p;

//读入位示图初始数据

voidreadData()

{

FILE*fp;

charfname[20];

cout<

<

"

请输入初始位示图数据文件名:

endl;

cin>

>

fname;

if((fp=fopen(fname,"

r"

))!

=NULL){

for(i=0;

fscanf(fp,"

%d"

&

table[i][j]);

if(table[i][j]==1)

freenum++;

cout<

初始位示图"

table[i][j]<

"

;

总空闲块数:

freenum;

else{

文件不能打开"

//新加入作业函数

voidadd()

inti,j,k=0;

请输入新增的作业名:

jobname;

新增作业所需页数:

num;

if(num<

=freenum){

freenum-=num;

p=newjobs;

strcpy(p->

jobname,jobname);

p->

num=num;

for(k=0;

k<

k++){

i=0;

j=0;

while(table[i][j]==1){

while(table[i][j]==1)j++;

i++;

nums[k]=i*WORD+j;

table[i][j]=1;

next=head->

next;

head->

next=p;

错误,当前剩余页数小于所需页数,请稍候再试:

)"

//完成作业函数

voidfinish()

jobs*p,*q;

intn,i,j,num,k;

请输入完成的作业名:

p=head->

q=head;

while(p!

if(strcmp(p->

jobname,jobname)){

q=q->

p=p->

p=q->

num=p->

for(k=0;

n=p->

nums[k];

i=n/WORD;

j=n%WORD;

freenum+=num;

q->

next=p->

deletep;

//显示当前位示图函数

voidview_table()

当前位示图"

freenum<

//显示所有页表函数

voidview_pages()

inti;

if(p==NULL)cout<

当前没有用户作业"

else

当前所有的用户作业页表情况"

作业名:

jobname<

所用块数:

num<

本作业所点块的序列是:

nums[i]<

p=p->

//显示版权信息函数

voidversion()

endl<

┏━━━━━━━━━━━━━━━━━━━━━━━┓"

┃    页式内存管理系统模拟程序     ┃"

┠───────────────────────┨"

┃  重庆科创职业学院     ┃"

┃      1.0版        ┃"

┃     2009年3月19日┃"

┗━━━━━━━━━━━━━━━━━━━━━━━┛"

voidmain()

intt=1,chioce;

version();

initial();

readData();

while(t==1){

==========================================="

页式内存管理系统模拟程序"

1.加入新作业2.完成作业3.显示当前内存位示图4.显示所有作业页表0.退出"

请选择:

cin>

chioce;

switch(chioce){

case1:

add();

break;

case2:

finish();

case3:

view_table();

case4:

view_pages();

case0:

t=0;

default:

选择错误"

六、思考题

1.页面的分配和回收是如何操作的.

七、实验报告要求

认真填写试验报告,程序代码清单要完整,准确。

实验二文件管理

一、实验目的

掌握操作系统文件管理的基本方法。

二、实验内容

编写程序代码,模拟操作系统对文件的操作。

1、运行程序,由检查教师给出文件名,该文件中存有相应的若干命令。

2、要求实现两个命令:

mkdir目录名(目录已存在,应给出错误信息。

cd目录名(目录不存在,应给出错误信息。

3、你所编制的程序应读入文件,并执行其中的每一条命令。

4、在屏幕上显示文件目录的结构。

(界面自己设计,但要清晰明了。

三、实验环境(宋体小四加粗)

模拟一个文件系统,包括目录文件,普通文件,并实现对它们的一些

基本操作。

假定每个目录文件最多只能占用一个块;

一个目录项包括文件名(下一级目录

名),文件类型,文件长度,指向文件内容(下一级目录)的指针内容。

普通文件可以

只用目录项(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改变目录

RD〈目录名〉

五、实验步骤

1、启动VisualC++6.0,创建一个新的C++程序

主要的代码如下:

include<

math.h>

stdlib.h>

iomanip.h>

//******************目录和文件的结构定义******

charname[50];

/*目录或文件的名字*/

inttype;

/*0代表目录,1代表普通文件*/

/*指向下一个兄弟结点的指针*/

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

//初始化新结点函数

dirNode*init()

dirNode*p;

p=newdirNode;

returnp;

//1改变目录

voidCD(chardirName[])

intflag=0;

p=workDir->

sub;

if(p==NULL){

错误,\"

dirName<

\"

子目录不存在"

while(p){

if(p->

type==0){

if(!

strcmp(p->

name,dirName)){

flag=1;

if(flag==1){

workDir=p;

strcat(path,"

\\"

strcat(path,p->

name);

工作目录已进入\"

else{

//2创建文件

voidCREATE(charfileName[],intfileSize)

intflag;

dirNode*p,*q;

q=newdirNode;

strcpy(q->

name,fileName);

sub=NULL;

type=1;

father=workDir;

size=fileSize;

workDir->

sub=q;

fileName<

文件创建成功"

flag=0;

type==1){

name,fileName)){

文件已存在"

if(flag==0){

p=workDir->

while(p->

next){

next=q;

//3删除文件

voidDEL(charfileName[])

文件不存在"

if(p==workDir->

sub){

sub=p->

q=workDir->

while(q->

next!

=p){

q->

deletep;

文件已删除"

//4显示所有目录

//显示本目录下所有兄弟目录和文件

voiddir(dirNode*p)

while(p){

cout.setf

(2);

setw(14)<

name<

setw(12)<

DIR>

FILE>

setw(10)<

size<

//

voiddirs(dirNode*p,charstr[])

charnewstr[100];

dirNode*q;

str<

下子目录及文件:

dir(p);

q=p;

if(q->

strcpy(newstr,"

strcat(newstr,str);

strcat(newstr,"

\\"

strcat(newstr,q->

dirs(q->

sub,newstr);

while(q->

if(q->

next->

\\"

//显示所有目录

voidLSALL()

显示所有目录结构"

--------------------------------------------"

p=root.sub;

dirs(p,"

//5创建目录

voidMD(chardirName[])

name,dirName);

type=0;

size=0;

p=work

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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