操作系统实验指导书(清华版)
《计算机操作系统》实验指导书

宁夏师范学院——数学与计算机科学学院《操作系统》实验指导《OPERATING SYSTEM》2013.08前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。
要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。
同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。
为了收到良好的实验效果,编写了这本实验指导书。
在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。
任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。
进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。
实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。
目录操作系统实验大纲 (1)第一部分实验环境及所用系统函数介绍 (3)1.1 Linux操作系统简介 (3)1.2 Linux的使用 (3)第二部分实验内容 (7)实验一熟悉LINUX基本命令及编程环境 (7)实验二进程管理 (10)实验三进程调度 (14)实验四进程间通信 (19)实验五存储管理实验 (22)操作系统实验大纲一、教学目的和要求操作系统课程是一门理论性很强的专业课,操作系统实验是该课程的辅助课程。
操作系统实验1-计算机操作系统(第3版)-郁红英-清华大学出版社

操作系统实验
(课程设计)实验报告
学院
专业
班级/学号
学生姓名
成绩
实验地点_
实验日期___ __
指导教师_____ ___ _____
(课程上机)实验报告
1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。
操作系统实验指导书-final

中央民族大学操作系统实验指导书目录前言 (3)实验总体要求 (4)实验格式 (5)实验一:Linux的初步认识 (6)实验二: 系统调用实验 (9)实验三:进程同步实验 (16)实验四:进程通信实验 (21)实验五:页面调度算法模拟 (28)实验六:虚拟文件系统 (31)实验七:Linux Socket编程 (79)附加实验:linux的深入认识 (86)前言《操作系统》课程是计算机科学与技术专业的主干课。
操作系统是现代计算机系统中必不可少的基本系统软件,对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。
《操作系统》课程是一门理论和实践相结合的课程。
通过《操作系统》实验教学,可以是使学生深入地掌握操作系统的基本概念、基本原理,同时也可以使学生能够运用《操作系统》提供的方法与技巧对实际问题进行算法设计和程序设计,即能更好地实现与课程同步练习,又进一步深化理解和灵活掌握教学内容;又能培养学生程序设计及上机调试的能力。
这将为其后继课程如《计算机体系结构》、《计算机网络》等打下必要的基础,同时也为今后在相关领域开展工作打下坚实的基础。
《操作系统》课程含有18学时的实验内容,要求学生完成linux的初步认识、进程同步、进程通信、页面调度算法模拟等实验,使学生了解和掌握操作系统的基本原理,掌握常用操作系统的使用和一般的管理方法等内容。
通过《操作系统》实践环节,培养学生认真分析问题、解决问题的能力,同时培养学生面对问题勤于思考及团队合作的意识,最终使学生达到理论与实践相结合的目的。
《操作系统》实验教学计划安排7个实验项目。
由于每个项目都是一个综合训练,仅仅依靠上机三个学时是远远不够的,尤其是实验6和实验7,具有很大的难度,教师可以根据学生的实际情况调整实验内容。
这里要求每个同学上实验课前必须做好充分的准备,如问题的分析、数据类型和系统的设计以及程序的编写、初步的调试等等,上机实验课主要是教师和同学们一起讨论和交流,共同解决系统设计和调试中的问题。
操作系统实验指导书

操作系统实验指导书实验概述本次操作系统实验是为了让学生通过实践了解操作系统的基本概念,原理和使用。
通过完成实验,学生将了解操作系统内核,进程调度,文件系统和输入输出等关键组成部分。
实验环境实验要求使用 Linux 操作系统,可以选择任意一种 Linux 发行版。
可以在物理机上安装 Linux,也可以使用虚拟机软件(如 VirtualBox)来运行 Linux 虚拟机。
实验准备在进行实验之前,需要完成以下准备工作:1.安装 Linux 操作系统(如 Ubuntu、Fedora 等)或虚拟机软件(如VirtualBox)。
2.熟悉 Linux 基本命令和操作,包括文件操作、进程管理等。
实验内容本次操作系统实验分为以下几个部分:1. 实验一:进程管理本部分实验要求学生了解进程管理的基本概念和原理,掌握进程创建、终止和状态转换等操作。
学生需要完成以下任务:•编写一个简单的 C 程序,实现进程的创建、终止和状态转换功能。
•使用 Linux 命令行工具编译、运行和调试 C 程序。
•观察和分析进程的状态转换过程。
2. 实验二:进程调度本部分实验要求学生了解进程调度算法的原理和实现方法,掌握优先级调度、轮转调度和最短作业优先调度等算法。
学生需要完成以下任务:•编写一个简单的 C 程序,模拟进程调度算法的执行过程。
•使用 Linux 命令行工具编译、运行和调试 C 程序。
•观察和分析不同调度算法对进程执行顺序的影响。
3. 实验三:文件系统本部分实验要求学生了解文件系统的基本概念和实现原理,掌握文件的创建、读写和删除等操作。
学生需要完成以下任务:•编写一个简单的 C 程序,实现文件的创建、读写和删除功能。
•使用 Linux 命令行工具编译、运行和调试 C 程序。
•观察和分析文件系统的存储结构和操作过程。
4. 实验四:输入输出本部分实验要求学生了解操作系统的输入输出机制和设备驱动程序的原理和实现方法,掌握文件读写、设备驱动和错误处理等操作。
操作系统实验指导书

操作系统实验指导书操作系统是一门理论性和时间性都很强的课程。
要学好操作系统的设计原理,除了听课、看书、做习题外,最好的方法就是在实践中进行。
实验的操作平台是Red Hat Linux 9.0和Windows 2000 Professional,其中前者是主要的实验平台,因为源码阅读级等实验都是在Linux平台上进行的,当然,在Linux上进行的实验基本上也都可在UNIX平台上直接进行。
读者可根据自己的需要以及实验条件等选择相应的实验内容。
实验一UNIX/LINUX及其使用环境 0实验二LINUX 下C语言使用、编译与调试实验 (5)实验三进程的创建实验 (8)实验四进程互斥实验 (10)实验五进程间管道通信 (13)实验六Linux进程间通信--消息队列 (15)实验七进程共享存储区通信通信 (18)实验八线程同步 (22)实验九银行家算法实现 (24)实验十模拟分页式虚拟存储管理 (28)实验十一分区存储管理系统 (32)实验十二文件系统 (37)参考实验配置vsftp. 41实验一UNIX/LINUX及其使用环境实验目的1、了解UNIX的命令及使用格式。
2、熟悉UNIX/LINUX的常用基本命令。
实验内容熟悉UNIX/LINUX的常用基本命令如ls、who、w、pwd、ps、pstree、top等。
实验指导一、UNIX命令格式命令[选项] [处理对象]例:ls -la mydir注意:(1)命令一般是小写字串。
注意大小写有别(2)选项通常以减号(-)再加上一个或数个字符表示,用来选择一个命令的不同操作(3)同一行可有数个命令,命令间应以分号隔开常用命令1、目录操作和DOS相似,UNIX采用树型目录管理结构,由根目录(/)开始一层层将子目录建下去,各子目录以/ 隔开。
用户login后,工作目录的位置称为home directory,由系统管理员设定。
‘~’符号代表自己的home directory,例如~/myfile 是指自己home目录下myfile这个文件。
《操作系统原理》课程实验指导书

}
else { //大于0是父进程
printf("The parent:%d\n", getpid());
x=4;
}
printf("x=%d\n",x);
}
验证操作:
(45)程序运行共输出了几条语句?
(46)x的值输出了几次?
思考:
(47)x为什么会输出不同的值?
16.并发执行
#include <sys/types.h>
相关准备知识
Linux操作系统命令接口。
实验步骤
以图形化方式登录Linux系统,在桌面单击鼠标右键,选新建终端。
8.文件、目录管理。
(29)pwd
功能:显示用户当前所处的目录的绝对路径。
语法:pwd
例如,以root身份登录后,使用命令pwd将显示/root信息。
(30)ls
功能:列出目录的内容,类似于DOS下的dir命令。
(37)rm
功能:删除一个目录中的一个或多个文件或目录。
语法:rm 文件名…
例如,rm /tmp/my.c将删除/tmp目录下的my.c文件。
(38)clear
功能:清除屏幕上的信息,清屏后,提示符移动到屏幕左上角。
9.C程序开发
(39)使用vi编辑C语言源程序
(40)gcc编译和链接
(41)运行程序。
实验对象
本实验开设对象为计算机科学与技术和网络工程专业本科学生,本课程为必修课程。
课程简介
《操作系统原理》是计算机专业的核心课程之一。通过本课程的学习和实验,使学生掌握操作系统基本概念和原理,提高自身计算机的应用素质,并且培养学生熟练使用系统调用编程技能,为他们以后的专业学习奠定良好的基础。
操作系统实验指导书

操作系统实验指导书一、实验说明1、实验目的实验是操作系统原理课程中不可缺少的重要教学环节,实验目的是使学生理论联系实际,使学生在实践探索中去发现问题、去解决问题,提高了学生获取知识和应用技术的能力,培养了学生分析和解决问题的能力。
《操作系统原理》要求理论与实践相结合,本门实验课程是对《操作系统原理》课堂教学的一个重要补充,与理论学习起着相辅相成的作用,是实施《操作系统原理》教学的一个重要组成部分。
通过本实验课的实践学习,可以增强本专业的学生对系统实现的认识。
对加深理解和掌握操作系统相关原理有重要帮助。
2、实验要求进一步了解和掌握操作系统原理,提高系统设计的能力。
对每一实验题目,应独立完成,并要求:·上机前,学生必须做好充分的实验准备工作,掌握与实验相关的背景知识,用任一种高级语言编写程序。
·上机时,认真调试,并观察、记录程序运行过程中出现的现象和问题。
·上机后,分析实验结果并写出实验报告。
3、实验报告要求每个实验(包括选做的)均应编写实验报告,学生实验后要写出严谨的、实事求是的、文字通顺的、字迹公整的实验报告。
实验报告应包括以下内容:(1)实验题目(2)实验目的(3)实验内容●程序中使用的数据结构及符号说明●流程图●源程序清单并附上注释(4)实验结果及分析●运行结果(必须是上面程序清单所对应输出的结果)●对运行情况所作的分析以及本次调试程序所取得的经验。
如果程序未能通过,应分析其原因。
二、实验内容实验一熟悉使用计算机系统一、实验名称:熟悉使用计算机系统二、实验目的与要求通过对Windows操作系统的使用,熟悉Windows操作系统中的基本概念,如单用户、多任务、进程和文件等,熟悉Windows中命令行方式下常用命令的使用方法;进一步熟悉TC语言与开发环境,为以后的实验打好基础。
三、实验内容1.开机后,熟悉Windows的界面(桌面、任务栏、开始按钮<点击后出现“开始”菜单>、我的电脑图标、回收站、我的文档)。
操作系统试验指导书

操作系统实验指导书实验1 存储管理1、实验目的存储管理的主要功能之一是合理地分配空间。
请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。
2、实验内容(1)通过随机数产生一个指令序列,共320条指令。
指令的地址按下述原则生成:①50%的指令是顺序执行的;②50%的指令是均匀分布在前地址部分;③50%的指令是均匀分布在后地址部分。
具体的实施方法是:①在 [0,319] 的指令之间随即选取一起点m;②顺序执行一条指令,即执行地址为m+1的指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m′;④顺序执行一条指令,其地址为 m′+ 1;⑤在后地址[m′+ 2,319]中随机选取一条指令并执行;⑥重复上述步骤①-⑤,直到执行320次指令。
(2)将指令序列变换为页地址流设:①页面大小为1k;②用户内存容量为4页到32页;③用户虚存容量为32k。
在用户虚存中,按每k存放10条指令排在虚存地址,即320条指令在虚存中的存放方式为:第0条-第9条指令为第0页(对应虚存地址为[0,9]);第10条-第19条指令为第一页(对应虚存地址为[10,19]);……第310条~第319条指令为第31页(对应虚地址为[310,319])。
按以上方式,用户指令可组成32页。
(3)计算并输出下述各种算法在不同内存容量下的命中率。
①先进先出的算法(FIFO);②最近最少使用算法(LRR);③最佳淘汰算法(OPT)先淘汰最不常用的页地址;④最少访问页面算法(LFR);⑤最近最不经常使用算法(NUR)。
其中③和④为选择内容。
命中率=1-页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。
3、随机数产生办法,Linux或UNIX系统提供函数strand()和rand(),分别进行初始化和产生随机数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <stdio.h>
main()
{
int p1,p2,i;
while((p1=fork())= =-1);
if(p1= =0)
for(i=0;i<50;i++)
printf(“child %d\n”,i);
else
{
while((p2=fork())= =-1)
if(p2= =0)
exit(0);
}
else
{
printf(“parent run!\n”);
signal(SIGINT,intdelete);
waitpid(-1,&exitpid,0);
printf(“parent process is killed!\n”);
exit(0);
}
}
}
【执行结果】
同学自己得到实验结果。
if(p2>0)
{
Printf(“parentrun!\n”);
Printf(“p1=%d\n”,p1);
Printf(“p2=%d\n”,p2);
wait_mark=1;
getchar();
kill(p1,16);/*向p1发软中断信号16*/
kill(p1,17);/*向p2发软中断信号17*/
#includede <signal.h>
void waiting(),stop();
int wait_mark;
main()
{
int p1,p2;
while((p1=fork())= =-1);/*创建进程p1*/
if(p1>0)
{
while((p2=fork())= =-1); /*创建进程p2*/
exit(0); /*父进程终止*/
}
else
{
printf(“p2 run!\n”);
wait_mark=1;
signal(17,stop); /*接收父进程发来的软中断信号17,并转stop*/
waiting();
lockf(stdout,1,0);/*标准输出加锁*/
printf(“child process 2 is killed by parent!\n”);
【分析原因】
同学自己分析产生该实验结果的原因。
(二)实验内容
设计并运行一个简单的SPOOLing系统来模拟实际的SPOOLing输入/输出过程,以掌握这种以空间换时间的技术。要求将SPOOLing输入/输出处理程序编成一个独立的进程模块并与其他请求输入/输出的进程并发运行。SPOOLing进程负责把从输入设备输入的信息送到外存输入井中,或把外存输出井中的信息送到打印机等输出设备上输出。其余进程只要求编写输入/输出部分的程序。要求定义实施算法的相关数据结构,实现设备分配和SPOOLing算法。
lockf(stdout,0,0);/*标准输出解锁*/
exit(0); /*子进程p2终止*/
}
}
else
{
printf(“p1 run!\n”);
wait_mark=1;
signal(16,stop); /*接收父进程发来的软中断信号16,并转stop*/
waiting();
lockf(stdout,1,0); /*标准输出加锁*/
【程序】
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
int pid1,pid2;
int endflag=0,pf1=0,pf2=0;
void intdelete()
{
kill(pid1,16);
printf(“child process 1 is killed by parent!\n”);
lockf(stdout,0,0); /*标准输出解锁*/
exit(0); /*子进程p1终止*/
}
}
void waiting()
{
printf(“waiting begin!\n”);
while(wait_mark!=0);
child process 1 is killed by parent!
child process 2 is killed by parent!
父进程等待两个子进程终止后,输出以下信息后终止:
parent process is killed!
【程序】
#include <sys/types.h>
#include <unistd.h>
《
一、基本信息
课程编码
020213008
课程学时
56
课程类别
学科基础课程
实验总学时
10
开出学期
5
开出单位
计算机系
适用专业
计算机科学与技术、软件工程
二、实验安排
序号
实验项目
实验学时
每组人数
实验类型
开出要求
1
实验一进程管理
4
1
验证
必做
2
实验二SPOOLing技术实现
6
1
设计
必做
三、实验目的、内容与要求
实验一进程管理
每个实验考核:实验预习占30%,实验能力和效果占30%,实验报告占40%。
五、建议教材与教学参考书
1.课程教材
[1] 张尧学. 计算机操作系统教程. 第三版. 北京:清华大学出版社. 2006
[2]赵俊生.操作系统实验指导书.自编.2008
2.教学参考书
[1]汤小丹.计算机操作系统.第三版.西安:西安电子科技大学出版社.2008
#include <unistd.h>
main()
{
int p1,p2,i;
while((p1=fork())= =-1);
if(p1= =0)
{
lockf(1,1,0);/*加锁*/
for(i=0;i<50;i++)
printf(“child %d\n”,i);
lockf(1,0,0);/*解锁*/
(三)实验要求
1.掌握SPOOLing技术的实现;
2.根据实验内容,在Linux平台上用C语言编程实现,上机调试运行得出实验结果;
3.写出预习报告和实验报告。
四、考核方式
实验成绩占课程总成绩的比重为10%。
考核方式根据实验课考勤、课前预习情况、课上实验能力、原型系统效果验收与实验报告的完成情况综合评分。
lockf(1,0,0);
}
}
}
【执行结果】
同学自己得到实验结果。
【分析原因】
同学自己分析多次执行产生不同实验结果的原因。
3.软中断通信
【任务1】
编制一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止:
for(i=0;i<50;i++)
printf(“son %d\n”,i);
else
for(i=0;i<50;i++)
printf(“daughter %d\n”,i);
}
}
【执行结果】
同学自己得到实验结果。
【分析原因】
同学自己分析多次执行产生不同实验结果的原因。
【程序2】
#include <stdio.h>
kill(pid2,17);
endflag=1;
}
void int1()
{
printf(“child process 1 is killed by parent!”);
exit(0);
}
void int2()
{
printf(“child process 2 is killed by parent!”);
if(p2= =0)/*子进程p2创建成功*/
putchar(‘c’);
else
putchar(‘a’); /*父进程执行*/
}
}
【执行结果】
同学自己得到实验结果。
【分析原因】
同学自己分析多次执行产生不同实验结果的原因。
2.进程的控制
【任务】
修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。如果在程序中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
[2]徐虹.操作系统实验指导.北京:清华大学出版社.2004
[3]屠祁.操作系统基础.第三版.北京:清华大学出版社.2000
[4]冯耀霖.操作系统.西安:西安电子科技大学出版社.2001
[5]左万历.计算机操作系统教程.第二版.北京:高等教育出版社.2004
六、编制说明
编制者:系统软件课程组组长:寿永熙
exit(0);
}
main()
{
int exitpid;
signal(SIGINT,SIG_IGN);
signal(SIGQUIT,SIG_IGN);
while((pid1=fork())= =-1);
if(pid1= =0)
{
printf(“process 1 run!\n”);
signal(SIGUSR1,int1);