所属课程名称: 操作系统所属课程性质:专业必选课。
教研室: 软件教研室指导教师: 张红祥孙少波。
一、目的。通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能, 具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。
二、内容及要求
1.题目: 单用户多级文件系统设计。
设计要求:本文件系统采用类似dos系统的文件管理方式,每次调用该文件系统时,首先申请一定的内存空间,然后对该内存空间进行分配。将申请到的空间划分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示链接(fat表)的方式。
每次调用该文件系统时自动为其分配空间,并将上次操作的结果从硬盘上调入内存;当结束调用时则将操作的结果重新存入硬盘,以便下次调用。(每次使用都会自动搜索文件系统,以此确定是否是第一次使用;若是则格式化生成文件系统,否则读取已存在的文件系统。)
设计技术参数(数据结构):
#define maxsize 100
#define disk 512 //每个盘块大小为512bit
#define numdisk 2048 //有2048个盘块,既可分配空间为 1m
目录和文件的结构定义。
struct directorynode {
char name[9目录或文件的名字*/
int type0代表目录,1代表普通文件*/
struct directorynode *next指向下一个兄弟结点的指针*/
struct directorynode *predirfile; /指向父结点的指针*/
struct directorynode *subfile; /指向第一个子结点的指针*/
int size如果是文件则表示文件的大小*/
int first起始盘块号*/
int last末尾盘块号*/
int order备用*/
/连续分配
struct filesys {
int vactable[numdisk]; 空闲表,0为空闲,1为被用
struct directorynode root根目录
struct directorynode directory[numdisk];
*filesys;
typedef struct {
struct directorynode *dirfile;
char name[9];
datatype包含一个指向目录的指针和名字
typedef struct队列结构的实现
datatype data[maxsize];
int front,rear分别表示队列的头结点和尾结点
tp;void initqueue(tp *sq) /队列初始化。
int enaddqueue(tp *sq,datatype data) /在队列中增加元素。
datatype endelqueue(tp *sq) /从队列中删除一个元素。
int empty(tp *sq) /判断队列是否为空,返回0表示队列为空。
.dir:显示目录内容命令,显示当前目录下的文件和子目录。
.md:创建目录操作。
.create:创建文件,在当前目录下创建一个文件。
. all:显示从根目录开始的所有目录和文件及其层次结点。
.cd:改变目录。
.del:删除文件操作。
. rd:删除目录操作,删除当前目录下的子目录。
. ren:重命名函数。
. exit:退出命令。
开发环境:vc++6.0
小组成员:
2.题目:进程调度算法的设计。
设计要求:设计进程控制块pcb表结构,分别适用于优先数调度算法和循环轮转调度算法。
建立进程就绪队列。对两种不同算法编制入链子程序。
编制两种进程调度算法:1)优先数调度;2)循环轮转调度。
开发环境:vc++6.0
设计技术参数:
本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。
为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。
在优先数算法中,优先数的值为50与运行时间的差值,即p_time-process->needtime。进程每执行一次,优先数减3,cpu时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:
每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,cpu时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。
对于遇到优先数一致的情况,采用fifo策略解决。
开发环境:vc++6.0
小组成员:
3.题目:银行家算法设计。
设计要求:编制银行家算法通用程序,并检测所给状态的系统安全性。
设进程i提出请求request[n],则银行家算法按如下规则进行判断。
(1)如果request[n]<=need[i,n],则转(2);否则,出错。
(2)如果request[n]<=**ailable,则转(3);否则,出错。
(3)系统试探分配资源,修改相关数据:
**ailable=**ailable-request
allocation=allocation+request
need=need-request
(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
设计技术参数:假设有n个进程m类资源,则有如下数据结构:
可利用资源向量**ailable。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和**而动态地改变。**ailable[j]=k,则表示系统中现有rj 类资源k个。
最大需求矩阵max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果max[i,j]=k,则表示进程i需要rj类资源的最大数目为k。
分配矩阵allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果allocation[i,j]=k,则表示进程i当前已分得rj类资源的数目为k。
需求矩阵need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果need[i,j]=k,则表示进程i还需要rj类资源k个,方能完成其任务。
上述三个矩阵存在如下关系:need[i,j]= max[i,j]- allocation[i,j]
开发环境:vc++6.0
小组成员:
4.题目:页面置换算法模拟设计。
设计要求:计算并输出下述各种算法在不同内存容量下的命中率。
a. fifo先进先出的算法。
b. lrr最近最少使用算法。
c. opt最佳淘汰算法(先淘汰最不常用的页地址)
d. lfr最少访问页面算法。
e. nur最近最不经常使用算法。
设计技术参数:
1)命中率=1-页面失效次数/页地址流长度。
2)本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。
3)随机数产生方法,采用系统提供函数srand()和rand ()来产生。
实验过程:1).过随机数产生一个指令序列,共320条指令,具体的实施方法是:
a. [0,319]的指令地址之间随机选区一起点m;
a. 顺序执行一条指令,即执行地址为m+1的指令;
b. 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;
c. 顺序执行一条指令,其地址为m’+1;
d. 在后地址[m’+2,319]中随机选取一条指令并执行;
e. 重复a—e,直到执行320次指令。
2).指令序列变换成页地址流。
设:(1)页面大小为1k;
2) 用户内存容量为4页到32页;
3) 用户虚存容量为32k。
在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:
第0条—第9条指令为第0页(对应虚存地址为[0,9]);
第10条—第19条指令为第1页(对应虚存地址为[10,19]);
第310条—第319条指令为第31页(对应虚存地址为[310,319]);
按以上方式,用户指令可组成32页。
3). 计算并输出下述各种算法在不同内存容量下的命中率。
开发环境:vc++6.0
小组成员:
5.题目:可变内存管理模拟。
设计要求: 功能:内存初始化;分配作业内存;**内存;显示作业列表;显示空闲内存。
编制两种内存分配算法:1)最佳适应算法;2)最坏适应算法。
6.题目:作业调度模拟。
设计要求:1 加深对作业概念地理解。
2 掌握短作业优先调度算法。
3 深入了解批处理系统如何组织作业、管理作业和调度作业。
4 了解作业控制块的作用,以及作业控制块的内容和组织方式。
设计技术参数:
利用作业控制块将系统中的作业组织起来;
为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名、作业所需要的资源、作业执行的时、作业进入系统的时间、作业信息在存储器中的位置、指向下一个作业控制块的指针等信息。这个记录作业相关信息的数据块称为作业控制块(jcb),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。当一个作业全部信息进入系统后,就为其建立作业控制块,并挂入后备队列中。
当一个作业全部进入系统后,就为其建立作业控制块,并挂入后备队列中。当进行作业调度时,从后备队列中查找选择作业。
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...
操作系统课程设计
银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...
操作系统课程设计
学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....