安徽大学操作系统实验指导周爱武.docx

上传人:b****1 文档编号:12791272 上传时间:2023-04-22 格式:DOCX 页数:19 大小:90.11KB
下载 相关 举报
安徽大学操作系统实验指导周爱武.docx_第1页
第1页 / 共19页
安徽大学操作系统实验指导周爱武.docx_第2页
第2页 / 共19页
安徽大学操作系统实验指导周爱武.docx_第3页
第3页 / 共19页
安徽大学操作系统实验指导周爱武.docx_第4页
第4页 / 共19页
安徽大学操作系统实验指导周爱武.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

安徽大学操作系统实验指导周爱武.docx

《安徽大学操作系统实验指导周爱武.docx》由会员分享,可在线阅读,更多相关《安徽大学操作系统实验指导周爱武.docx(19页珍藏版)》请在冰豆网上搜索。

安徽大学操作系统实验指导周爱武.docx

安徽大学操作系统实验指导周爱武

操作系统实验指导

实验计划及实验项目

操作系统实验课程计划学时36学时,1学分,下表列出实验项目,其中必做实验24学时,选做实验12学时(从24学时的可选做实验项目中任选12学时)。

序号

名称

类型

开出

要求

目的要求

人∕组

学时

1

进程调度模拟实验

基础

必做

1.熟悉进程控制块的作用和实现技术;

2.熟悉操作系统的进程调度算法及实现方法。

1

6

2

作业调度模拟实验

基础

选做

1.熟悉作业控制块的作用和实现技术;

2.熟悉操作系统的作业调度算法及实现方法。

1

6

3

存储器管理实验

综合

必做

1.理解分区式存储管理的基本原理

2.熟悉分区分配和回收算法

1

6

4

虚拟存储器管理实验

验证

必做

1.理解页式虚拟存储管理的基本原理

2.熟悉常用的页面置换算法

1

6

5

文件管理实验

设计

选做

1.模拟文件系统的基本功能

2.了解文件系统的基本结构和文件管理方法

3-4

12

6

操作系统接口实验

验证

选做

1.熟悉操作系统的用户接口。

2.利用汇编语言编程进行系统功能调用。

1

6

7

银行家算法实验

验证

必做

1.了解死锁的产生和避免的办法

2.编程实现银行家算法,并设计实验数据验证其避免死锁的资源分配策略。

1

6

 

一、操作系统接口实验

实验目的

熟悉操作系统的命令接口、图形接口和程序接口。

实验内容

▪UNIX或LINUX环境:

✧熟悉开机登录进入系统、退出系统的过程。

✧使用UNIX或LINUX常用命令以及图形化接口X-Windows。

✧使用C语言编制一个小程序,使其可以通过某个系统调用来获得操作系统的服务。

▪Windows环境:

✧熟悉开机登录进入系统、退出系统的过程。

✧熟悉使用命方式启动应用程序的过程、熟悉Windows图形用户接口。

✧编程实现一个操作系统的简单命令解释程序。

✧使用汇编语言编制一个小程序,使其可以通过某些系统调用来获得操作系统的服务。

实验分析和思考

▪操作系统向用户提供的各种接口分别适用于什么场合?

实验学时安排

6学时,在第一章学习完之后可以进行。

(选做)

 

实验题目

(1)命令接口实验

利用操作系统的用户接口编写程序实现一个操作系统的简单shell程序,实现对一些简单命令的解释执行。

具体内容包括:

✧查阅相关函数system(cmd)的调用方法,掌握它的用法;

✧掌握操作系统用户接口的使用方法;

✧编写主函数,实现一个微型命令解释程序,该程序可以接受并解释以下命令:

⏹dir列出当前目录

⏹copyfile1file2拷贝文件

⏹delfilename删除文件

⏹echostring显示字符串

⏹exit结束、退出

(2)程序接口实验

使用DOS系统功能调用进行编程,实现文件操作。

(在DOS下用3ch号功能创建一个文件,3dh号功能打开一个文件,3eh好功能关闭一个文件,3fh号功能读文件,40h号功能写文件。

windows下用CreatFile创建一个文件,CloseHandle关闭文件,WriteFile写文件OpenFile打开文件,还有很多文件操作的api,可以查阅资料)

【示例1】用汇编语言编程把输入的信息写到txt文件中。

DATA     SEGMENT 

 BUFFER   DB  'ABCDEF' 

 FILENAME DB  'A.TXT' 

 EMSG     DB  'ERROR!

','$' 

 DATA     ENDS 

 STACK1   SEGMENT PARA STACK 

 DW       20H DUP(0) 

 STACK1   ENDS 

 CODE     SEGMENT 

 ASSUME   DS:

DATA,SS:

STACK1,CS:

CODE 

 START:

 

 MOV  AX,DATA 

 MOV  DS,AX 

 MOV  AH,3CH           ;3CH号功能,创建文件,也可以用5BH号功能 

 MOV  CX,0             ;文件属性 

 LEA  DX,FILENAME 

 INT  21H 

 JZ   ERROR            ;若CF=1则出错处理 

 MOV  BX,AX            ;AX中为文件句柄 

 MOV  CX,6             ;要写的字节数 

 LEA  DX,BUFFER 

 MOV  AH,40H           ;40H好功能调用,写文件 

 INT  21H 

 JMP  END0 

 ERROR:

 

 MOV  AH,9 

 LEA  DX,EMSG 

 INT  21H 

 END0:

 

 MOV  AH,4CH 

 INT  21H 

 CODE      ENDS 

           END   START 

改进要求:

1)文件未关闭,请在合适位置增加关闭文件功能;

2)文件名改为从键盘输入;

3)字符串从键盘输入;

【示例2】将文本文件内容读入内存并显示在屏幕上。

比如此文本文件叫做test.txt,内容是:

(两行)

1234

56789

DSEGSEGMENT;数据段:

在此处添加程序所需的数据

PATHNM1DB'D:

/TEST.TXT'

BUFFER1DB100DUP(?

DSEGENDS

CSEGSEGMENT

assumecs:

CSEG,ds:

DSEG

START:

movax,dseg

movds,ax

;打开文件TEST.TXT

MOVAH,3DH

LEADX,PATHNM1

MOVAL,2

INT21H

;读取文件内容,存入BUFFER1

LEADX,BUFFER1

MOVBX,AX

MOVCX,100

MOVAH,3FH

INT21H

;显示BUFFER1中的内容

MOVCX,AX

LEASI,BUFFER1

NEXT:

MOVDL,[SI]

MOVAH,2

INT21H

INCSI

LOOPNEXT

;关闭文件

MOVAH,3EH

INT21H

;按任意键退出

movah,1

int21h

movax,4c00h;程序结束,返回到操作系统系统

int21h

CSEGENDS

ENDSTART

改进要求:

1)文件名改为从键盘输入;

2)字符串写入另一文件;

二、作业调度模拟实验

实验目的

用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。

实验内容

为单道批处理系统设计一个作业调度程序。

说明:

由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。

作业调度算法:

✧先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度,总是首先调度在系统中等待时间最长的作业。

✧短作业优先调度算法;

✧响应比搞着优先调度算法;

每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:

作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。

作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。

每个作业的最初状态总是等待W。

各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。

每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。

调度算法的流程图如下:

实验分析和思考

▪什么类型的操作系统必须具有作业调度功能?

▪作业调度算法性能如何衡量?

▪多道批处理系统作业调度要考虑哪些因素?

实验学时安排

6学时,在调度与死锁内容学习之后进行。

(选做)

三、银行家算法实验

实验目的

通过对银行家算法的模拟加深对死锁概念的认识,掌握解决死锁问题的方法。

实验内容

用C语言、Pascal语言或其他开发工具实现银行家算法模拟程序,输入系统资源配置情况、进程资源最大需求、占用情况后,能够判断系统是否安全,对某进程的一次资源请求,能够决定是否实施分配。

算法具体内容参见《计算机操作系统》教材。

实验分析和思考

▪产生死锁的四个必要条件是什么?

▪解决死锁问题的方法有哪些?

▪银行家算法是如何解决死锁问题的?

实验学时安排

6学时,在调度与死锁内容学习之后进行。

(必做)

四、进程调度模拟实验

实验目的

通过对进程调度算法的模拟加深对进程概念和进程调度过程的理解。

实验内容

▪用C语言或Pascal语言实现对N(N=5)个进程的调度模拟,要求至少采用两种不同的调度算法(如简单轮转法RoundRobin和优先权高者优先算法HighestPriorityFirst),分别进行模拟调度。

▪每个用来标识进程的进程控制块PCB用结构(记录)来描述,根据需要,它包括以下字段:

✧进程标识数ID。

✧进程优先数Priority,并规定优先数越大的进程,其优先权越高。

采用简单轮转法时该字段无用。

✧进程已经占用的CPU时间CPUTIME。

✧进程还需占用的CPU时间ALLTIME。

当进程运行完毕时,ALLTIME变为0。

✧进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。

✧进程被阻塞的时间BLOCKTIME,表示已经阻塞的进程再等待BLOCKTIME格时间片后,将转换成就绪状态。

✧进程状态STATE。

✧队列指针NEXT,用来将PCB排成队列。

▪优先数改变的原则(采用简单轮转法时该字段无用):

✧进程在就绪队列中等待一个时间片,优先数增加1;

✧进程每运行一个时间片,优先数减3。

▪假设在进行调度前,系统中有5个进程,它们的初始状态可以编程输入(更具有灵活性),例如可以初始化为如下内容:

ID

PRIORITY

CPUTIME

ALLTIME

STARTBLOCK

BLOCKTIME

STATE

0

9

0

3

2

3

READY

1

38

0

3

-1

0

READY

2

30

0

6

-1

0

READY

3

29

0

3

-1

0

READY

4

0

0

4

-1

0

READY

▪为了清楚地观察诸进程的调度过程,程序应该将每个时间片内各进程的情况显示出来并暂停,参考格式如下:

Running:

I

ReadyQueue:

Idi,Idj,…

BlockQueue:

Idk,Idl,…

======================================================================

ID

PRIORITY

CPUTIME

ALLTIME

STARTBLOCK

BLOCKTIME

STATE

0

P0

C0

A0

T0

B0

S0

1

P1

C1

A1

T1

B1

S1

2

P2

C2

A2

T2

B2

S2

3

P3

C3

A3

T3

B3

S3

4

P4

C4

A4

T4

B4

S4

  每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。

重复以上过程,直到所要进程都完成为止。

调度算法的流程图如下:

实验分析和思考

▪在实际的进程调度中,还有哪些可行的算法,怎样模拟?

▪在实际的进程调度中,除了按算法选择下一个运行的进程之外,操作系统还应该做哪些工作?

▪为什么对进程的优先数可以按上述原则进行修改?

有什么好处?

实验学时安排

6学时,在调度与死锁内容学习之后进行。

(必做)

五、分区存储管理模拟实验(存储器管理实验)

实验目的

了解动态分区存储管理方式中的数据结构和分配算法,加深对动态分区存储管理方式及其实现技术的理解。

实验内容

▪用C语言或Pascal语言分别实现采用首次适应算法或最佳适应算法的动态分区分配过程Allocate()和回收过程Free()。

其中,空闲分区采用空闲分区链来组织,内存分配时,优先使用空闲区低地址部分的空间。

▪流程图如下:

▪假设初始状态,可用内存空间为640KB,作业请求序列如下(也可以编程从键盘输入,R表示请求,F表示释放):

✧作业1请求130KB。

✧作业2请求60KB。

✧作业3请求100KB。

✧作业2释放60KB。

✧作业4请求200KB。

✧作业3释放100KB。

✧作业1释放130KB。

✧作业5请求140KB。

✧作业6请求60KB。

✧作业7请求50KB。

✧作业6释放60KB。

▪要求每次分配和回收后显示出空闲区链的情况。

▪如果不能为作业的请求进行内存分配,给出相应的提示信息。

实验分析和思考

▪采用首次适应算法和最佳适应算法,对内存的分配和回收速度有什么影响?

▪如何解决碎片片问题?

实验学时安排

6学时,在分区存储管理内容学习之后进行。

(必做)

六、请求分页存储管理模拟实验(虚拟存储器管理实验)

实验目的

通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求分页存储管理系统的原理和实现技术的理解。

实验内容

▪假设每个页面可以存放10条指令,分配给进程的存储块数为4。

▪用C语言或Pascal语言模拟一进程的执行过程。

设该进程工有320条指令,地址空间为32个页面,运行前所有页面均没有调入内存。

模拟运行时,如果所访问的指令已经在内存,则显示其物理地址,并转下一条指令;如果所访问的指令还未装入内存,则发生缺页,此时需要记录缺页产生次数,并将相应页面调入内存,如果4个内存块已满,则需要进行页面置换。

最后显示其物理地址,并转下一条指令。

在所有指令执行完毕后,显示进程运行过程中的缺页次数和缺页率。

▪页面置换算法:

可以采用OPT、FIFO、LRU三种算法。

▪进程中的指令访问次序按如下原则生成:

✧50%的指令是顺序执行的。

✧25%的指令是均匀分布在低地址部分。

✧25%的指令是均匀分布在高地址部分。

▪具体实现的方法是:

① 在[0,319]之间随机选取一条指令作为起始执行指令,设其序号(逻辑地址)为m;

② 顺序执行下一条指令,即序号(逻辑地址)为m+1的指令;

③ 通过随机数,跳转到低地址部分[0,m-1]的一条指令处,设其序号为m1;

④ 顺序执行下一条指令,即序号为m1+1的指令;

⑤ 通过随机数,跳转到高地址部分[m1+2,319]的一条指令处,设其序号为m2;

⑥ 顺序执行下一条指令,即序号为m2+1的指令;

⑦ 重复上述③——6步骤,直至执行了320条指令。

实验分析和思考

▪如果增加分配给进程的物理块数,会对进程运行过程中的缺页率产生什么影响?

▪为什么说一般情况下,LRU算法比FIFO算法具有更好的性能?

实验学时安排

6学时,在请求分页存储管理内容学习之后进行。

(必做)

七、简单文件系统模拟实验

实验目的

通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统功能和实现过程的理解。

实验内容

▪在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。

在退出这个简单文件系统时,应将该虚拟文件系统保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘上。

▪文件存储空间的分配可以采用显式链接分配或其它方法。

▪空闲空间的管理可以选择位示图或其它方法。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,可以将位示图合并到FAT中。

▪文件目录结构采用多级目录结构。

为简单起见,可以不使用索引结点,其中的每个目录项包含文件名、物理地址、文件长度等信息,还可以通过目录项实现对文件读和写的保护。

▪要求提供以下有关的文件操作:

✧Format:

对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。

✧Mkdir:

用于创建子目录。

✧Rmdir:

用于删除子目录。

✧Ls:

用于显示目录。

✧Cd:

用于更改当前目录。

✧Create:

用于创建文件。

✧Open:

用于打开文件。

✧Close:

用于关闭文件。

✧Write:

用于写文件。

✧Read:

用于读文件。

✧Rm:

用于删除文件。

实验分析

▪如果引入磁盘索引结点,上述实现过程需要做哪些修改?

▪如果设计一个多用户文件系统,则又要进行哪些扩充?

实验学时安排

12学时,在文件系统与文件存储器管理内容学习之后进行。

(选做)

八、实验说明

学生应提交实验报告(包括实验目的、实验内容、实验原理说明、程序流程图、实验分析),并上机编程实现。

九、教材与参考文献

1)《操作系统实验教程》张丽芬等清华大学出版社,2006年

2)《计算机操作系统》汤子赢等西安电子科技大学出版社

3)《操作系统教程题解与实验指导》孟静高等教育出版社2003年

4)《操作系统实验指导书》傅秀芬广东工业大学出版科

 

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

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1