操作系统课程设计题目与要求资料.docx
- 文档编号:4908807
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:25
- 大小:31.22KB
操作系统课程设计题目与要求资料.docx
《操作系统课程设计题目与要求资料.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计题目与要求资料.docx(25页珍藏版)》请在冰豆网上搜索。
操作系统课程设计题目与要求资料
操作系统课程设计题目与要求
课程设计要求:
1、可以依据教材中的算法自行选题,也可以从下面给出的题目中选题。
要求每两名同学之间课程设计内容应该不同。
如果有选择相同题目的小组,则设计方案不同,否则视为抄袭。
(可以两人一组,也可以一人一题)。
选题确定后,不得更改。
2、分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包括界面)、详细设计必要的算法,并最终显示出结果。
基于Windows或Linux操作系统都可以,用何种编程语言都可以。
3、提交设计报告,包括设计要求、设计思想及流程、设计所涉及的主要数据结构、程序清单、运行结果、设计心得、参考资料等。
4、最终成绩决定因素=设计质量(30)+设计报告(30)+答辩(40)
5、课程设计参考评分内容:
设计思想说明;数据结构的说明;各模块的算法流程图;程序清单:
注意加注释(包含关键字、方法、变量等),在每个模块前加注释;体会,总结及体会建议。
6、设计报告内容与他人相同者无成绩。
7、要求同学们在上机前,尽量多做准备,编写好程序代码,上机时进行修改调试,以提高上机效率。
8、第15周周末提交设计报告,并进行答辩。
地点在机房。
不允许超过时间。
二、设计题目
1.睡眠理发师问题(1人)
目的:
了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。
设计要求:
(1)编写程序实现理发师与顾客进程的同步。
问题描述:
这是一种经典的IPC问题,理发店有一位理发师,一把理发椅和n把用来等候理发的椅子。
如果没有顾客,则理发师在理发椅上睡觉,顾客理来时,如理发师闲则理发,否则如有空椅则坐等,没有空椅则离开,编写程序实现理发师和顾客程序,实现进程控制,要求不能出现竞争。
(2)将
(1)题中问题修改为有两位理发师,设计程序实现同步控制。
问题提示:
可以用一个变量waitting来记录等候理发的顾客数,另使用三个信号量:
用来记录等候理发的顾客数customers;用来记录理发师是否空闲的信号量barbers,一个用于互斥访问waitting变量的mutex.。
2.进程调度模拟程序(1人)
目的:
深入掌握进程调度的概念原理和实现方法。
设计要求:
编写一个进程调度程序,允许多个进程并行执行。
进程调度算法:
采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)、先来先服务算法、按时间片轮转调度算法,最终总结该算法的优缺点,写出设计体会。
每个进程有一个进程控制块(PCB)表示,进程控制块可以包含如下信息:
进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为指定(也可以由随机数产生)。
进程的到达时间为输入进程的时间。
进程的运行时间以时间片为单位进行计算。
每个进程的状态可以是就绪W(wait)、运行R(run)或完成F(finish)三种状态之一。
3.进程调度模拟程序2(1人)
目的:
深入掌握进程调度的概念原理和实现方法。
设计要求:
编写一个进程调度程序,允许多个进程并行执行。
进程调度算法:
采用最高优先数优先与按时间片轮转调度结合算法,最终总结该算法的优缺点,写出设计体会。
如果运行下个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进行已占用CPU时间还未达到所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。
重复以上过程,直到所有进程都完成为止。
4.读者与写者问题(进程同步问题)(1人)
目的:
了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。
设计要求:
编程模拟读者与写者问题,要求显示结果。
问题描述:
(1)多个进程共享一个文件,其中只读文件的称之为读者,其余只写文件的称为写者。
读者可以同时读,但是写者只能独立写。
(2)对
(1)修改,使得它对写者优先,即一旦有写者到,后续的读者都必须等待,而无论是否有读者在读文件。
5.模拟文件管理系统(1人)
目的:
深入了解文件管理系统,初步掌握文件管理系统的实现方法。
设计要求:
编写一程序,模拟一个简单的文件管理系统。
树型结构,目录下可以是目录,也可以是文件。
在此文件管理系统,可实现的操作有:
改变目录:
格式:
cd<目录名>
显示目录:
格式:
dir[<目录名>]
创建目录:
格式:
md<目录名>
删除目录:
格式:
rd<目录名>
新建文件:
格式:
edit<文件名>
删除文件:
格式:
del<文件名>
退出文件系统:
exit
实现参考:
(1)文件系统采用二叉树型存储结构,结点结构如下:
StructFileNode
{
Charfilename[FILENAME_LEN];//文件名/目录名
Intisdir;//目录、文件的识别标志
Inti_nlink;//文件链接数
Intadr;//文件的地址
StructFileNode*parent,*child;//指向父亲的指针和左孩子的指针
StructFileNode*sibling_prev,*sibling_next;//指向前一个兄弟的指针和后一个兄弟的指针。
}
(2)目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开
(3)功能具体描述:
改变目录:
改变当前工作目录,目录不存在是给出出错信息
显示目录:
显示指定目录下或当前目录下所有文件和一级目录(选做:
带/s参数的dir命令,显示所有子目录)
创建目录:
在指定路径或当前路径下创建指定目录。
重名时给出出错信息。
删除目录:
删除指定目录下所有文件和子目录。
要删目录不空时,要给出提示是否要删除。
创建文件:
创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。
删除文件:
删除指定文件,不存在时给出出错信息。
退出文件系统:
exit
(4)总体流程:
初始化文件目录
输出提示符,等待接受命令,分析键入的命令;
对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令。
直到键入exit退出为止。
6.内存的申请与释放(1人)
目的:
了解操作系统内存分配的算法。
设计要求:
(1)定义一个自由存储块链表,按块地址排序,表中记录块的大小。
当请求分配内存时,扫描自由存储块链表,址到找到一个足够大的可供分配的内存块,若找到的块大小正好等于所请求的大小时,就把这一块从自由链表中取下来,返回给申请者。
若找到的块太大,即对其分割,并从该块的高地址部分往低地址部分分割,取出大小合适的块返回给申请者,余下的低地址部分留在链表中。
若找不到足够大的块,就从操作系统中请求另外一块足够大的内存区域,并把它链接到自由块链表中,然后再继续搜索。
释放存储块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块临接,即对其进行合并操作,直到没有合并的临接块为止,这样可以防止存储空间变得过于零碎。
(2)空闲区采用分区说明表的方法实现
(1)中的功能。
要求同上。
7.Windows磁盘直接读写实验(1人)
目的:
了解磁盘设备编程的特点。
设计要求:
通过本实验了解在windows系统中如何直接使用磁盘的读写功能;所编应用程序能够响应用户指定的读写磁盘扇区的请求,也能提供查看磁盘相关参数的功能。
技术的关键是使用了windows提供的API(应用程序接口)来实现所要求的功能。
用户可以利用API进行底层的磁盘操作。
相关知识:
(下列函数的详细使用方法参看VC++的MSDN文档)
(1)CreateFile:
用来创建或者打开一个文件、管道、磁盘设备等,它返回一个句柄用于以后对这信对象的访问。
(2)DeviceControl:
本API直接向相应设备的驱动程序发出指令,以完成在函数参数中所指定的动作。
(3)WriteFile:
本API用于向文件中写入数据,写入操作可以采用同步方式或者异步方式,写入操作从文件指针处开始,写操作后会被相应调整。
磁盘设备被当作文件看待。
(4)ReadFile:
本API用于文件中读出数据,读出操作从文件指针处开始,文件指针在读操作后会被相应调整。
用法同写文件函数相似。
(5)SetFilePointer:
用于移动一个打开的文件中的读写指针。
8.处理机调度(1人)
目的:
加深作业概念的理解,深入了解多道程序设计系统中如何组织作业、管理作业和调度作业,加深对作业调度算法的理解。
设计要求:
采用短作业优先调度算法、先来先服务调度算法和最高响应比调度算法实现处理机对作业的调度。
作业调度算法的关键是在已有的作业后备队列上按照一定的规则选择一个作业,如何在已有的数据结构上进行操作的问题。
9.页面置换算法(1人)
目的:
深入掌握内存调度算法的概念原理和实现方法。
设计要求:
编写程序实现:
(1)先进先出页面置换算法(FIFO)
(2)最近最久未使用页面置换算法(LRU)
(3)最佳置换页面置换算法(OPT)
专题:
设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。
演示页面置换的三种算法。
通过随机数产生一个指令序列,将指令序列转换成为页地址流。
计算并输出各种算法在不同内存容量下的命中率。
10.售票员与乘客(信号量操作)(1人)
目的:
了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。
设计要求:
编程序模拟车站售票厅内进程同步问题,售票厅任何时刻最多可容纳20名购票者进入,否则需要在外面等待。
每个购票者可看成一个进程。
11.生产者—消费者问题(1人)
目的:
掌握信号的使用方法和PV操作的定义,掌握使用PV操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。
设计要求:
设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中,两个消费者进程轮流接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。
12.驱动调度(1人)
目的:
掌握驱动调度算法的原理
设计要求:
模拟电梯调度算法,实现对磁盘的驱动调度。
要求模拟设计一个驱动调度程序,观察驱动程序的动态运行过程。
通过实验理解和掌握驱动调度的职能。
通过输入一个0~1的数来确定函数执行“接受请求”命令,还是执行“驱动调度”命令。
同时可以根据自已需要确定是否继续执行。
调用数组对输入的进程进行存储,并运用循环进行显示同时对I/O请求列表进行初始化。
运用电梯调度算法,对I/O列表中的磁盘请求进行调度,同时对I/O列表进行排序,调度完成后显示新的列表。
13.银行家算法(1人)
目的:
了解多道程序系统中,多个进程并发执行的资源分配。
设计要求:
管理员可以把一定数量的作业供多个用户周转使用,为保证作业的安全,管理员规定:
当一个用户对作业的最大需求量不超过管理员现有的资金就要接纳该用户;用户可以分期贷款,但贷款的总数不能超过最大需求量;当管理员现有的作业不能满足用户的所需数时,对用户的请求可以推迟支付,但总能使用户在有限的时间里得到请求。
当用户得到所需的全部作业后,一定能在有限的时间里归还所有的作业。
14.交通信号灯模拟(1人)
目的:
了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。
设计要求:
编程模拟交通信号灯的控制。
问题描述:
一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。
车辆通行设定:
路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后),其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。
进程的互斥:
交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。
进程的消息通信或其通信方式:
对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。
进程的调度:
停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。
15.哲学家进餐问题(1人)
目的:
通过实现哲学家进餐问题的互步,深入了解和掌握进程互斥的原理。
设计要求:
哲学家有N个,规定全体到齐后开始讨论,在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉合一把,所有哲学家刀和叉都拿到后才能进餐。
哲学家的人数、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。
16.司机与售票员(信号量操作)(1人)
目的:
掌握信号的使用方法和PV操作的定义,掌握使用PV操作实现进程之间同步和互斥的方法,加深对进程同步互斥概念的理解。
设计要求:
设计程序模拟在公共汽车上,司机和售票员操作的同步。
司机:
启动车辆,正常行车,到站停车。
售票员:
上乘客,关车门,售票,开车门,下乘客。
用PV操作对其控制。
17.磁盘调度算法(1人)
目的:
了解磁盘管理的原理,掌握磁盘调度种算法。
设计要求:
编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:
要求设计主界面可以灵活选择算法,且以下算法都要实现。
(1)先来先服务算法(FCFS)
(2)最短寻道时间优先算法(SSTF)
(3)扫描算法(SCAN)
(4)循环扫描算法(CSCAN)
18.收银员与顾客问题(信号量操作)(1人)
目的:
了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。
设计要求:
编程模拟下面同步问题:
在某超市有下收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如下图所示。
为了利用PV操作正确地协调这两类进程之间的工作,设置了三个信号量S1、S2和Sn,且初值分别为0、0、和n。
19.信号量的操作2(1人)
目的:
了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。
设计要求:
通过对windows系统的内核同步对象mutexes和semaphores的使用来实现进程同步的控制。
利用CreateSemaphore、WaitForSingleObject等函数检测内核同步对象的状态。
20.信号量的操作
实验目的:
了解信号量机制,了解并掌握进行同步和机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。
实验要求:
通过对Windows系统的内核同步对象Mutexes和Semaphores的使用来实现进程同步的控制。
利用CreateSemaphore、WaitForSingleObject等函数检测内核同步对象的状态。
假设某宿舍楼有一共用浴室,学校颁布法令:
当有一个女生正在使用浴室,则其他女生可以进入,但是男生不行,反之亦然。
在每个浴室门上有一个滑动指示符号,表示当前处于以下三种可能状态之一:
1.空
2.有女生
3.有男生
选用一种程序设计语言编写下面的过程:
woman_wants_to_enter,
man_wants_to_enter,woman_leaves,man_leaves.
21.进程间的通信(1人)
目的:
了解进程间通信的机制,实现进程的两种通信方式,多次执行,观察结果,并对两种通信方式进行比较。
设计要求:
利用系统提供的通信系统调用,进行一种方式的进程通信的程序设计,并对结果进行分析,同时了解另一种通信方式,将两种方式进行比较分析。
(1)消息的创建发送和接收
使用系统调用msgget()、msgsnd()、msgrev()、msgctl()来编写长度为500字节的发送和接收程序。
用一个程序先后创建两个子进程server和client,进行消息队列方式通信。
由server建立消息队列,等待其他进程发来消息,当遇到类型为1的消息,则作为通信结束的信号,取消消息队列,退出。
Server每接收到一个消息显示在屏幕上。
Client判断一个数据中的整数是否为素数,然后使用server建立的消息队列,将某数是否为素数的消息依次发送给server,然后退出。
Client每次发送时把消息显示在屏幕上。
(2)共享存储区的创建,附接和断接
使用系统调用shmget(),shmat(),shmctl()编写一个与上面
(1)中相同功能的程序。
22.虚拟文件系统的实现(1人)
目的:
过一个简单的多用户文件系统的设计,加深文件系统内部功能以及内部实现。
设计要求:
在Windows或者Linux下设计一个二级(或者树型)结构文件系统,要求至少实现以下功能:
login用户登录
dir列出文件目录
create创建文件
del删除文件
open打开文件
close关闭文件
read读文件
write写文件
cd进入子目录
rd删除子目录
md创建子目录
设计提示:
实现虚拟文件系统的一般思路是调用系统的文件创建(如c中的fopen函数的w方式即可)一个新文件,将此文件作为虚拟磁盘,在完成本设计要求的内容时,要求所生成的文件目录以及文件等内容都是存储在此磁盘中。
23.分时系统实现
目的:
了解计算机系统的启动过程,实模式和保护模式的区别,进程管理功能的具体实现。
设计要求:
(1)制作计算机启动盘。
(2)实现由实模式进入到保护模式。
(3)静态建立几个进程,采用时间片轮转调度策略调度进程执行。
24.苹果问题(1人)
目的:
了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。
设计要求:
编程模拟实现这一问题的程序控制,分析处理过程,
问题描述:
桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。
爸爸专向盘子放苹果(apple),妈妈专向盘子中放桔子(orange);两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。
请用P、V操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。
26.设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率:
1、先进先出的算法(FIFO)
2、最近最少使用算法(LRU)
3、最佳淘汰算法(LFU)
4、最少访问页面算法(NUR)
5、最近最不经常使用算法(NUR)
27.编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:
1、先来先服务算法(FCFS)
2、最短寻道时间优先算法(SSTF)
3、扫描算法(SCAN)
4、循环扫描算法(CSCAN)
28.编程序模拟银行家算法,要求能体现算法的全过程。
29.编程序模拟至少三种进程调度算法,要求能体现算法的全过程。
题目1:
时间片轮转调度算法模拟
要求:
用实验方法模拟单处理机系统的进程调度,并采用时间片轮转调度算法作为进程调度算法。
具体任务:
1、理解掌握进程调度实现所涉及到的主要问题:
如何组织进程、如何实现处理机调度。
进程控制块的作用和结构,进程控制块的链表组织。
进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。
2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟;
3、实现时间片进程调度算法模拟程序设计、编码及调试。
题目2:
静态优先级调度算法模拟
要求:
用实验方法模拟单处理机系统的进程调度,并采用静态优先级调度算法作为进程调度算法。
具体任务:
1、理解掌握进程调度实现所涉及到的主要问题:
如何组织进程、如何实现处理机调度。
进程控制块的作用和结构,进程控制块的链表组织。
进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。
2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟;
3、实现静态优先级调度算法模拟程序设计、编码及调试。
题目3:
最短剩余时间优先(动态优先)调度算法模拟
要求:
用实验方法模拟单处理机系统的进程调度,并采用最短剩余时间优先调度算法作为进程调度算法。
具体任务:
1、理解掌握进程调度实现所涉及到的主要问题:
如何组织进程、如何实现处理机调度。
进程控制块的作用和结构,进程控制块的链表组织。
进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。
2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟;
3、实现最短剩余时间优先调度算法模拟程序设计、编码及调试。
题目4 作业调度设计
1、目的
本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。
2、内容
⑴在后备作业队列中,输入5个作业各自运行所需要的时间及存储空间。
①按先来先服务的原则进行调度,输出作业调度的顺序及等待的时间。
②按最短作业(即运行时间最短)优先的原则进行调度,输出作业调度的顺序及等待时间。
③按最小作业(即存储空间最小)优先的原则进行调度,输出作业调度的顺序及等待的时间。
根据运行情况,比较各种算法。
⑵在后备作业队列中,先输入5个作业各自运行所需要的时间,然后每输入一个作业的运行时间,就按响应比高优先的原则进行调度,直到输入作业的运行时间为0时,依次输出响应比高的其它作业。
3、要求
⑴对输入的每个作业必须编号,输出时要有作业序号、运行时间、存储空间及等待时间(包括总的等待时间);
⑵报告中的运行情况要包括输入和输出情况;
⑶比较上面几种调度算法的优劣。
4、举例
建主程序、三个子程序(例如:
先来先服务FCFS、最短作业优先LSFS、最短运行时间作业优先SRFS)、打印程序及原始数据。
五个作业运行时间,建文件DATA.DAT,其中包含num、runtime、storage、waittime和Thewaitingtime。
题目5 存储管理页面置换算法模拟实现及比较
1、目的
通过请求页式管理中页面置换算法了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
2、内容
⑴通过随机数产生一个指令序列,共320条指令。
指令的地址按下述原则生成:
①一半的指令是顺序执行的;
②四分之一的指令是均匀分布在前地址部分;
③四分之一的指令是均匀分布在前地址部分。
具体的实施办法是:
①在[0,319]之间选一起点m;
②顺序执行一条指令,即m+1条; ③向前地址[0,m—1]中执行一条指令m';
④顺序执行一条指令,即m'+1条;
⑤向后地址(m'+2,319]执行一条指令m''
⑵将指令序列变换成为页地址流。
假设:
①页面大小为1KB;
②用户实寸容量为4页到32页;
③用户虚存容量为32KB。
用户虚存容量32KB,每1KB中放10条指令,共320条指令(0~319)。
其中0~9为0页,10~19为1页…310~319为31页。
⑶使用不同的页面调度算法处理缺页中断,并计算不同实存容量下(4~32KB)的命中率。
①先进先出算法(FIFO);
②最近最少使用算法(LRU);
③最佳淘汰算法(OPT);先淘汰最不常用的页地址;
④最少访问页面算法(LFU)。
命中率的算法为:
命中率=缺页中断次数/页地址流长度
3、要求
⑴实验报告中要有程序的详细框图,特别是有关算法本身的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 题目 要求 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)