西北工业大学计算机学院计算机操作系统实验指导张羽谷建华王海鹏编2009-3一、操作系统课内实验目的:计算机操作系统课内实验作为操作系统课堂理论教学的辅助部分是加强计算机科学与技术专业实践的重要环节之一。
由于操作系统自身的庞大和复杂,造成学生在学过操作系统课程后,总有一种“雾里看花”的感觉,即只是支离破碎的了解了一些操作系统局部知识,而很难将这些知识融会贯通,对于运用操作系统知识从事设计和应用更是无从谈起。
本实验课的目的就是力图解决上述问题。
二、操作系统实验整体安排和要求:1.课内实验将按以下三个方面进行:对常用的系统调用命令的使用方式有一个较熟练的掌握;对典型操作系统的编程基础知识和机制进行学习和了解;运用一些重要的系统调用编写程序模块,对操作系统中的一些重要概念和典型算法进行实现或验证。
实验内容如下:实验一 Linux操作系统的安装及使用实验二 Linux Shell程序实验三 vi编辑器的学习和使用实验四 观察进程的并发性实验五 构造进程家族树实验六 理解进程的独立空间实验七 请求分页存储管理设计操作系统的课内实验共7个,根据具体上机条件和学时选做2~3个,其中实验2、3中必选1个,实验4~6必选,实验7可选做。
由于所有实验均在Linux环境下工作,用C语言编程,因此学生要具备一定的C语言编程能力,同时要求在充分预习实验内容中相关知识后,再进行实验的上机环节。
另外由于操作系统实验有些题目具有一定的难度和规模,建议采用分组方式进行。
2.操作系统课内实验考核:预习报告30%,上机实验35%,实验报告35%。
3.预习报告内容包括两部分,一是对相关知识学习的书面总结(知识综述和参考文献);二是对本次实验的分析报告(主要针对涉及算法的题目)。
实验报告内容主要包括本次实验的上机结果(数据结构、程序框图、源程序文档和运行情况)以及实验中难点分析和心得。
4.实验软、硬件环境要求:80386DX以上兼容机,可以使用Intel、AMD、CRIX处理器,对80386或80486SX的CPU建议具有数字协处理器。
主板可以是支持ISA、ESA或PCI总线结构。
主存最小要求2MB,建议64MB以上。
硬盘支持IDE、SCSI接口的控制器,容量最小为300MB,建议2GB以上。
显示器可以使用VGA、EGA、CGA或SUPER VGA 的显示卡或显示器。
网卡可以使用各种通用的以太网及局域网卡。
软件工具:PQMagic。
操作系统:RedHat6.1以上。
实验一Linux操作系统的安装及使用1.实验目的学习Linux操作系统的安装,体会操作系统为了方便用户,不断改进的安装过程;熟悉Linux系统的登录和退出,并熟悉它常用命令的操作使用方法。
2.实验预习内容Unix/Linux操作系统的发展历程,Linux操作系统的主要发行版本;对目前Linux 的主流论坛的了解;Linux中X-Windows机制;认真阅读有关Linux安装资料,了解磁盘分区的方式,掌握磁盘分区工具软件PQMagic或其他类似功能的软件,了解Linux对硬件(CPU、内存和硬盘空间)的要求、安装过程和LILO的安装;进入和退出系统的命令,特别是进入X-Windows图形界面,有关文件系统中的目录创建、修改和删除,有关文件系统中的文件建立、删除、编辑、查询、归档和压缩等和有关系统管理等。
3.实验内容及步骤1)Linux操作系统的安装(1)收集硬件配置资料(硬盘空间大小、显卡类型、显存大小、网卡类型等基本信息);(2)对于要安装Linux而又没有预留出自由空间,可利用Linux光盘自带的分区工具来拆分基本分区;也可以利用DOS下的调整分区程序PQMagic来拆分基本分区或逻辑分区,并将PQMagic安装在另一个分区中;(3)Linux对不同介质的安装方法(直接从光盘引导完成安装,要求CMOS和光盘都能支持光盘引导;从硬盘完成安装,可事先将Linux软件包拷入硬盘的一个分区,将Linux安装到硬盘的另一个分区;网络安装,通过网络文件系统NFS或FTP 并安装到硬盘。
);(4)使用FDISK添加Linux主分区和交换分区(swap);(5)格式化分区;(6)选择安装内容;(7)设置root用户的口令;(8)设置网卡的中断向量号、I/O地址、DNS和网络的子网掩码等;(9)安装LILO,实现操作系统的双引导。
2)Linux操作系统的使用(1)登录、退出和关闭系统;(2)man命令的使用;(3)–help命令的使用;(4)dir(ls)命令的使用;(5)less(more)分页浏览文件命令的使用;(6)touch命令的使用;(7)whatis命令的使用;(8)apropos命令的使用;(9)locate命令的使用;(10)whereis命令的使用;(11)find命令的使用;(12)sort命令的使用;(13)tar命令的使用;(14)解压缩归档文件命令的使用;(15)mc程序的使用;(16)cd改变目录;(17)pwd查看当前目录;(18)mkdir创建新目录;(19)cp文件拷贝;(20)cat在屏幕上显示文件内容3)C语言程序的编译Linux环境下C语言使用gcc编译器对程序进行编译。
如果我们编写的程序的文件名为myprogram.c。
使用如下命令对该程序编译:<CR>表示回车gcc myprogram.c –o myprogram<CR>如果编译成功,myprogram就是编译后的可执行文件名。
如果不添加-o选项,则会产生一个名为a.out可执行文件。
使用如下命令运行程序:myprogram<CR> 或 ./ myprogram<CR>如果程序中使用了创建线程的原语pthread*等,编译需要-lpthread选项。
例如:gcc myprogram1.c –o myprogram1 -lpthread <CR>4.实验总结(1)总结通过几种途径安装Linux操作系统的经验;(2)Linux操作系统的几种启动方法。
(3)整理出以上命令的使用手册(功能、命令格式、常用参数说明以及命令使用实例)。
实验二 Linux Shell程序1.实验目的了解Linux Shell和用户Shell定制、X-Window配置以及用C语言编写一个简单的Shell程序。
2.实验预习内容认真学习Linux Shell的基础知识;了解Shell与内核的关系;学习X-Windows机制、一些重要的系统调用。
了解管道和进程组、会话和进程组、会话和作业控制的内容。
重要系统调用如下:(1)pid_t fork(void):创建一个新的进程。
其中返回int取值意义为:0--创建子进程,从子进程返回的id值;大于0--从父进程返回的子进程id值;-1--创建失败。
(2)int execvp(const char *file, char * const argv[]):加载一个可执行程序到调用进程的地址空间,然后执行这个程序。
如果成功,它就会覆盖当前运行的进程内容。
有若干个类似的exec系统调用。
(3)int wait(int *stat_loc):如果有退出的子进程,则返回退出的子进程的状态;如果没有任何子进程在运行,则返回错误。
如果当前有子进程正在运行,则函数会一直阻塞直到一个子进程退出。
(4)pid_t waitpaid(pid_t pid, int *stat_loc, int options):类似于函数wait,但允许用户等待某个进程组的特定进程,并可以设置等待选项。
(5)int tcsetpgrp(int fildes, pid_t pgid_id):将前台进程组ID设置为pgid_id,files是与控制终端相联系的文件描述符。
终端通常指标准输入、标准输出和标准错误输出(文件描述符为0、1、2)。
(6)int setpgid(pid_t pid, pid_t pgid):把pid进程的进程组ID设置为pgid。
(7)int dup2(int fildes, int fildes2):把fildes文件描述符复制到fildes2。
如果files2已经打开,则先将其关闭,然后进行复制,使fildes和fildes2指向同一文件。
(8)int pipe(int fildes[2]):创建一个管道,把管道的读和写文件描述符放到数组fildes中。
3.实验内容及步骤(1)对默认的linux Shell ——bash Shell和ksh、tcsh以及zsh使用和设置;(2)X-Window配置及应用(X-Window配置的前提是在安装Linux时先安装好X-Window服务器,然后在管理员提示符“#”下运行Xconfiguator命令。
在X-Window下的nxterm命令行窗口里,进行窗口内字体大小设置和进行复制和粘贴。
);(3)实现一个简单的命令解释器,即Linux中的Shell程序。
要求其设计类似目前流行的Shell解释程序,但不需要具备太复杂的功能。
所设计的Shell程序应当具备如下一些重要特征:能够执行外部程序命令,命令可带参数;能够执行fg、bg、cd、history、exit等内部命令;使用管道和输入输出重定向;支持前后台作业,提供作业控制功能,包括打印作业清单,改变当前运行作业的前台/后台状态,以及控制作业的挂起、中止和继续运行;另外需要使用make工具建立工程,使用gdb进行程序调试。
4.实验总结(1)比较至少两种Shell的特点;(2)Shell环境变量对系统安全和用户使用的影响,以PATH alias举例说明;(3)说明X-Window的工作机制;(4)提供清晰、详细的Shell程序设计文档和源程序。
实验三vi编辑器的学习和使用1.实验目的通过对vi编辑器的学习和使用,熟悉Unix类环境下的正文编辑程序及其作用。
2. 实验预习内容认真学习Linux的正文编辑的相关基础知识,了解其编辑方式、插入方式和命令方式。
3.实验内容及步骤使用“ESC”键在命令模式和插入模式之间进行切换。
各项操作命令如下:(1)进入插入模式a追加,I插入,o在当前行下插入一空行;A在行尾追加,I从行首插入,0在当前行上插入一空行。
(2)复制正文yy复制当前行,nyy复制n行,yw复制一个词,y)复制从光标至句末的所有正文;y}复制从光标至句首的所有正文,nyx复制类型为x。
(3)删除正文x删除一个字符,dd删除当前行,ndd删除n行,dw删除一个单词(从光标处开始),nx删除n个字符,^gndd删除n行正文到缓冲区g中,^Gndd删除n行正文追加到缓冲区g中,c$从当前光标处删至行尾,d^从当前光标处删至行首,ndw(或dnw)删除n个词。