操作系统原理实验指导书
(讨论稿)
操作系统课程组 2010年2月12日
目 录
概 述............................................................................................................................ 1 实验1 Linux操作系统安装与命令使用 .................................................................. 2 实验2 Linux环境下C语言使用、编译与调试 ................................................... 14 实验3 观察Linux进程的异步并发执行 ............................................................... 18 实验4 观察Linux进程的同步与互斥 ................................................................... 22 实验5 观察Linux进程间的通信 ........................................................................... 26 实验6 观察内存分配结果....................................................................................... 29 实验7 进程调度模拟程序设计............................................................................... 31 实验8 页面置换模拟程序设计............................................................................... 35 实验9 文件系统模拟程序设计............................................................................... 47 实验10 分析Linux进程调度程序 ........................................................................... 51 附录1 /USR/SRC/LINUX/KERNEL/SCHED.C ..................................................... 52
I
概 述
操作系统是一门理论性和实践性都很强的课程。要学好操作系统的设计原理,除了听课、看书、做习题外,最好的方法就是在实践中进行,包括使用操作系统、观察操作系统行为、自己设计小型系统/模块或模拟算法、阅读和分析已有操作系统的源代码等。
本教材安排的实验内容按深度可分为四个层次,即:使用级、观察级、实现级和代码阅读级
(1) 使用级:是指如何使用操作系统,包括对命令、系统调用和系统文件的使用。 (2) 观察级:是指通过使用级的接口,从外部观察操作系统的内部工作过程和结构。 (3) 实现级:是指编程模拟实现操作系统某些功能模块。
(4) 代码阅读级:是指对操作系统源代码进行分析,以加深对操作系统实现原理的了解。 本课程实验所用操作系统平台为Red Hat Linux 9.0,具体实验安排如下: 实验模块 使用级 实验内容 Linux操作系统安装与命令使用 Linux环境下C语言使用、编译与调试 观察Linux进程的异步并发执行 观察级 观察Linux进程的同步与互斥 观察Linux进程间的通信 观察内存分配结果 进程调度模拟程序设计 实现级 页面置换模拟程序设计 文件系统模拟程序设计 代码阅读级 分析Linux进程调度程序
要求 必做 必做 必做 必做 必做 选做 必做 必做 必做 选做 学时 2 2 2 2 2 - 2 2 2 - 1
实验1 Linux操作系统安装与命令使用
一、实验目的
在供实验的微机上安装Linux操作系统,后续实验都将在此环境上进行。通过实验,要求:
1.了解硬件资源要求 2.学会安装Linux系统 3.学会启动Linux系统
4.学会登录和退出Linux系统 5.熟悉Linux常用命令及使用格式 6.掌握在Linux使用U盘方法
二、实验内容
1. 将Linux系统安装到本地硬盘(本地及虚拟机安装方式) 2. 熟悉开机后登录和退出Linux系统过程;
3. 熟悉Linux基本命令使用,如ls、cat、ps、df、find、grep、cd、more、cp、rm、kill、at、vi、cc、man、help等;
4. 用mount命令把U盘的安装到/mnt目录(可能需要root用户口令,请勿乱用);用umount命令把U盘从系统中卸载掉。
三、实验指导
1. 主要安装步骤
(1)如果BIOS支持光盘启动,则插入Linux安装光盘,重新启动计算机。 如果从DOS环境启动,则在DOS提示符下执行批处理命令,如autoboot ? 或者,准备启动软盘,插入并重新启动计算机。 (2)对硬盘分区,留出交换空间和文件系统的空间。 (3)按提示分阶段装入系统。 (4)配置系统。
注意:若要与Linux并存于同一硬盘上,则宜先安装Windows。按屏幕提示选择合适的文件系统时,建议选择NTFS。输入的管理员密码要记住。
2. 本地安装方法
(请蒋老师帮补充,有具体步骤)
在已经安装了windows xp系统的机器上再安装一个linux系统,采用光盘安装方法。Red Hat Linux 9的cd安装盘共有3张。关键安装步骤如下:
?在windows系统中清出一个空闲的分区(8~10G就够了,建议空出最后一个分区,并做好相关的文件备份工作)。在本例中,假定空闲分区为F分区。 补充知识:
①DOS分区可以分为有3种类型:主分区、扩展分区和逻辑分区。一块硬盘最多可以有4个主分区,或是3个主分区1个扩展分区,且一块硬盘只能有1个扩展分区,在这个扩展分区内可以划分多个逻辑分区。主分区与扩展分区是平级的,扩展分区本
2
身无法用来存放数据,要使用它必须将其分成若干个逻辑分区。我们通常说的C分区是主分区,而D、E、F??等分区为逻辑分区。见下图:
②在UNIX/LINUX系统中,将所有的设备都当作一个文件,放在/dev目录下。用户用文件名(如/dev/hda)来访问设备,磁盘也是一样。磁盘的设备名称如下: a) 系统第1个IDE接口上的硬盘的名称为/dev/hda; b) 系统第2个IDE接口上的硬盘的名称为/dev/hdb; c) 系统第1个SCSI接口上的硬盘的名称为/dev/sda;
以此类推,在每块硬盘上的分区所使用的数字编号表示,如:
a) 系统第1个IDE接口上的硬盘的第1个分区名称为/dev/hda1;
b) 系统第1个IDE接口上的硬盘的第5个分区名为/dev/hda5(逻辑分区第1个编号); c) 系统第2个SCSI接口上的硬盘的第1个分区名称为/dev/sdb1;
注意:编号1~4留给主分区或扩展分区使用,逻辑分区编号从5开始。如下图所示:
③所以,本例中的空闲DOS分区F分区,在linux系统中应该叫/dev/hda7。
?将linux第一张安装盘放入光驱,重启系统,修改BIOS设置,将第一启动设备设为光盘启动。首先看到如下安装提示选项。
按enter键进入图形界面安装方式
3