admin管理员组

文章数量:1532656

2024年1月12日发(作者:)

操作系统实验指导书

操作系统是一门理论性和时间性都很强的课程。要学好操作系统的设计原理,除了听课、

看书、做习题外,最好的方法就是在实践中进行,包括使用操作系统、阅读和分析已有操作 系统的源代码、自己设计小型系统/模块或模拟算法等。

本教材安排的实验内容按深度可分为五个层次,即:使用级、观察级、系统管理级、源 码阅读级和实现级。

(1) 使用级:是指如何使用操作系统,包括对命令(以及菜单和shell)、系统调用 和系统文件的使用。

(2) 观察级:是指通过使用级的接口,从外部观察操作系统的内部工作过程和结构。

(3) 系统管理级:是指系统或设备的安装、配置和性能调整。

(4) 源码阅读级:是指对现有操作系统部分内核源代码的阅读。

(5) 实现级:是指编程模拟实现操作系统某些功能模块。

实验的操作平台是Red Hat Linux 9. 0和Windows 2000 Professional,其中前者是主 要的实验平台,因为源码阅读级等实验都是在Linux平台上进行的,当然,在Linux上进行 的实验基本上也都可在UNIX平台上直接进行。读者可根据自己的需要以及实验条件等选择 相应的实验内容。

1. 使用级实验

实验1安装Linux操作系统

%1. 实验目的

在供实验的微机上安装Linux操作系统,后续实验都将在此环境上进行。通过实验,要

求:

1. 了解硬件资源要求。

2, 学会安装Linux系统。

3, 学会启动Linux系统。

4. 了解Linux多引导器的配置。

%1. 实验内容

把Linux安装到本地硬盘。

主要安装步骤提示:

1. 如果BIOS支持光盘启动,则插入Linux安装光盘,重新启动计算机。

如果从DOS环境启动,则在DOS提示符下执行批处理命令,如autobooto

或者,准备启动软盘,插入并重新启动计算机。

2. 对硬盘分区,留出交换空间和文件系统的空间。

3. 按提示分阶段装入系统。

4. 配置系统。

实验2安装Windows 2000操作系统

一.实验目的

通过对Windows 2000 professional的安装操作,了解操作系统应用环境建立的初步过

程。

1. 掌握Windows操作系统的基本系统设置。

2. 了解Windows多操作系统安装配置的方法。

—.实验内容

1. 把Windows 2000安装到本地硬盘。

注意:若要与Linux并存于同一硬盘上,则宜先安装Windowso

2. 主要安装步骤与安装Linux相似,在此从略。

注意,按屏幕提示选择合适的文件系统时,建议选择NTFSo输入的管理员密码要记 住。

实验3 Linux系统用户接口和编程界面实验

%1. 实验目的

1. 熟悉使用Linux字符界面、窗口系统的常用命令。

2. 熟悉运用Linux常用的编程工具。

3. 熟悉运用Linux的在线求助系统。

4. 掌握在Linux操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。

%1. 实验内容

1. 熟悉开机后登录Linux系统和退出系统的过程;

2. 熟悉Linux字符界面 --- 虚拟终端窗口和shell,以及图形界面 ------ X-Window(如

gnome或KDE):练习并掌握常用的Linux操作命令,如Is、cat、ps、df、find> grep、cd、

more、cp、rm、kill、at、vi> cc> man> help、control+d/c、等;熟悉常用 shell 的提示

符;熟悉字符窗口与图形界面之间的切换。

3. 学习使用Linux的在线求助系统,如man和help命令等。

4. 掌握一种Linux的编辑器,特别是字符界面的vi工具的使用。

5. 用vi编辑一个打印"Hello, I am a C program"字串的C语言程序,然后编译并运 行它,记下整个过程。熟悉gcc、gdb等编译器、调试器的使用。

2. 系统行为观察级实验

实验4观察Linux进程的异步并发执行

%1. 实验目的

1. 了解进程与程序的区别,加深对进程概念的理解;

2. 掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行;

3. 了解fork()系统调用的返回值,掌握用fork。创建进程的方法;

4. 熟悉wait、exit等系统调用。

%1. 实验内容

1. 编写一 C语言程序,实现在程序运行时通过系统调用fork()创建两个了进程,使

父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕 显示“I am son",女儿进程执行时屏幕显示“I am daughter”。

2. 多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为

止。记下这种情况,试简单分析其原因。

3. 修改程序,利用nice ()改变各进程的优先级,观察不同情况下进程调度效果的 区别。

4. 修改程序,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进, 多次反复运行改进后的程序,观察并记录运行结果。

实验5 Linux进程间的通信

一、 实验目的

学习如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信,并加深对 上述通信机制的理解。

二、 实验内容

1. 了解系统调用 pipe 0 >msgget ()、msgsnd() >msgrcv() >msgctl ()、shmget () >

shmat ()、 shmdt ()、shmctl ()的功能和实现过程。

2. 编写一 C语言程序,使其用管道来实现父子进程间通信。子进程向父进程发送字符 串“is sending a message to parent! :父进程则从管道中读出子进程发来的消息,并 将其显不到屏幕上,然后终止。

3. 运行该程序,观察、记录并简单分析其运行结果。

w实验6观察内存分配结果

%1. 实验目的

学习如何利用Linux的malloc函数动态申请一段内存空间。

%1. 实验内容

1. 了解malloc函数的功能和Linux虚拟内存管理的原理。

2. 编写一 C语言程序,用malloc函数申请一段存储空间,并在终端上显示起始地址。

3. 运行该程序,观察、记录其运行结果,并分析说明结果的地址是否为物理地址。

实验7观察内存使用情况

一、 实验目的

用Windows 2000自带的工具观察内存空间的使用情况。

二、 实验内容

1. 用Windows 2000的性能监视器或者任务管理器观察内存工作情况。

2. 观察并写出屏幕显示的内容。

3. 系统管理级实验

实验8在Linux中使用优盘

%1. 实验目的

1. 了解mount和umount命令的功能;

2. 了解Linux设备文件的命名;

3. 用上述所了解的内容解决在Linux中使用优盘的问题。

%1. 实验内容

1. 用mount命令把优盘的设备文件安装到/mnt目录(可能需要root用户口令,请勿 乱用)。

2. 进入/mnt目录,使用优盘(比如,往里拷贝一个文件)。

3. 退出/mnt目录,用umount命令把优盘从系统中卸载掉。

4. 按ctrl+d组合键,退出超级用户模式。

5. 总结在Linux中使用优盘的过程。

实验9使用Windows 2000的注册表屏蔽桌面上的“回 收站“

%1. 实验目的

1. 了解Windows 2000注册表的作用,熟悉注册表编辑器;

2. 熟悉Windows 2000注册表中5个主要根键的内容与作用;

3. 了解备份注册表的重要性,掌握备份注册表的基本方法;

4. 学会通过修改注册表,屏蔽桌面“回收站”图标的方法。

%1. 实验内容

1. 备份注册表(或者打开后导出注册表)。

2. 运行regedit命令打开注册表。

3. 选择注册表中“ HKEY_LOCAL_MACHINE ”子窗口(即找到此根键),定位到

“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerDesktop

NameSpace”分支,在该分支下有多个子键对应桌面上的某些系统图标。

4. 删除键值为 Recycle Bin 的子键,如子键 645FF040-5081-l-lB-9F08-00AA002F954Eo

5. 重新启动计算机。

6. 根据备份的注册表内容,恢复注册表中被删除的子键,重新启动计算机。

7. 观察两次重启后的情况,总结备份、修改和恢复注册表的一般过程。

4. 源代码阅读级实验

这部分实验难度较大,但很有意义,也很有意思,建议学生分组协作完成。

实验10分析Linux进程调度程序

%1. 实验目的

1. 了解Linux源代码的分布;

2. 了解阅读Linux源代码的一般方法;

3. 熟悉Linux管理进程用的主要数据结构;

4. 通过阅读Linux进程调度有关函数的源代码,理解Linux的进程调度算法及其实现 所用的主要数据结构。

%1. 实验内容

1. 通过查阅参考书或者上网找资料,熟悉/usr/src/linux (注意:这里最后一级目录

名可能是个含具体内核版本号和“ linux”字符串的名字)下各子目录的内容,即所含Linux

源代码的情况。

2. 在概览Linux启动和初始化部分源代码基础上,分析Linux进程调度有关函数的源 代码,主要是schedule ()函数和goodness ()函数,并且要对它们引用的头文件等一并分析。

3. 归纳总结出Linux的进程调度算法及其实现所用的主要数据结构。

实验11跟踪系统查找文件过程

%1. 实验目的

1. 了解Linux源代码的分布;

2. 了解阅读Linux源代码的一般方法;

3. 熟悉Linux管理文件用的主要数据结构;

4. 通过分析Linux文件系统部分源代码,跟踪系统查找文件的过程。

%1. 实验内容

1. 通过查阅参考书或者上网找资料,熟悉/usr/src/linux (注意:这里最后一级目录

名可能是个含具体内核版本号和“ linux”字符串的名字)下各子目录的内容,即所含Linux

源代码的情况。

2. 在概览Linux启动和初始化部分源代码基础上,分析Linux虚拟文件系统及EXT3 文件系统的部分内核源代码,即其超级块、组描述符、数据块位图、索引节点表、目录项结 构及其相关操作的源代码实现,并利用各种可能工具,跟踪、展示Linux文件系统管理模块 搜索EXT3文件系统的/usr/include/stdio. h文件的过程。

3. 归纳总结出Linux根据哪些主要数据结构先检索出文件/usr/include/stdio. h的索

引节点,进而读出其内容的全部过程。

5. 实现级实验

本级的实验既可在Linux,也可在Windows 2000操作系统平台下进行。

实验11进程调度模拟程序设计

%1. 实验目的

加深对进程概念和进程调度过程/算法的理解。

二、 实验内容

1. 给出进程调度的算法描述(如基于动态优先级和时间片轮转调度算法的描述)。

2. 用C语言设计一个对n个并发进程进行调度的程序,每个进程由一个进程控制块(PCB) 结构表不,该进程控制块应包括下述信息:进程标识ID、进程优先数PRIORITY (并规定优 先数与优先权成正比)、时间片数CHIP、进程已经占用CPU的时间CPUTIME,进程还需要运 行的时间ALLTIME (当进程运行完毕时,其值为0)、进程的状态STATE (为简化起见。设 每个进程处于运行E (excecuting)、就绪R (ready)和完成F (finish)三种状态之一,

并假设起始状态都是就绪状态R。),以及进程队列指针NEXT (用来将PCB排成队列)等, 可按照调度算法的不同而增删。

3. 调度程序应当包含2种不同的调度算法,运行时可以任选一种,以利于各种方法的 分析和比较。

4. 程序应能显示或打印各种进程状态和参数变化情况,便于观察。即要显示每个时间 片内各进程的情况,并且指出运行进程及就绪和阻塞队列中的内容。

实验12页面置换模拟程序设计

一、 实验目的

加深对请求页式存储管理实现原理的理解,掌握页面置换算法。

二、 实验内容

1. 假设分给一作业的内存块数为4,每个页面中可存放10条指令。

2. 用C语言设计一个程序,模拟一作业的执行过程。设该作业共有320条指令,即它 的地址空间为32页,目前它的所有页面都还未调入内存。在模拟过程中,如果所访问的指 令已经在内存,则显示其物理地址,并转下一条指令。如果所访问的指令尚未装入内存,则 发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块中均已装入该作 业的虚页面,则需进行页面置换。最后显示其物理地址,并转下一条指令。在所有320条指 令执行完毕后,请计算并显示作业运行过程中发生的缺页率。

3. 置换算法:请分别考虑OPT、FIFO和LRU算法。

4. 作业中指令的访问次序要求按下述原则生成:

50%的指令是顺序执行的。

25%的指令是均匀分布在前地址(即低地址)部分。

25%的指令是均匀分布在后地址(即高地址)部分。

具体的实施办法是:

%1 在[0, 319]之间随机选取一条起始执行指令,其序号为m;

%1 顺序执行下一条指令,即序号为m+1的指令;

%1 通过随机数,跳转到前地址部分[0, m-1]中的某条指令处,其序号为ml;

%1 顺序执行下一条指令,即序号为ml+1的指令;

%1 通过随机数,跳转到后地址部分[ml+2, 319]中的某条指令处,其序号为m2;

%1 顺序执行下一条指令,即序号为此+1的指令;

%1 重复“跳转到前地址部分、顺序执行、跳转到后地址部分、顺序执行”的过程,直 至执行完全部320条指令。

5. 分析程序运行的结果,谈一下自己的认识。

实验13文件系统模拟设计

一、 实验目的

加深对文件系统的内部功能及其实现的理解。

二、 实验内容

用c语言设计一个简单的二级文件系统。要求做到以下几点:

1. 可以实现下列几条命令(至少4条):

login用户登录

dir列文件目录

creat创建文件

delete删除文件

open打开文件

close关闭文件

read读文件

write写文件

2. 列目录时要列出文件名、物理地址、保护码和文件长度。

3. 源文件可以进行读写保护。

本文标签: 进程实验系统执行观察