操作系统实验指导书

操作系统实验指导书

(Linux版)

广西工学院计算机工程系

2014年01月

前言

操作系统是计算机科学与技术专业(软件工程方向)的一门非常重要的专业课程,操作系统是应用软件与底层硬件的桥梁。通俗的说“只有搞懂了操作系统,才能真正理解计算机”。学好操作系统课程可以提升学生应用计算机解决问题的能力,并获得开发大型复杂软件的经验。

操作系统至关重要,但学好它并不容易。虽然Windows界面友好,方便使用,但是底层运行机制被有效的隐藏,在很多人眼里计算机还是一个黑匣子。在选择教学用操作系统上颇费苦心,目前可用于教学的操作系统有Minix, Nochos, Geekos, JOS,FreeBSD 等,而Linux不仅是开源的,而且资料丰富并拥有大量的应用软件,所有我们选择了Linux作为实验的平台。

本实验指导书参阅了很多网上的优秀资源,在此对提供这些资源的作者,表示感谢。

目录

前言 (2)

1.操作系统实验概述 (4)

1.1 实验平台及工具 (4)

1.2 基本内容 (5)

1.3 考核规则 (5)

2. 系统应用实验项目 (6)

2.2 Linux 应用实验项目2:shell基本命令 (8)

2.3 Linux应用实验项目3: 文件编辑 (10)

2.5Linux 应用实验项目5:文件安全 (16)

2.6 Linux 应用实验项目6: 基本文件处理 (18)

2.7 Linux应用实验项目7:高级文件处理 (21)

2.9 Linux 应用实验项目8:管道与I/O重定向 (23)

2.10Linux 应用实验项目9:进程 (24)

3.系统开发实验项目 (27)

3.1Linux 进程创建 (29)

3.2 进程软中断通信 (34)

3.3 进程管道通信 (37)

1.操作系统实验概述

实践对于操作系统课程是至关重要的,但这种实践决不应该仅仅停留在某些算法的模拟实现上。就算在编程实现了一个完整的“文件系统”,但如果没有和磁盘驱动、高速缓存、内存管理等模块联系在一起,即使编写了大量的代码,也只是实现了某些概念(更像是一个数据结构课程设计),仍然不能控制可实际运行的操作系统。本实验指导书强调在可实际运行的操作系统上的实践。

1.1 实验平台及工具

1. Ubuntu Linux

考虑到实验的可操作性,选择了成熟的Linux版本,具体平台可选择流行的Ubuntu,读作“乌邦图”。Ubuntu也许不是目前最好用的Linux桌面发行版,但它一定是最流行的!它最重要特点是易用,非常的易用。

现在,已经有越来越多的人开始用Ubuntu完全代替Windows,享受更加自由、安全、守法的感觉。Ubuntu的主页是https://www.360docs.net/doc/b64630168.html,/,这里不仅可以免费下载到iso文件,甚至能免费申领一张Ubuntu的安装光盘(https://https://www.360docs.net/doc/b64630168.html,/)。另外国内的雨林木风团队,开发一个基于ubuntu的高仿XP开源系统,界面和Windows XP极为相似(https://www.360docs.net/doc/b64630168.html,/)。

2. GCC编译器

GCC是和Linux一起成长起来的编译器。Linux最初的版本就是由GCC编译的。现在GCC也是在自由软件领域应用最广泛的编译器。所以,我们也选择GCC作为本实验的指定编译器。

3. GDB调试器

GDB调试器是GCC编译器的兄弟。作为自由软件领域几乎是唯一的调试器,它秉承了*nix类操作系统的一贯风格,采用纯命令行操作,较类似dos下的debug。关于它的使用方法请看GDB使用手册。

4.cygwin

cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。要安装网络版的cygwin,可以到https://www.360docs.net/doc/b64630168.html,,点击"Install Cygwin

Now!"。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。

我们把cygwin的作为一个备用工具,可以通过它来练习命令行操作。

1.2 基本内容

本实验分为两个阶段:系统应用实验和系统开发实验。

1.3 考核规则

每次考核,老师会到学生所在的电脑旁,观看项目的运行结果,并进行简单的答辩。

操作系统实验的成绩主要由学生所作的实践工作和取得的实验结果来定,同时辅以学生撰写的实验报告作为部分。因此成绩主要考核三方面的内容:

1.实践工作需要达到一定的量;

2.实验内容要求得到正确、丰富的实验结果;

3.实验报告的撰写情况。其中前两项是考察的重点。

2. 系统应用实验项目

目前入学的计算机专业学生,一开始便使用Windows系统,以至于相当一部分学生连最常用的DOS命令都不知道。终端命令脱去了“视窗”华丽的外衣,它的高效与灵活是计算机系统引入入胜的一个特点。

系统应用实验以Linux系统的使用为主,本实验内容可以和“Linux环境与开发”课程有效衔接,锻炼学生操纵计算机的能力,加深对文件系统的了解。本阶段安排有11个项目,每个项目基本都可以在2-3个学时内做完。

2.1 Linux 应用实验项目1:虚拟机环境下的Linux系统安装

1.安装虚拟机软件

VMWare Workstation v6.5

2.创建虚拟机

选择File | New | New Virtual Machine

选择Custom方式,并进行以下配置:

1.虚拟机的操作系统类型(Guest Operating System)为Linux

2.内存512 MB

3.共享网络连接

4.创建虚拟硬盘,默认大小为8GB,文件名Linux.vmdk,类型IDE 0:0

注意在Advanced按钮界面下选择IDE硬盘仿真,不要使用SCSI硬盘仿真。VMWare缺省选择为SCSI硬盘仿真。

另外,系统自动配置CD-ROM IDE 1:0,USB控制器Present,等等

3.安装Linux

整个安装(及其其后的软件安装),只需要ubuntu 9.1的第一张光盘

1.从光盘启动

2.创建(虚拟)磁盘上的分区时,选择自动创建

3.此后,按照屏幕提示进行安装

2.2 Linux 应用实验项目2:shell基本命令

实验目的:

练习d ata、cal、pwd 等几个常用的L inux 命令。

实验内容:

本实验用到的命令有:date、cal、pwd、write、alias、uptime、man 等

1. 登录你的L inux 系统。

2. 用命令d ate 显示当前的时间,给出显示的结果。

3. 用c al 命令显示下列年份的日历:4、52、1752、1952、2005、2006

a) 给出你显示以上年份年历的命令

b) 1752 年有几天,为什么?提示:在因特网上查找答案

4. 用p wd 显示你的主目录(home directory)名字,给出p wd 显示的结果。

5. 使用w rite 命令和已经登录系统的一个朋友进行通信。

6. 使用a lias 命令显示系统中的命令的别名,给出显示的结果。

7. 使用u ptime 命令判断系统已启动运行的时间和当前系统中有多少登录用户,

给出显示的结果。

8. 通过因特网或L inux 的m an 命令得到下面的s hell 命令、系统调用和库函数功

能描述及每个命令使用例子:

9. 退出系统

2.3 Linux应用实验项目3: 文件编辑

实验目的:

1. 练习用p ico 编辑器编辑文本文件;

2. 练习用v i 编辑器编辑文本文件;

3. 练习用e macs 编辑器编辑文本文件;

实验内容:

Linux 是文本驱动(text-driven)的操作系统,Linux 常用的编辑器有:

●文本界面下的编辑器

◆vi : 最令U NIX 类操作系统初学者裹足不前的e ditor,然而只要你

习惯于操作,你会觉得它比任何的e ditor 都好用,且功能强大。

◆pico 或nano :一种风格很像M icrosoft DOS 的E DIT 的一种文本

编辑器。一些发行版没有安装。

◆emacs:linux 编辑器,功能强大的全屏幕编辑器。

◆命令行方式建议使用e macs 或v i

●图形界面的编辑器

◆emacs 编程编辑器

◆gedit 全屏幕文本编辑程序

1. 登录你的L inux 系统。

2. pico 文本编辑器的使用:

a. 在s hell 提示符下,输入p ico 并按键;

b. 在p ico 的文本区,将光标置于首行并输入文字:

This is txet that I have enteres on a lioe in the pico editor.

键和方向键来修正拼写错误;

c. 按三次键;

d. 输入:This is a line of text three lines down from the first lin

e.

e. 按键;

f. 在F ile Name To Write 提示后输入l inespaced,并按键;

g. 按下键回到s hell 提示符下;

h. 在s hell 提示符下输入m ore linespaced 并按键。

以上步骤完成后,屏幕上看到了什么?

3. 运行p ico 并创建带有3行文本的一个文件。然后,使用p ico 的剪切和粘贴功

能来复制这3行,使该文件包含9行文本。以p rob3 为文件名保存该文件。

4. vi 编辑器的使用:

a. 在s hell 提示符下,输入v i firscrip 并按键。vi 的界面将出现在显

示屏上;

b. 输入a,输入l s –la,并按键;

c. 输入w ho,并按键;

d. 输入p wd,再按键。这时屏幕将如下图所示:

ls –la

who

pwd

~

~

~

~

~

e. 输入:wq,并按键;

f. 在s hell 提示符下,输入b ash firscrip 并按键;

g. 观察结果。当前的工作目录中有多少个文件?他们的名称和大小?还有

谁在使用你的计算机系统?当前的工作目录是什么?

4. 在系统中运行v i 并创建一个b ash shell 脚本文件,它包含下面行:

echo $SHELL

chsh –l

然后以s heller 为名保存该文件并退出v i。在s hell 提示符下,输入b ash sheller 并按键。屏幕上给出了当前的shell 和一个linux 文件,该文件的内容包含系统中可用的其他s hell。给出运行的结果。

5. 登录你的L inux 系统,运行e macs 程序,编辑一个新文件,使用-nw 命令选项。

a. 在文件的第一行输入你的名字;

b. 在文件的第二行输入“"The emacs editor is the most complex

and customizable of the Linux text editors".”

6. 退出系统

2.4 Linux应用实验项目4:文件与文件系统结构

实验目的:

1. 学习如何创建一个L inux 目录的层次结构;

2. 学习有关绝对路径和相对路径;

3. 学习有关主目录(home directory)、登录目录、工作目录(当前目录);

4. 学习如何有效导航L inux 目录层次;

5. 学习有关文件内容类型和隐含文件;

6. 学习有关文件属性。

实验内容:

Linux 文件系统的结构如下:

Linux 系统主要目录说明:

/bin:也称二进制(binary)目录,包含了那些供系统管理员和普通用户使用的重要的L inux 命令的可执行文件。一些常用的命令有:bash、cat、chmod、cp、date、echo、kill、ln、mail、mkdir、more、mv、ps、pwd、rm、rmdir、sh、stty、su、tcsh、uname 和v i。一些用于系统恢复的命令如:tar、gzip、gunzip 和z cat。还有一些网络命令如:domainname、hostname、netstat 和p ing。目录/usr/bin 下存放了大部分的用户命令。

?/boot :在这个目录下存放系统启动时要用到的程序。包括L inux 内核的二进制映像。内核文件名是v mlinux 加上版本和发布信息。

?/dev:dev 是设备(device)的英文缩写。在这个目录中包含了所有l inux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。

?/etc :etc 这个目录是l inux 系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。我们要用到的网络配置文件,文件系统,x 系统配置文件,设备配置信息,设置用户信息等都在这个目录下。?/sbin :这个目录是用来存放系统管理员的系统管理程序。

?/home :存放用户的主目录。如果建立一个用户,用户名是“ji”,那么在/home 目录下就有一个对应的/home/ji 路径,用来存放用户的主目录。

?/lib :lib 是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。

?/mnt :这个目录主要用来临时装载文件系统,系统管理员运行mount 命令完成装载工作。

?/opt:该目录用来安附加软件包

?/proc :目录存放了进程和系统得信息,可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。

?/root :根(root)用户的主目录。如果用户是以超级用户的身份登录的,这个就是超级用户的主目录。

?/sbin,/usr/sbin,/usr/root/sbin:存放了系统管理的工具、应用软件和通用的r oot 用户权限的命令。

?/tmp :用来存放不同程序执行时产生的临时文件。

?/usr :是linux 文件系统中最大的目录之一。它存放了可以在不同主机间共享的只读数据。

?/lost+found : 目录中存放所有和其他目录没有关联的的文件,这些文件可以用Linux 工具f sck 查找得到。

?/sbin : /usr/sbin : /usr/local/sbin : Contains system administration command files that can only be run by the root user.

?/var : 用来存放易变的数据,这些数据在系统运行过程中会不断变化。

/var/spool/mail 存放收到的电子邮件,/var/log 存放系统的日志。

本实验用到的命令有:PATH, cd, echo, file, ls, mkdir , pwd , rmdir 等。

1. 登录到你的L inux 系统

2. 在你的主目录下建立如下图所示的目录树。给出完成这项工作的所有会

话。(会话是指你命令的输入和结果的输出,你提交的作业要包含这些内

容)

3. 显示你登录目录的绝对路径,给出这个会话过程。。

4. 在系统中,执行c d professional/courses 命令,回答下列问题:

a. 你的主目录的绝对路径是什么?给出获得该绝对路径的命令及

命令输出。

b. acm 目录的绝对路径是什么?

c. 给出a cm 目录的两个相对路径。

d. 执行c d major/cs381/labs 命令。然后执行一个命令显示当前目录的

绝对路径,给出这个会话过程。

e. 给出获得你的主目录三个不同的命令。

5. 改变目录到/usr。在这个目录下有多少个文件和目录,他们的文件内容类

型是什么?

6. 在/usr/bin 目录下有多少个普通文件、目录文件和链接文件?如何得到

这个答案?

7. 你系统中的L inux 内核映像文件在那个目录中?给出这个可执行内核

映像文件的名称和文件内容类型。

8. Linux 系统规定,隐含文件是首字符为”.”的文件,如.profile。在你的系统

中查找.profile 和.login 文件,他们在什么地方,给出这两个文件部分内容。

9. 显示你的主目录下的所有隐含文件的文件名。给出你的会话过程。

10. 下面这些目录的i node 号是多少:root、你的主目录(home directory)、

~/temp、~/professional、和~/personal? 写出会话过程。注:符号“~”为主目录

11. 在l abs 目录下,用文本编辑器创建一个名字为l ab1 的文件,文件的内容为:

“Use a text editor to create a file called lab1 under the labs directory in your

directory hierarchy. The file should contain the text of this problem. ”。回答下列问题:

a. lab1 文件的类型,用L inux 命令回答这个问题,给出会话过程。

b. lab1 文件内容的类型,用L inux 命令回答这个问题,给出会话过程。

12. 退出系统。

2.5Linux 应用实验项目5:文件安全

实验目的:

1. 学习L inux 的文件访问权限,用户的类型和文件访问权限的类型;

2. 学习如何确定一个文件的访问权限;

3. 学习如何设置和改变一个文件的访问权限;

4. 学习如何在文件或目录的创建时设置缺省访问权限。

实验内容:

在L inux 系统中,一个文件的用户类型有三种:所有者(owner users )、组(group users)、其他人(Other users )

Linux 系统中,文件有三种访问权限:读(r)--允许读某个文件;写(w) --允许写、修改和删除某个文件;执行(x) --允许执行(run)某个文件。

对于一个目录而言:读(r) --允许用户列出目录的内容,使用ls 命令;写(w)--允许用户在目录下建立新文件,删除子目录和文件;执行(x)--允许用户搜索这个目录,用c d 命令。

使用ls -l 或l s -ld 命令显示文件的访问权限:

本实验使用的命令有:finger、cd、mkdir、ls、chmod、touch、umask 等

1. 登录到你的L inux 系统

2. 根据下列的要求,写出得到这些信息的会话过程:

a. 你的用户名;

b. 你的用户I D;

c. 你的组I D 和组名字;

d. 在你同一组中的其他用户名。

注:在/etc/passwd 和/etc/group 文件中查到部分信息,要理解这两个文件的格式。

3. 系统管理员给你的主目录设置的权限是什么?使用什么命令来得到这个

答案,给出你的会话过程。

6.在你的主目录中的t emp、professional 和p ersonal 三个子目录,设置使自己(owner)拥有读、写、执行3种访问权限,设置其它用户只有读和执行权限。在~/tmp 目录下创建名为d1、d2 和d3 的目录。在d1 目录下,用t ouch 命令创建一个名为f1 的空文件。给出d1、d2、d3 和f1 的访问权限。给出完成这些工作的会话。

7.设置当前目录为你的主目录,设置~/temp 仅执行权限,然后执行l s –ld temp,再执行l s –l temp 命令。结果如何?成功执行l s –l temp 命令需要的最小权限是什么?请设置t emp 目录的最小权限,然后再一次执行l s –l temp 命令。给出这个过程的会话。

注:登录系统不能使用r oot 用户

8. 用u mask 命令显示当前的掩码。把你的主目录设置为当前目录,然后在

~/temp/d1 目录下,创建d11 目录,用t ouch 命令创建f2 空文件。在t emp 目录下用编辑器创建h ello.c 文件,该文件的内容如下:

#include

main(void)

{

printf (“Hello, world!\n”);

}

再运行命令g cc –o greeting hello.c ,生成了可执行文件g reeting。长列表显示f2、 hello.c、greeting 和d1 文件访问权限。

9. 退出系统

2.6 Linux 应用实验项目6: 基本文件处理

实验目的:

1. 学会如何显示文本文件的内容;

2. 学会如何复制、追加、移动和删除;

3. 学会如何合并文件;

4. 学会如何确定文件的大小;

5. 学会如何比较文本文件;

6. 学会使用各种打印命令。

实验内容:

实验用到的命令:|、man、vi、cat、nl、head、tail、ls、cp、wc、lpr 等

1. 登录到你的L inux 系统

2. 创建几个大小不等的文本文件,供本实验和后面几个实验用。用m an cat >

mediumFile 命令创建中等大小的文件;用m an bash > largeFile 命令创建一个大文件;在创建一个名字为s mallFile 关于学生数据的小文件,文件每行内容(蓝色字体部分)如下,注意字段之间用t ab 符隔开:

FirstName LastName Major GPA Email Phone

Here is the minimum amount of data that you will have in this file.

John Doe ECE 3.54doe@https://www.360docs.net/doc/b64630168.html,111.222.3333

James Davis ECE 3.71davis@https://www.360docs.net/doc/b64630168.html,111.222.1111

Al Davis CS 2.63davis@https://www.360docs.net/doc/b64630168.html,111.222.2222

Ahmad Rashid MBA 3.04ahmad@https://www.360docs.net/doc/b64630168.html,111.222.4444

Sam Chu ECE 3.68chu@https://www.360docs.net/doc/b64630168.html,111.222.5555

Arun Roy SS 3.86roy@https://www.360docs.net/doc/b64630168.html,111.222.8888

Rick Marsh CS 2.34marsh@https://www.360docs.net/doc/b64630168.html,111.222.6666

James Adam CS 2.77jadam@https://www.360docs.net/doc/b64630168.html,111.222.7777

Art Pohm ECE 4.00pohm@https://www.360docs.net/doc/b64630168.html,111.222.9999

John Clark ECE 2.68clark@https://www.360docs.net/doc/b64630168.html,111.111.5555

Nabeel Ali EE 3.56ali@https://www.360docs.net/doc/b64630168.html,111.111.8888

Tom Nelson ECE 3.81nelson@https://www.360docs.net/doc/b64630168.html,111.111.6666

Pat King SS 3.77king@https://www.360docs.net/doc/b64630168.html,111.111.7777

Jake Zulu CS 3.00zulu@https://www.360docs.net/doc/b64630168.html,111.111.9999

John Lee EE 3.64jlee@https://www.360docs.net/doc/b64630168.html,111.111.2222

Sunil Raj ECE 3.86raj@https://www.360docs.net/doc/b64630168.html,111.111.3333

Charles Right EECS 3.31right@https://www.360docs.net/doc/b64630168.html,111.111.4444

Diane Rover ECE 3.87rover@https://www.360docs.net/doc/b64630168.html,111.111.5555

Aziz Inan EECS 3.75ainan@https://www.360docs.net/doc/b64630168.html,111.111.1111 3. 使用cat 和nl 命令显示smallFile 文件内容并显示行号。两个命令的输出应

该完全一样。给出完成这项任务的命令。

4. 用more 命令显示smallFile 和mediumFile 文件内容,每屏显示18 行。给

出你的命令(显示的内容不需要)。

5. 显示largeFile 文件的开始12 行内容,显示s mallFile 文件的最后5行内容,

要用什么命令?哪个命令能显示smallFile 文件从第6 行开始到结束,且逆序显示?给出你的会话。

6. 本实验目的观察使用带-f 选项的t ail 命令。复制s mallFile 文件,文件名为

dataFile,创建一个文件名为c h7.c 的c语言文件,内容如下:

#include

main()

{

int i; i = 0;

sleep(10);

while (i < 5)

{ system("date"

); sleep(5);

i++;

}

while (1) {

system("date");

sleep(10);

}

}

现在依次运行下列三个命令。第一个命令生成一个c 语言的可执行文件,文件名为g enerate;第二个命令是每隔5秒和10 秒把d ate 命令的输出追加到dataFile 文件中,这个命令为后台执行,注意后台执行的命令尾部加上&字符;最后一个命令t ail –f dataFile,显示d ataFile 文件的当前内容和新追加的数据:

gcc ch9.c –o generate

generate >> dataFile &

tail –f dataFile

在输入t ail -f 命令1分钟左右后,按终止t ail 程序。用kill -9 pid 命令终止g enerate 后台进程的执行。

注:pid 是执行g enerate 程序的进程号;使用g enerate >> dataFile &命令后,屏幕打印后台进程作业号和进程号,其中第一个字段方括号内的数字为作业号,第二个数字为进程号;也可以用k ill -9 %job 终止 generate 后台进程,job 为作业号。

最后用t ail dataFile 命令显示文件追加的内容。给出这些过程的你的会话。

7. 在前面你已把d ataFile 文件复制为s mallFile 文件的拷贝。用l s –l 命令观察这

两个文件的修改时间是否一样。它们是不同的,dataFile 文件的修改时间应该是这个文件的创建时间。什么命令能够保留这个修改时间不变呢?这两个文件的i node 号是多少?

再把文件名d ataFile 改成(移动)newDataFile,文件n ewDataFile 的i node 多少?与d ataFile 文件的i node 号是否相同,若相同,为什么?然后再把文件n ewDataFile 移动到/tmp 目录下,文件/tmp/newDataFile 的inode 号是多少?比较结果如何,为什么?

给出完成上述工作的会话过程。

8. 在屏幕上显示文件s mallFile、mediumFile、largeFile 和/tmp/newDataFile 的字

节数、字数和行数。smallFile 和/tmp/newDataFile 文件应该是相同的。你能用其它命令给出这些文件的字节数的大小吗?什么命令。给出会话过程。

9. 打印s mallFile文件的两个备份,且带行号和头部(标题)信息。用什么命令?

你能用其它命令完成这项工作吗(注:可使用管道命令)?给出会话过程。10. 退出系统.

相关文档
最新文档