操作系统实验指导书
操作系统是一门理论性和时间性都很强的课程。要学好操作系统的设计原理,除了听课、看书、做习题外,最好的方法就是在实践中进行,包括使用操作系统、阅读和分析已有操作系统的源代码、自己设计小型系统/模块或模拟算法等。
本教材安排的实验内容按深度可分为五个层次,即:使用级、观察级、系统管理级、源码阅读级和实现级。
1)使用级:是指如何使用操作系统,包括对命令(以及菜单和shell)、系统调用和系统文件的使用。
2)观察级:是指通过使用级的接口,从外部观察操作系统的内部工作过程和结构。
3)系统管理级:是指系统或设备的安装、配置和性能调整。
4)源码阅读级:是指对现有操作系统部分内核源代码的阅读。
5)实现级:是指编程模拟实现操作系统某些功能模块。
实验的操作平台是Red Hat Linux 9.0Windows 2000 Professional,其中前者是主要的实验平台,因为源码阅读级等实验都是在Linux平台上进行的,当然,在Linux上进行的实验基本上也都可在UNIX平台上直接进行。读者可根据自己的需要以及实验条件等选择相应的实验内容。
  1.使用级实验
实验1 安装Linux操作系统
一.实验目的
在供实验的微机上安装Linux操作系统,后续实验都将在此环境上进行。通过实验,要求:
1.了解硬件资源要求。
2.学会安装Linux系统。
3.学会启动Linux系统。
4.了解Linux多引导器的配置。
二.实验内容
Linux安装到本地硬盘。
主要安装步骤提示:
1.如果BIOS支持光盘启动,则插入Linux安装光盘,重新启动计算机。
如果从DOS环境启动,则在DOS提示符下执行批处理命令,如autoboot
或者,准备启动软盘,插入并重新启动计算机。
2. 对硬盘分区,留出交换空间和文件系统的空间。
3.按提示分阶段装入系统。
4.配置系统。
实验2 安装Windows 2000操作系统
一.实验目的
通过对Windows 2000 professional的安装操作,了解操作系统应用环境建立的初步过程。
1.掌握Windows操作系统的基本系统设置。
2.了解Windows多操作系统安装配置的方法。
二.实验内容
1.Windows 2000安装到本地硬盘。
注意:若要与Linux并存于同一硬盘上,则宜先安装Windows
2.主要安装步骤与安装Linux相似,在此从略。
注意,按屏幕提示选择合适的文件系统时,建议选择NTFS。输入的管理员密码要记住。
实验3 Linux系统用户接口和编程界面实验
一.实验目的
1.熟悉使用Linux字符界面、窗口系统的常用命令。
2.熟悉运用Linux常用的编程工具。
3.熟悉运用Linux的在线求助系统。
4.掌握在Linuxlinux下gcc编译的四个步骤操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。
二.实验内容
1.熟悉开机后登录Linux系统和退出系统的过程;
2.熟悉Linux字符界面——虚拟终端窗口和shell,以及图形界面——X-Window(gnomeKDE):练习并掌握常用的Linux操作命令,如lscatpsdffindgrepcdmorecprmkillatviccmanhelpcontrol+d/c、等;熟悉常用shell的提示符;熟悉字符窗口与图形界面之间的切换。
3.学习使用Linux的在线求助系统,如manhelp命令等。
4.掌握一种Linux的编辑器,特别是字符界面的vi工具的使用。
5.用vi编辑一个打印“Hello,I am a C program”字串的C语言程序,然后编译并运行它,记下整个过程。熟悉gccgdb等编译器、调试器的使用。
2.系统行为观察级实验
实验4 观察Linux进程的异步并发执行
一.实验目的
1.了解进程与程序的区别,加深对进程概念的理解;
2.掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行;3.了解fork( )系统调用的返回值,掌握用fork()创建进程的方法;
    4.熟悉waitexit等系统调用。
二.实验内容
1.编写一C语言程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子
三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。
2.多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。
3.修改程序,利用nice ( ) 改变各进程的优先级,观察不同情况下进程调度效果的区别。
4.修改程序,在父、子进程中分别使用waitexit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。
    实验5 Linux进程间的通信
一、实验目的
学习如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信,并加深对上述通信机制的理解。
二、实验内容
    1.了解系统调用pipe()msgget()msgsnd()msgrcv()msgctl()shmget()shmat()shmdt()shmctl()的功能和实现过程。
2.编写一C语言程序,使其用管道来实现父子进程间通信。子进程向父进程发送字符串“is sending a message to parent!”;父进程则从管道中读出子进程发来的消息,并将其显示到屏幕上,然后终止。
3.运行该程序,观察、记录并简单分析其运行结果。
实验6 观察内存分配结果
一.实验目的
学习如何利用Linuxmalloc函数动态申请一段内存空间。
二.实验内容
1.了解malloc函数的功能和Linux虚拟内存管理的原理。
2.编写一C语言程序,用malloc函数申请一段存储空间,并在终端上显示起始地址。
3.运行该程序,观察、记录其运行结果,并分析说明结果的地址是否为物理地址。
实验7 观察内存使用情况
一、实验目的
Windows 2000自带的工具观察内存空间的使用情况。
二、实验内容
1.Windows 2000的性能监视器或者任务管理器观察内存工作情况。
2.观察并写出屏幕显示的内容。
    3.系统管理级实验
实验8 Linux中使用优盘
一.实验目的
1.了解mountumount命令的功能;
2.了解Linux设备文件的命名;
3.用上述所了解的内容解决在Linux中使用优盘的问题。
二.实验内容
1.用mount命令把优盘的设备文件安装到/mnt目录(可能需要root用户口令,请勿乱用)。
2.进入/mnt目录,使用优盘(比如,往里拷贝一个文件)。
3.退出/mnt目录,用umount命令把优盘从系统中卸载掉。
4.按ctrl+d组合键,退出超级用户模式。
5.总结在Linux中使用优盘的过程。
实验9 使用Windows 2000的注册表屏蔽桌面上的“回收站“
一.实验目的
1.了解Windows 2000注册表的作用,熟悉注册表编辑器;
2.熟悉Windows 2000注册表中5个主要根键的内容与作用;
3.了解备份注册表的重要性,掌握备份注册表的基本方法;
4.学会通过修改注册表,屏蔽桌面“回收站”图标的方法。
二.实验内容
1.备份注册表(或者打开后导出注册表)。
2.运行regedit命令打开注册表。
3.选择注册表中“HKEY_LOCAL_MACHINE”子窗口(即到此根键),定位到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace”分支,在该分支下有多个子键对应桌面上的某些系统图标。
4.删除键值为Recycle Bin的子键,如子键645FF040-5081-1-1B-9F08-00AA002F954E
5.重新启动计算机。
6.根据备份的注册表内容,恢复注册表中被删除的子键,重新启动计算机。
7.观察两次重启后的情况,总结备份、修改和恢复注册表的一般过程。
4.源代码阅读级实验
这部分实验难度较大,但很有意义,也很有意思,建议学生分组协作完成。
实验10 分析Linux进程调度程序
一.实验目的
1.了解Linux源代码的分布;
2.了解阅读Linux源代码的一般方法;
3.熟悉Linux管理进程用的主要数据结构;
4.通过阅读Linux进程调度有关函数的源代码,理解Linux的进程调度算法及其实现所用的主要数据结构。
二.实验内容
1.通过查阅参考书或者上网资料,熟悉/usr/src/linux(注意:这里最后一级目录名可能是个含具体内核版本号和“linux”字符串的名字)下各子目录的内容,即所含Linux源代码的情况。
2.在概览Linux启动和初始化部分源代码基础上,分析Linux进程调度有关函数的源代码,主要是schedule()函数和goodness()函数,并且要对它们引用的头文件等一并分析。
3.归纳总结出Linux的进程调度算法及其实现所用的主要数据结构。
实验11跟踪系统查文件过程
一.实验目的
1.了解Linux源代码的分布;
2.了解阅读Linux源代码的一般方法;
3.熟悉Linux管理文件用的主要数据结构;
4.通过分析Linux文件系统部分源代码,跟踪系统查文件的过程。
二.实验内容
    1.通过查阅参考书或者上网资料,熟悉/usr/src/linux(注意:这里最后一级目录名可能是个含具体内核版本号和“linux”字符串的名字)下各子目录的内容,即所含Linux源代码的情况。
2.在概览Linux启动和初始化部分源代码基础上,分析Linux虚拟文件系统及EXT3文件系统的部分内核源代码,即其超级块、组描述符、数据块位图、索引节点表、目录项结构及其相关操作的源代码实现,并利用各种可能工具,跟踪、展示Linux文件系统管理模块搜索EXT3文件系统的/usr/include/stdio.h文件的过程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。