安徽大学操作系统实验指导周爱武.docx
《安徽大学操作系统实验指导周爱武.docx》由会员分享,可在线阅读,更多相关《安徽大学操作系统实验指导周爱武.docx(17页珍藏版)》请在冰豆网上搜索。
![安徽大学操作系统实验指导周爱武.docx](https://file1.bdocx.com/fileroot1/2022-11/15/1af665ac-3927-44b2-b837-4d97c84d8c20/1af665ac-3927-44b2-b837-4d97c84d8c201.gif)
安徽大学操作系统实验指导周爱武
操作系统实验指导
实验计划及实验项目
操作系统实验课程计划学时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