您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《操作系统》实验指导书2017
《操作系统》实验指导书绍兴文理学院计算机系前言1.实验总体目标通过学生自己动手设计实验验证理论知识,使学生掌握操作系统特征和功能,掌握不同调度算法下进程的调度、进程控制、进程调度与死锁,并必须掌握作业管理、存储器管理、设备管理和文件管理的主要原理。加深对操作系统基本原理理解。⒉适用专业计算机科学与技术⒊先修课程C语言程序设计、计算机组成原理、数据结构⒋实验课时分配序号实验名称学时实验要求实验类型1分析操作系统所面临的操作需求2必修验证2进程管理4必修设计3存储管理4必修设计4设备管理2必修设计5文件管理4必修设计⒌实验环境有70台中等配置的计算机组成的小型局域网的实验室环境。计算机的具体要求:(1)Pentium133Hz以上的CPU;(2)建议至少256MB的内存;(3)建议硬盘至少2GB,并有1GB空闲空间。(4)安装Windows操作系统及C语言编译程序或Linux虚拟环境。⒍实验总体要求培养计算机专业的学生的系统程序设计能力,是操作系统课程的一个非常重要的环节。通过操作系统上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,具有分析实际操作系统、设计、构造和开发现代操作系统的基本能力。实验要求做到:1)详细描述实验设计思想、程序结构及各模块设计思路;2)详细描述程序所用数据结构及算法;3)明确给出测试用例和实验结果;4)为增加程序可读性,在程序中进行适当注释说明;5)认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6)实验报告撰写要求结构清晰、描述准确逻辑性强;7)实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。⒎本实验的重点、难点及教学方法建议重点:理解进程调度中PCB的设计,以实现对进程的调度。难点:进程调度程序的设计,设备管理程序的设计。教学方法建议:力争在本指导书的帮助下,独立设计程序以加深理解。实验一分析操作系统所面临的操作需求(一)实验目的使学生理解操作系统所面临的操作需求,掌握操作系统中的进程管理、存储管理、设备管理和文件管理等功能。(二)实验内容1.分析操作系统所面临的操作需求;2.熟悉实验环境;3.资料搜集与整理,进行实验的前期准备。熟悉编程环境本课程中的实验题目既可以在windows下用控制台应用程序实现,也可以在linux下用全屏幕程序实现。这里我们首先介绍在windows下用vc++6.0设计控制台应用程序的步骤,然后介绍在linux下用C语言编写全屏幕程序的步骤。1.windows的控制台应用程序图1-1图1-2图1-3步骤1:开机,单击“开始”按钮,选择“程序-MicrosoftVisualStudio6.0-MicrosoftVisualC++6.0”进入MicrosoftVisualC++6.0。见图1-1。步骤2:在MicrosoftVisualC++6.0中,单击“File”菜单,选择“New”菜单命令,见图1-2。步骤3:在“Files”选项卡中选择“C++SourceFile”,见图1-32.linux的vi应用编程登录Linux是一个多用户多任务操作系统,多个用户可以拥有自己独立的用户账号登录提示:RedHatLinuxrelease6.0(Hedwing)Kernel2.2.5-15onani686Login:此时输入用户户名(账号)并键入回车,则系统显示“passward”。在输入密码和回车。登录后:[root@hawk/root]##表示是按root方式登录,$表示是普通用户。Linux大小写敏感,用“-”加参数zlinux:~#ls–FHowTo/HowToMin/linux@nag/sag/获取帮助:Linux带有联机手册,可以用man命令来阅读Zlinux:~$manls虚拟终端Linux可有多个用户登录到同一个计算机,但一般微机只有一个终端难以体现。可以使用多个虚拟终端,用Alt+F1、Alt+F2等来切换。退出系统在停止使用系统时,要退出系统。具体方法:exit或logout,或Ctrl+D关机如果没有用户在使用系统,可以关机。但是不能直接关闭电源,而要按正常顺序关机。一般用户是不能关机的,只有root用户可以关机。方法:可以使用halt或shutdown命令,也可以同时键入Ctrl+Alt+Del。Windows虚拟机环境:登录到系统点击桌面“VMware”图标——VmwareWorkstation窗口——Commands——Startthisvirtualmachine进入fedora后,用户名:root口令:123456使用编辑器vi编辑文件1.进入linux的文本模式之后,在命令行键入vifilename.c然后回车。下面作一些简单的解释:首先vi命令是打开vi编辑器。后面的filename.c是用户即将编辑的c文件名字,注意扩展名字是.c;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。2.最基本的命令I:当进入刚打开的文件时,不能写入信息,这时按一下键盘上的I键(insert),插入的意思,就可以进入编辑模式了。如下图所示:3.a与i是相同的用法4.当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。如果不想保存退出,则在第二步键入冒号之后,键入!q(不带w,机尾部保存)。如下图所示:5.退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是:gccfilename.c[-ooutputfilename],其中gcc是c的编译器。参数:filename.c是刚才编辑的c文件(当然也可以是以前编写好的c文件);后面中括号里面的参数是可选的,它是一个输出文件。如果不选,默认的输出文件是a.out,选了之后输出文件就是outputfilename.out.6.最后一步是运行程序,方法如下:./outputfilename.out实验二进程管理(一)实验目的掌握临界区的概念及临界区的设计原则;掌握信号量的概念、PV操作的含义以及应用PV操作实现进程的同步与互斥;分析进程争用资源的现象,学习解决进程互斥的方法;掌握进程的状态及状态转换;掌握常用的进程调度算法。(二)实验内容1.分析进程的同步与互斥现象,编程实现经典的进程同步问题——生产者消费者问题的模拟;2.编写允许进程并行执行的进程调度程序,在常用的进程(作业)调度算法:先来先服务算法、短作业优先算法、最高响应比优先算法、高优先权优先算法等调度算法中至少选择三种调度算法进行模拟,并输出平均周转时间和平均带权周转时间。本实验涉及内容较多,可以在两个题目里选择一个完成。编程实现经典的进程同步问题——生产者消费者问题的模拟模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。我们把若干个进程都能进行访问和修改的那些变量称为公共变量。由于进程是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。为了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。一般说,同步机构是由若干条原语——同步原语——所组成。本实验要求模拟PV操作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。此次用到的数据结构知识如下:typedefstructPcb{charname[10];//进程名charstate[10];//运行状态charreason[10];//若阻塞,其原因intbreakp;//断点保护structPcb*next;//阻塞时的顺序}Pcb,*link;进程控制块结构定义两个进程:linkp1;//生产者进程,linkc1;//消费者进程。pc程序计数器和linkready;就绪队列,linkb_s1;s1阻塞队列,linkb_s2;s2阻塞队列。实验指导:a.h头文件#includestring.h#includectype.h#includemalloc.h/*malloc()等*/#includelimits.h/*INT_MAX等*/#includestdio.h/*EOF(=^Z或F6),NULL*/#includestdlib.h/*atoi()*/#includeio.h/*eof()*/#includemath.h/*floor(),ceil(),abs()*/#includeprocess.h/*exit()*/#includeiostreamusingnamespacestd;#includetime.h#defineBUF10//缓存的大小#defineMAX20//最大可以输入的字符b.h头文件//数据结构的定义和全局变量typedefstructPcb{charname[10];//进程名charstate[10];//运行状态charreason[10];//若阻塞,其原因intbreakp;//断点保护structPcb*next;//阻塞时的顺序}Pcb,*link;ints1,s2;//信号量linkp1;//生产者进程linkc1;//消费者进程charstr[MAX];//输入的字符串charbuffer[BUF];//缓冲池intlen;//输入长度intsp=0;//string的指针进程名状态等待原因断点后继进程intin=0;//生产者指针intout=0;//消费者指针chartemp;//供打印的临时产品charrec_p[MAX];//生产记录intrp1=0;//生产记录指针charrec_c[MAX];//消费记录intrp2=0;//消费记录指针linkready;//就绪队列linkb_s1;//s1阻塞队列linkb_s2;//s2阻塞队列intpc;//程序计数器intcount;//字符计数器intcon_cnt;//消费计数器c.h头文件voidinit();//初始化voidp(ints);//P操作voidv(ints);//V操作voidblock(ints);//阻塞函数voidwakeup(ints);//唤醒函数voidcontrol();//处理机调度voidprocessor();//处理机执行voidprint();//打印函数voidinit(){//初始化s1=BUF;s2=0;p1=(link)malloc(sizeof(Pcb));//建立新的结点,并初始化为生产者strcpy(p1-name,Producer);strcpy(p1-state,Ready);strcpy(p1-reason,Null);p1-breakp=0;p1-next=NULL;c1=(link)malloc(sizeof(Pcb));//建立新的结点,并初始化为消费者strcpy(c1-name,Consumer);strcpy(c1-state,Ready);strcpy(c1-reason,Null);c1-breakp=0;c1-next=NULL;ready=p1;ready-next=c1;//初始化为生产进程在前,消费进程在后c1-next=NULL;b_s1=NULL;b_s2=NULL;//阻塞进程为NULLpc=0;con_cnt=0;//消费计数器}voidp(ints){if(s==1){//p(s1)s1--;if(s10)block(1);//阻塞当前生产进程else{printf(\t*s1信号申请成功!\n);ready-b
本文标题:《操作系统》实验指导书2017
链接地址:https://www.777doc.com/doc-5941190 .html