《计算机操作系统》课程设计指导书

 

《计算机操作系统》

课程设计指导书

湖南工业大学计算机与通信学院

二O##年 九月

《计算机操作系统》课程设计说明

计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。计算机操作系统课程设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。要求学生在指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程管理概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想,了解设备管理的功能,了解文件系统的功能。同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。

为了收到良好的实验效果,编写了这本课程设计指导书。在指导书中,每一个课程设计任务按照该课程设计大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式引导学生有目的、有方向地完成课程设计任务,得出实验结果。任课教师在课程设计前对课程设计的任务进行一定的分析和讲解,要求学生按照课程设计任务的具体要求提前做准备工作,如:查找资料等,做到有准备地上机。进行课程设计时,指导教师应检查学生的预习情况,并对设计过程给予积极指导。课程设计完毕后,学生应根据课程设计情况,实验数据及结果,完成课程设计报告,由学习委员统一收齐后交指导教师审阅评定。


任务1 进程管理演示

一、课程设计目的

加深对进程概念及进程管理各部分内容的理解;熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构的实施。

二、课程设计内容

设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进程控制、同步与通讯机构,其进程调度算法可任意选择(优先级调度,时间片轮转,短进程优先中的一种)。每个进程用一个PCB表示,其内容根据具体情况设置。各进程之间有一定的同步关系(可选)。系统在运行过程中应能显示或打印各进程的状态及有关参数的变化情况,以便观察诸进程的运行过程及系统的管理过程。

课程设计指导

1)实验中使用的数据结构:

1)PCB进程控制块

其中包括参数①进程名name;②要求运行时间 runtime;③优先级 prior;④状态 state;⑤已运行时间runedtime等。

2)为简单起见,只设运行队列,就绪链表,阻塞队列三种数据结构,进程的调度在这两个队列中切换,如图1.1所示

 


图1.1PCB链表

2)进程管理的流程图

进程管理的流程图如图1.2所示,采取时间片原则来进行调度。

图1.2 进程管理流程图

2)运行结果,包括各个进程的运行顺序,每次占用处理机的运行时间,可以参考下列输出如图1.3

图1.3 输出结果示意图

3)每个进程运行时间随机产生,为1~20之间的整数。

4)时间片的大小由实验者自己定义,可为3或5,优先级也可以随机产生。

5)各进程之间有一定的同步关系(可选),注意进程状态转换的时机。


任务2 存储管理系统设计

一、课程设计目的

使学生熟悉存储器管理系统的设计方法;加深对所学各种存储器管理方案的了解。

二、课程设计内容

采用一些常用的存储器分配算法,设计一个请求页式存储管理模拟系统并调试运行。

课程设计指导

(1) 通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成(可选,也可随机产生):

①     50%的指令是顺序执行的;

②     25%的指令是均匀分布在前地址部分;

③     25%的指令是均匀分布在后地址部分;

具体的实施方法是:

①     在[0,319]的指令地址之间随机选取一起点m;

②     顺序执行一条指令,即执行地址为m+1的指令;

③     在前地址[0,m+1]中随机选取一条指令并执行,该指令地址为m’;

④     顺序执行一条指令,其地址为m’+1;

⑤     在后地址[m’+2,319]中随机选取一条指令并执行;

⑥     重复上述步骤①~⑤,直到执行320次指令。

(2) 将指令序列变成为页地址流

  设:① 页面大小为1k;

② 用户内存容量为4页到32页;

③用户虚量容量为32k。

在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:

第0条~第9条指令为第0页(对应虚存地址为[0,9]);

第10条~第19条指令为第1页(对应许存地址为[10,19]);

          ……

第310条~第319条指令为第31页(对应许存地址为[310,319]);

按以上方式,用户指令可组成32页。

(3)  计算并输出下述各种算法在不同内存容量下的命中率 。

①  先进先出的算法(FIFO);

                        页面失效次数

          命中率= 1— ————————

                        页地址流长度

     

    在本次实验中,页地址长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不内存的次数。

3.随机数产生办法

    关于随机数产生法,系统提供函数srand()和rand(),分别进行初始化和产生随机数。例如:

     srand();

          语句可初始化一个随机数;

         a[0]=10*rand()/32767*320;

         a[0]=10*rand()/32767*a[0];

           ……

     语句可用来产生a[0]与a[1]中的随机数。

(4)请求页式管理的程序流程图如图2.1

图2.1请求页式管理的程序流程图


任务3  编程序模拟银行家算法

一、课程设计目的

通过设计和调试银行家算法通用程序,加深对死锁概念和死锁避免方法的了解。

二、课程设计内容

编制银行家算法程序,并检测所给状态的系统安全性。

三、课程设计指导

1)对用银行家算法来避免死锁的方法有较深入的了解,给出系统的初始状态,模拟避免死锁的动态过程。

2)银行家算法中的数据结构

(1)可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则表示系统中现有Rj类资源K个。

(2)最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。

(3)分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。

(4)需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

上述三个矩阵存在如下关系:

 Need[i,j]= Max[i,j]- Allocation[i,j]

3)银行家算法

设Request[i] 是进程Pi的请求向量,如果Request[i,j]=K,表示进程需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:

(1)如果Request[i,j]<= Need[i,j],便转向步骤(2);否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。

(2)如果Request[i,j]<= Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待。

(3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:

     Available[j]= Available[j]- Request[i,j];

     Allocation[i,j]= Allocation[i,j]+ Request[i,j];

     Need[i,j]= Need[i,j]- Request[i,j];

(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

4)安全性算法

系统所执行的安全性算法可描述如下:

(1)设置两个向量:①工作向量Work:它表示系统可提供给进程继续运行所需要的各类资源数目,它含有m个元素,在执行安全算发开始时,Work=Available;②Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]=false;当有足够资源分配给进程时,再令Finish[i]=true。

(2)从进程集合中找到一个能满足下述条件的进程:

①Finish[i]=false;②Need[i,j] <= Work[j];若找到,执行步骤(3),否则,执行步骤(4)。

(3)当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:

         Work[j]= Work[i]+ Allocation[i,j];

         Finish[i]=true;

         go to step 2;

(4)如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。

5)银行家算法程序流程图如图3.1所示,银行家算法所用数据可参考ppt上的例子。

图3.1银行家算法程序流程图


任务4 磁盘调度算法的实现与分析

一、课程设计目的

使学生熟悉磁盘管理系统的设计方法;加深对所学各种磁盘调度算法的了解及其算法的特点。

二、课程设计内容

编程序实现下述磁盘调度算法,并求出每种算法的平均移动磁道数,并分析结果:

①先来先服务算法(FCFS)

②最短寻道时间优先算法(SSTF)

③扫描算法(SCAN)

④循环扫描算法(C-SCAN)

课程设计指导

1)进程请求访问磁盘的磁道数按时间随机产生,可假设磁盘总共有200个磁道,计算每种算法的平均移动磁道数。

2)具体调度策略见参考文献(2)的161~163页,产生不同的随机磁道数,计算平均寻道时间,再比较其性能的优劣。


任务5 文件系统演示

一、课程设计目的

使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。

二、课程设计内容

设计一个简单的多用户文件系统。即

①在系统中用一个文件来模拟一个磁盘;

②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。

③实现这个文件系统。

④能实际演示这个文件系统。

基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。

课程设计指导

1)设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。

2)程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UFD)。另外,为打开文件设置了运行文件目录(AFD)。

3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。

4)因系统小,文件目录的检索使用了简单的线性搜索。

5)文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。

6)程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD),打开文件目录(AFD)即运行文件目录,如图5.1所示。

 

图5.1目录结构的设计

参考的数据结构设计如下

struct TYPE_UFD                              //用户文件目录

{

       string  File_Name;                     //文件名

       bool Read;                           //读保护码,true为可读

       bool Write;                          //写保护码,true为可写

       bool Execute;                //执行保护码,true为可执行

       int   Length_File;          //文件长度

};

struct TYPE_MFD                             //主文件目录

{

       string  User_Name;             //用户名

       TYPE_UFD    *Pointer;        //用户文件目录指针

};

struct TYPE_AFD                              //打开文件目录

{

       int   File_ID;                //打开的文件号

       bool Read;                           //读保护码,true为可读

       bool Write;                          //写保护码,true为可写

       bool Execute;                //执行保护码,true为可执行

       int   Pointer;                 //读写指针

};

7)文件系统结构如图5.2所示

 


图5.2文件系统总体数据结构图

8)文件系统算法的流程图如图5.3所示。

图5.3文件系统算法的流程图

9)注意对于物理块的访问(包括访问指针,空闲位)需要经过输入输出,相当于通过定位对文件进行读写。打开文件目录(AFD)是在内存中,由打开文件时创建。

教材及参考书目

(1)     胡志刚,谭长庚等. 《计算机操作系统》.中南大学出版社. 2005

(2)     罗宇,邹鹏等.《操作系统》(第2版). 电子工业出版社. 2007.4

(3)     汤子瀛、哲凤屏、汤小丹. 《计算机操作系统》.西安电子科技大学出版社, 2001,8.

(4)     陈向群 杨芙清.《操作系统教程》. 北京大学出版社,2004,7.

(5)     张尧学 史美林.《计算机操作系统教程》. 清华大学出版社, 2000.

(6)     庞丽萍.《操作系统原理》(第三版). 华中理工大学出版社,2000.

(7)     Tanenbaum译著. 现代操作系统(第2版). 机械工业出版社2005,6.

(8)     徐虹.操作系统实验指导__基于LINUX内核, 清华大学出版社, 2004.

(9)     马季兰等.Linux操作系统, 电子工业出版社, 2002.

(10)  任爱华,李鹏,刘方毅.操作系统实验指导, 清华大学出版社,2004.

 

第二篇:计算机操作系统实验指导书(罗晓清)

《计算机操作系统》 实 验 指 导 书

罗晓清 编写

适用专业:计算机科学与技术

江南大学物联网工程学院

20xx年10月

前 言

计算机操作系统(Operating System简称OS)是计算机中最重要的系统软件,也是最活跃的学科之一,是计算机相关本科专业的核心课程。通过本课程的学习使学生掌握操作系统的基本概念、技术、原理,具备一定的从不同层次分析与使用操作系统功能的能力。了解计算机操作系统方面的新技术、新理论与新发展。

本实验指导书,是根据《操作系统》课程教学大纲的要求而编写的,目的是让学生能够进一步了解操作系统的基本概念、原理,通过综合性、验证性和设计性等实验,熟练掌握操作系统的运行机理和各种算法思想,尤其是操作系统的核心功能。同时还希望通过实验进一步提高学生的动手能力和综合运用先修课程的能力。

由于编写仓促,难免有错误和不足之处,恳请读者不吝赐教。

1

目 录

前 言 .................................................................................................................... 1

实验一 进程调度..................................................................................................... 3

实验二 银行家算法................................................................................................. 6

实验三 存储管理................................................................................................... 10 2

实验一 进程调度

实验学时:4学时

实验类型:设计

实验要求:必修

一、 实验目的

多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。

二、 实验内容

1.优先权法、轮转法

简化假设

1) 进程为计算型的(无I/O)

2) 进程状态:ready、running、finish

3) 进程需要的CPU时间以时间片为单位确定

2.算法描述

1) 优先权法——动态优先权

当前运行进程用完时间片后,其优先权减去一个常数。

2) 轮转法

三、 流程图

3

计算机操作系统实验指导书罗晓清

计算机操作系统实验指导书罗晓清

n,和调度方法的选择

计算机操作系统实验指导书罗晓清

N 轮转法

计算机操作系统实验指导书罗晓清

产生n

计算机操作系统实验指导书罗晓清

PCB,并用

CPU时间

n个进程拉成一个就绪队列

Y

产生n

计算机操作系统实验指导书罗晓清

需的时间片数,已占用CPU0

=0N 撤销该进程N Y 结束 =轮转时间片数?

Y 0

4

四、实验要求

1.产生的各种随机数的取值范围加以限制,如所需的CPU时间限制在1~20之间。

2.进程数n不要太大通常取4~8个

3.使用动态数据结构

4.独立编程

5.至少三种调度算法

五、实验报告

主要包括实验预习和实验报告两部分。

学生在上机做实验前,要根据教师布置的题目,对实验内容应作相应的预习,编写相关程序,准备好测试数据,进行静态检查后方可上机。

实验结束后,根据实验过程和结果写出实验报告,主要内容包括对实验数据、实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、解释、分析总结,回答思考题,提出实验结论或提出自己的看法等。

严禁抄袭或拷贝他人的成果,自觉培养科学、严谨的作风。

六、其它说明

学生在实验过程中应遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理。

5

实验二 银行家算法

实验学时:4学时

实验类型:设计

实验要求:必修

一、 实验目的

死锁会引起计算机工作僵死,因此操作系统中必须防止。本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。

二、 实验要求

设计有n个进程共享m个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。

系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;

三、 数据结构

1.可利用资源向量Available ,它是一个含有m个元素的数组,其中的每一个元素

代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。如果Available(j)=k,标是系统中现有Rj类资源k个。

2.最大需求矩阵Max,这是一个n×m的矩阵,它定义了系统中n个进程中的每一

个进程对m类资源的最大需求。如果Max(i,j)=k,表示进程i需要Rj类资源的最大数目为k。

3.分配矩阵Allocation,这是一个n×m的矩阵,它定义了系统中的每类资源当前

一分配到每一个进程的资源数。如果Allocation(i,j)=k,表示进程i当前已经分到Rj类资源的数目为k。Allocation i表示进程i的分配向量,有矩阵Allocation 6

的第i行构成。

4.需求矩阵Need,这是一个n×m的矩阵,用以表示每个进程还需要的各类资源的

数目。如果Need(i,j)=k,表示进程i还需要Rj类资源k个,才能完成其任务。Need i表示进程i的需求向量,由矩阵Need的第i行构成。

上述三个矩阵间存在关系:Need(i,j)=Max(i,j)-Allocation(i,j);

四、 银行家算法

参考教材P96

五、 安全性算法

1.设置两个向量。

Work:它表示系统可提供给进程继续运行的各类资源数目,它包含m个元素,

开始执行安全性算法时,Work = Available。

Finish:它表示系统是否有足够的资源分配给进程,使之运行完成,开始Finish

(I)=false;当有足够资源分配给进程Pi时,令Finish(i)=true;

2.从进程集合中找到一个能满足下述条件的进程。

Finish(i)= = false;

Need i ≤work;

如找到则执行步骤3;否则,执行步骤4;

3.当进程Pi获得资源后,可顺利执行直到完成,并释放出分配给它的资源,故应

执行

Work = work + Allocation i

Finish(i)=true;转向步骤2;

4.若所有进程的Finish(i)都为true,则表示系统处于安全状态;否则,系统处于

不安全状态。

六、流程

7

计算机操作系统实验指导书罗晓清

8

七、实验报告

主要包括实验预习和实验报告两部分。

学生在上机做实验前,要根据教师布置的题目,对实验内容应作相应的预习,编写相关程序,准备好测试数据,进行静态检查后方可上机。

实验结束后,根据实验过程和结果写出实验报告,主要内容包括对实验数据、实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、解释、分析总结,回答思考题,提出实验结论或提出自己的看法等。

严禁抄袭或拷贝他人的成果,自觉培养科学、严谨的作风。

八、其它说明

学生在实验过程中应遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理。

9

实验三 存储管理

实验学时:4学时

实验类型:设计

实验要求:必修

一、实验目的

存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

二、实验内容

(1) 通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存

容量对命中率的影响。

命中率?1?

页面失效次数页地址流长度页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。

在本实验中,假定页面大小为1k,用户虚存容量为32k,用户内存容量为4页到32页。

(2) produce_addstream通过随机数产生一个指令序列,共320条指令。

A、 指令的地址按下述原则生成:

1) 50%的指令是顺序执行的

2)25%的指令是均匀分布在前地址部分

3) 25%的指令是均匀分布在后地址部分

10

B、 具体的实施方法是:

1)

2) 在[0,319]的指令地址之间随机选取一起点m; 顺序执行一条指令,即执行地址为m+1的指令;

3) 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;

4)

5)

6) 顺序执行一条指令,地址为m’+1的指令 在后地址[m’+2,319]中随机选取一条指令并执行; 重复上述步骤1)~5),直到执行320次指令

C、 将指令序列变换称为页地址流

在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:

第0条~第9条指令为第0页(对应虚存地址为[0,9]);

第10条~第19条指令为第1页(对应虚存地址为[10,19]); 。。。。。。

第310条~第319条指令为第31页(对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。

(3)计算并输出下属算法在不同内存容量下的命中率。

1)先进先出的算法(FIFO);

2)最近最少使用算法(LRU);

11

三、系统框图

一、 运行结果

运行程序:

计算机操作系统实验指导书罗晓清

12

a、 终端先显示:

Start memory management.

Producing address flow, wait for while, please.

b、 地址流、地址页号流生成后,终端显示:

There are algorithms in the program

1、 Optimization algorithm

2、 Least recently used algorithm

3、 First in first out algorithm

4、 Least frequently used algorithm

Select an algorithm number, please.

用户输入适当淘汰算法的号码,并按回车,若是第一次选择,输出相应的

地址页号流。然后输出该算法分别计算的用户内存从2k~32k时的命中率,若输入的号码不再1~4中,则显示:

there is not the algorithm in the program,并重复b。

c、 输出结果后,终端显示 “do you try again with anther algorithm(y/n)”。若键

入y则重复b,否则结束。(一般讲四种算法都用过后结束,以便比较)。

二、 运行结果讨论

1、 比较各种算法的命中率

2、

七、实验报告 分析当用户内存容量增加是对命中率的影响

主要包括实验预习和实验报告两部分。

学生在上机做实验前,要根据教师布置的题目,对实验内容应作相应的预习,编写相关程序,准备好测试数据,进行静态检查后方可上机。

实验结束后,根据实验过程和结果写出实验报告,主要内容包括对实验数据、实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、解释、分析总结,回答思考题,提出实验结论或提出自己的看法等。

13

严禁抄袭或拷贝他人的成果,自觉培养科学、严谨的作风。

八、其它说明

学生在实验过程中应遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理。

14

相关推荐