《操作系统》基本课程实验指导书-2014 联系客服

发布时间 : 星期三 文章《操作系统》基本课程实验指导书-2014更新完毕开始阅读bec6706ea76e58fafab003ab

1.实验大纲

1.1 实验目的

在学习《操作系统》课程内容同时,以开放式源代码操作系统Linux为实验平台,同步完成Linux操作系统内核的代码分析和修改等7组基本课程实验。通过实验,熟悉Linux系统使用方法,掌握Linux内核系统结构,了解Linux进程管理、存储管理、设备管理、文件系统等资源管理功能的实现机理和典型算法。初步掌握运用内核开发环境对内核进行修改完善的能力。

通过本课程实验,使得学生熟悉Linux操作系统相关技术,并进一步巩固

课堂所学有关操作系统人机界面和资源管理得相关知识;并通过Linux源代码分析和简单编程,培养学生对实际操作系统的基本系统分析能力。

1.2实验内容说明

Linux基本实验由以下7组实验组成。

1.2.1 第1组 系统安装实验

实验1.1 Linux系统安装

从CD-ROM安装Red Hat Linux操作系统,如Red Hat Linux7.2,建立后续各个实验的运行环境。 实验1.2 虚拟机安装

在配备Windows操作系统Host机上,安装虚拟机软件Virtual PC for

Windows或VMware For Windows,进行BIOS设定, 对硬盘进行分区和格式化,安装Linux操作系统,以便在一台机器上模拟出多种操作系统运行环境。 实验1.3 Shell编程

编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,

如“Welcome to Linux”, 并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。

1.2.2 第2组Linux内核实验

实验2.1 观察Linux行为

学习linux内核、进程、存储和其他资源的一些重要特性。通过使用/proc

文件系统接口, 编写一个程序检查反映机器平衡负载、进程资源利用率方面的各种内核值, 学会使用/proc文件系统这种内核状态检查机制。 实验2.2 内核定时器

学习掌握内核定时器的实现原理和方法,建立一种用户空间机制来测量多

线程程序的执行时间。 实验2.3 内核模块

模块是Linux系统的的一种特有机制,可用于动态扩展操作系统内核功能。

编写实现某些特定功能的模块,将其作为内核的一部分在管态下运行。例如, 通过内核模块编程在/porc文件系统中实现系统时钟的读操作接口。 实验2.4 系统调用

向现有Linux内核加入一个新的系统调用从而在内核空间中实现对用户空

间的读写。例如,设计并实现一个新的内核函数mycall( ),此函数通过一个引用参数的调用返回当前系统时间,功能上基本与gettimeofday( )相同。

1.2.3 第3组 进程管理

实验3.1 进程行为观察

1. 在Linux下,分别用snice、skill、top 等命令和/proc中的有关目录、文件观察系统中进程运行情况和CPU工作情况。

2. 在Linux下,用ptrace()、gdb跟踪一个进程的运行情况,用strace工具跟踪 fork() 过程,用ltrace工具跟踪 execl() 过程。观察并分析跟踪信息。 实验3.2 代码分析

阅读分析Linux中的进程建立模块、进程撤销模块、进程调度模块、系统

调用总入口模块,了解进程的创建、执行、等待、退出等过程。

实验3.3 Shell编程

1. 以超级用户身份编程,计算某一时段中所有程序平均运行时间。

2. 通过编写shell程序,了解子进程的创建和父进程与子进程间的协同,获得

多进程程序的编程经验。

1.2.4 第4组 存储管理

实验4.1 观察实验

1. 在Linux下,使用gdb程序观察一个程序文件的内容和结构。启动该程序

执行,再用GDB观察其内存映象的内容和结构。 2. 在Linux下,用free 和vmstat命令观察内存使用情况。

3. 在Linux下,查看/proc与内存管理相关的文件,并解释显示结果。 4. 在Linux下,用malloc()函数实现cat或copy命令。 实验4.2 代码分析

阅读 Linux/Minix中以下模块的调用主线,并写出分析报告 ? exec系统调用的内部实现模块调用主线 ? malloc函数的内部实现模块调用主线 ? 缺页中断处理程序 实验4.3 虚拟存储器管理

学习Linux虚拟存储实现机制;编写代码,测试虚拟存储系统的缺页错误

(缺页中断)发生频率。

1.2.5 第5组 进程通信

实验5.1 观察实验

在Linux下,用ipcs()命令观察进程通信情况。 实验5.2 代码分析

阅读 Linux/Minix中以下模块的调用主线,并写出分析报告。(1)kill系

统调用内部实现模块调用主线。(2)pipe系统调用内部实现模块调用主线。 实验5.3 进程同步实验

在学习linux内核的同步机制基础上,深入分析各种同步机制的实现方案,设计和编写一套同步原语。

1.2.6 第6组 I/O设备管理

实验6.1. 观察实验

1.stat命令查看机器上硬盘特别文件的I节点内容。

2.在Linux下,查看/proc与内存管理相关的文件,解释显示结果。 实验6.2 代码分析

阅读 Linux/Minix中以下模块的调用主线(1)print函数内部实现模块调用主线。(2) scan函数内部实现模块调用主线。写出分析报告。 实验6.3 编程实验

编写一个daemon进程,该进程定时执行 ps命令,然后将该命令的输出写至文件F1尾部。 实验6.4 设备驱动程序

了解Linux的设备驱动程序的组织结构和设备管理机制,编写简单的字符设备和块设备驱动程序。

1.2.7 第7组 文件系统管理

实验7.1 代码分析

阅读 Linux/Minix中有关文件模块的调用主线,并写出分析报告,包括 ? 文件建立模块,即系统调用create() ? 文件删除模块,即系统调用rm() ? 读/写模块,即 read/write 实验7.2 编程实验1