《操作系统原理及应用》实验指导书
操作系统原理实验指导书
杨宏雨
2010-12-30
0
《操作系统原理及应用》实验指导书
目录
前言...........................................................................................................................2
实验一 Linux 环境实验(一):linux 使用环境................................................. 3
实验一 Linux 环境实验(二):Linux 下 C 编程环境...................................... 6
实验二 进程观察实验(一):多进程环境.......................................................12
实验二 进程观察实验(二):进程的控制.......................................................22
实验三 进程的同步互斥实验.............................................................................28
实验四 生产者消费者实验(一):用信号量实现 PV 操作............................35
实验四 生产者消费者实验(二):共享存储区的同步互斥...........................42
实验五 作业调度实验.........................................................................................50
实验六 存储管理实验(一):内存管理.............................................................4
实验六 存储管理实验(二):内存分配与回收模拟.........................................7
实验七 设备管理实验(一):设备管理...........................................................13
实验七 设备管理实验(二):设备分配与回收模拟.......................................18
实验八 文件管理实验.........................................................................................22
附录一:Linux 简介.............................................................................................. 28
附录二:Linux 命令速查..................................................................................... 32
1
《操作系统原理及应用》实验指导书
前言
该操作系统实验指导书是为基于 linux 操作系统的实验课程准备的。
如下图所示,实验中涉及的程序属于 linux 操作系统中的应用程序层次。实验内容涉
及进程管理、内存管理、设备管理及文件管理。
实验类型如下:
1、使用命令观察;
2、编写用户级程序,使用系统调用或库函数观察;
3、编写用户级程序,模拟操作系统内核的工作机制。
其中前两种属于观察型实验,第三种属于模拟型实验。在本实验指导书中,三种方
式相结合。
2
《操作系统原理及应用》实验指导书
实验一 Linux 环境实验(一):linux 使用环境
实验目的
能使用常用的 linux 命令,熟悉 linux 使用环境
实验内容
(1)登录后创建一个用户帐号,帐号名是:” os”+你的学号,如 os104
(2)重新以这个新的帐号登录,在你的当前用户主目录下,新建目录 lab1
(3)设置文件访问权限
(4)结合帮助及附录二,练习使用其它常用命令
实验基础
预习附录 1:Linux 简介;附录 2:linux 命令速查
实验指导
(一)linux 的登录与退出
1、本地登录 linux
根据系统配置的不同,有文本和图形两种登录模式。
(1)如果是文本登录模式,则步骤如下:
login:(输入 username)
password:(输入密码,注意密码不会回显)
登录成功则出现提示符。如果要进入图形界面环境则输入:startx
(2)如果是图形登录模式,则输入用户名和密码之后即可直接进入图形界面环境。
2、远程登录 linux 服务器
在 DOS 环境下用 MS 提供的 telnet 程序(也可使用 WINDOWS 自带的 telnet 图形界面
程序或多功能的 S-Term 终端程序),可使 PC 成为 linux 主机的一台仿真终端。多个终
端或仿真终端可以同时登录同一台 Linux 系统,分时使用 Linux 操作系统。
连接
telnet 主机名(或 主机的 IP 地址)
例: telnet www.yahoo.com 或 telnet 140.122.77.120
(2)登录
连接成功之后,输入用户名和密码,即可以终端模式分时使用 linux 操作系统。
3
《操作系统原理及应用》实验指导书
(3)退出
在 linux 系统提示符$下,输入 logout、exit 或 shutdown,例:$ logout
(二)学会使用帮助
(1) man:命令在线帮助
在使用其它命令之前,先认识一下 Linux 的在线帮助 man。在 Linux 下,当你要查找
一个命令的用法的,你可以通过 man 命令名 来源得命令的详细说明。因为每个 Linux
都有一份 man 文档,所以介绍命令的时候我们只是简直介绍一下命令的学用选项。如果
想查看命令的详细说明,请自己看 man。
执行格式: man
ls
例:
(2)info:显示说明
man
command
查询 ls 这个指令的用法
执行格式:
info
command-name
例:
功能:查看gcc的说明,按上下箭头选定菜单,回车进入,"u"键返回上级菜单.
info
gcc
info不加参数则进入最上一级菜单.
(三)目录及文件管理
(1)在用户主目录下为每个实验创建一个目录。
[os001@localhost os001]#pwd
[os001@localhost os001]#mkdir lab1
[os001@localhost os001]#cd lab1
[os001@localhost lab1]#
(2)编辑程序,设置文件访问权限。
[os001@localhost lab1]#vi test.c
:wq
[os001@localhost lab1]# ls -l
-rw-r--r--
[os001@localhost lab1]# chmod u+x,g+x,o-r test.sh
1 root
root
6
6 29 15:30 test.c
[os001@localhost lab1]# ls -l
-rwxr-x---
1 root
root
6
6 29 15:30 test.c
Linux 将用户分成三类:文件用户属主,同组用户,其他用户,分别用 u,g,o 表
示。基本权限包括读、写、执行,分别用 r,w,x 表示。
4
《操作系统原理及应用》实验指导书
(3)结合帮助及附录二,练习使用其它常用命令,如下。
1)目录操作:ls,mkdir,rmdir,cd,pwd
2)文件操作:more file1,cp,mv
3)系统询问与权限口令:su,chmod
4)I/O 命令: com1|com2 ,com>file1
5)用户帐号管理
5
《操作系统原理及应用》实验指导书
实验一 Linux 环境实验(二):Linux 下 C 编程环境
实验目的
1、 了解 Linux 主要目录内容。
2、 掌握在 linux 环境下开发 C 程序的一般流程。
3、 学会利用 vi 编辑器来编辑、gcc 编译、gdb 调试 C 程序。
实验基础
一、Linux 主要目录内容
(1)/:根目录
(2)/bin:存放了使用者最常用的命令
(3)/boot:引导核心的程序目录
(4)/dev:包含了所有 Linux 的外部设备名
(5)/etc:包含了系统管理所需要的配置文件和子目录,是系统中最重要的目录之一
(6)/home:用来存放用户主目录的地方
(7)/lib:存放了系统最基本的动态链接
(8)/lost+found:一般是空的
(9)/opt:用于安装那些可以进行选择安装的软件包
(10)/proc:是 Linux 提供的一个虚拟系统
(11)/root:这个目录是超级用户 root 默认的主目录
(12)/sbin:用来存放系统管理员使用的系统管理程序
(13)/tmp:用来存放各程序执行时所产生的临时文件
(14)/usr:用户的很多应用程序和文件几乎都存放在这个目录中
(15)/var:主要存放一些系统记录文件和配置文件
二、Linux 编程简介
对于享受惯了在 Windows 下使用可视化的集成开发环境进行编程的人员来说,一下
子转到 Linux 肯定会有诸多的不习惯,因为好像忽然间进入了原始社会。编程不再拥有
集成化环境,你需要在编辑器中输入源程序,还要记住很多命令,在命令行实现编译、
调试等工作。但 Linux 系统的免费、开放、安全、可靠、自由等特点使得 Linux 具备了无
以伦比的魔力,吸引着全世界成千上万的程序员在 Linux 系统下埋头苦干,不断编写出
高质量、完美的应用程序。
6
《操作系统原理及应用》实验指导书
Linux 支持的编程语言有:C、C++、Java、PHP、shell、Perl、Tcl、Python、Emacs Lisp
等,可以用来开发各种用途的应用程序或脚本程序。
三、Linux 下的 C 语言开发环境
C 是一种在 Linux 系统下广泛使用的编程语言,Linux 核心 90%以上的源代码和 Linux
系统上运行的大部分程序都是用 C 语言编写的,而且,Linux 发行版中包含的很多软件开
发工具,也是用于 C 和 C++应用程序开发的。在 Linux 下 C 程序的开发过程为:
(1)使用 vi 等编辑器编辑源程序,保存为后缀为.c 的源文件。
(2)使用 gcc 编译源程序,生成二进制的可执行文件。
(3)若有问题,启用 gdb 进行调试。
(4)大型程序需要使用 make 工具来进行维护。
因此要在 Linux 下进行 C 程序开发,你需要掌握的编程工具有:
至少要熟悉使用一种编辑器。其中 vi 是 Linux 中最基本、最经典的一种编辑器,
比较容易使用,但功能比较弱。Emacs 是功能比较强大的一个编辑器,但比较
难用。当然你也可以选择 gedit、kate 等其它编辑器。
gcc 编译器。
软件维护工具 make 和 autoconf、automake 等。
gdb 调试器。
四、文件编辑器 vi
vi 是“visual interface”的简称,是 Linux 环境下一款标准的全屏文本编辑器。
在 shell 中执行 vi 编辑程序即进入 vi 编辑器:
[root@localhost ~]# vi vitest.c
vi 有两种基本的工作模式:命令模式和输入模式。
命令模式:启动 vi 进入编辑器,或在输入模式下,按“Esc”键,即处于命令模式下,
此时用户键入的任何字符皆被视为命令,可进行删除、修改、查找、存盘等操作。如果
输入的是合法的 vi 命令,所输入的命令会被立即解释执行,并不会在屏幕上显示出来。
但一些以冒号(:)、斜杠(/)和问号(?)开头的命令,会显示在 vi 编辑器屏幕的最后一
行上,需要按回车键来执行命令。
输入模式:在命令模式下按“Insert”键或输入插入文本类命令即可进入输入模式。
此时输入的任何字符都会显示在编辑器屏幕上,并作为文本内容写入到用户文件中。
1.移动光标类命令,该类指令如果不容易记忆,可以直接在输入模式下用上下左右箭
头键来实现光标的移动。
命令
h
表 1.1 移动光标类常用命令
功能
光标左移一个字符
7