操作系统课程设计题目与要求1_第1页
操作系统课程设计题目与要求1_第2页
操作系统课程设计题目与要求1_第3页
操作系统课程设计题目与要求1_第4页
免费预览已结束,剩余6页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统课程设计题目与要求一、课程设计要求:1根据每道题的人数选定题目。(如果自己有好的想法可以与我联系,可以做其他的题目)2分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包括界面)详细设计必要的算法,并最终显示结果。基于WINDOWS或 LINUX 操作系统都可以,用何种编程、语言都有可以。3提交设计报告, 包括设计要求、 设计思想流程、 设计所涉及的主要数据结构、 程序清单、运行结果、 设计心得、 参考资料等, 时间在 18 周星期一 (课程设计没补考, 没及格到大四再做,希望大家认真对待) 。4严禁抄袭,复制设计容,查出后相关同学设计成绩以零分处理。5所提交源程序应是

2、能够运行通过的完整程序。6课程设计参考评分标准:设计思想说明(10 分);数据结构的说明(6 分);各模块的算法流程图(10 分);程序清单:注意加注释(包含关键字、方法、变量等),在每个模块前加注释; (共 70 分,其中书面源程序占 35 分,实验的检查结果、程序的运行情况占35 分)体会,总结及体会建议(4 分)。二、设计题目1 Windows 多线程控制台程序(1 人)目的:学习和掌握如何编写Windows 多线程控制台程序。通过编写程序,加深对进程和线程关系的理解,掌握多线程程序的执行和编写技巧。设计要求:写一个单进程多线程的Windows 控制台程序,该程序在一个进程建立N 个线程

3、来执行指定的任务。N由命令行传递给系统。Win32 控制台程序中,主函数的格式如:Void main(int argc,char *argv),可以获取命令行参数。通过VC+“工程/ 设置”的C/C+属性页设置应用程序为“MTD”多线程。利用win32 API CreateThread()来生成线程。2 睡眠理发师问题(2 人)目的:了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:( 1)编写程序实现理发师与顾客进程的同步。问题描述:这是一种经典的IPC 问题,理发店有一位理发师,一把理发椅和n 把用来等候理发的椅子。如果没有顾客,

4、则理发师在理发椅上睡觉,顾客理来时,如理发师闲则理发,否则如有空椅则坐等,没有空椅则离开,编写程序实现理发师和顾客程序,实现进程控制,要求不能出现竞争。( 2)将( 1)题中问题修改为有两位理发师,设计程序实现同步控制。问题提示: 可以用一个变量waitting来记录等候理发的顾客数,另使用三个信号量:用来记录等候理发的顾客数customers ;用来记录理发师是否空闲的信号量barbers ,一个用于互斥访问 waitting变量的 mutex. 。3 进程调度模拟程序(2 人)目的:深入掌握进程调度的概念原理和实现方法。设计要求:编写一个进程调度程序,允许多个进程并行执行。进程调度算法:采

5、用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)、先来先服务算法、按时间片轮转调度算法,最终总结该算法的优缺点,写出设计体会。每个进程有一个进程控制块(PCB)表示,进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W( wait )、运行 R(run )或完成F(finish)三种状态之一。4 进程调度模拟程序2( 1 人)目的:深入掌握进程调度的概念原理和实现方法。设计

6、要求:编写一个进程调度程序,允许多个进程并行执行。进程调度算法:采用最高优先数优先与按时间片轮转调度结合算法,最终总结该算法的优缺点,写出设计体会。如果运行下个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进行已占用CPU时间还未达到所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1( 即降低一级) ,然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所有进程都完成为止。5 读者与写者问题(进程同步问题)( 1 人)目的:了解进程同步的概念,理解信号

7、量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。设计要求:编程模拟读者与写者问题,要求显示结果。问题描述:( 1)多个进程共享一个文件,其中只读文件的称之为读者,其余只写文件的称为写者。读者可以同时读,但是写者只能独立写。( 2)对( 1)修改,使得它对写者优先,即一旦有写者到,后续的读者都必须等待,而无论是否有读者在读文件。6 模拟文件管理系统(3 人)目的:深入了解文件管理系统,初步掌握文件管理系统的实现方法。设计要求:编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。在此文件管理系统,可实现的操作有:改变目录:格式:cd

8、< 目录名 >显示目录:格式:dir<目录名创建目录:格式:md <目录名 >删除目录:格式:rd< 目录名 >新建文件:格式:edit< 文件名删除文件:格式:del< 文件名 >>>退出文件系统:exit实现参考:( 1)文件系统采用二叉树型存储结构,结点结构如下:Struct FileNodeChar filenameFILENAME_LEN;/文件名 / 目录名Int isdir ;/目录、文件的识别标志Int i_nlink;/文件数Int adr;/文件的地址Struct FileNode *parent,*c

9、hild;/指向父亲的指针和左孩子的指针Struct FileNode *sibling_prev,*sibling_next;/指向前一个兄弟的指针和后一个兄弟的指针。( 2)目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/ ”隔开( 3) 功能具体描述:改变目录:改变当前工作目录,目录不存在是给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s 参数的 dir命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信息。删除目录: 删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。创建文件:创建指定名字的

10、文件,只要创建表示文件的节点即可,容及大小不考虑。删除文件:删除指定文件,不存在时给出出错信息。退出文件系统:exit( 4)总体流程:初始化文件目录输出提示符,等待接受命令,分析键入的命令;对合法的命令, 执行相应的处理程序, 否则输出错误信息, 继续等待新命令。 直到键入 exit 退出为止。7 存的申请与释放(2 人)目的:了解操作系统存分配的算法。设计要求:( 1) 定义一个自由存储块链表,按块地址排序,表中记录块的大小。当请求分配存时,扫描自由存储块链表,址到找到一个足够大的可供分配的存块,若找到的块大小正好等于所请求的大小时,就把这一块从自由链表中取下来,返回给申请者。若找到的块太

11、大,即对其分割,并从该块的高地址部分往低地址部分分割,取出大小合适的块返回给申请者,余下的低地址部分留在链表中。若找不到足够大的块,就从操作系统中请求另外一块足够大的存区域,并把它到自由块链表中,然后再继续搜索。释放存储块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块临接,即对其进行合并操作,直到没有合并的临接块为止,这样可以防止存储空间变得过于零碎。( 2) 空闲区采用分区说明表的方法实现(1)中的功能。要求同上。8 Windows 磁盘直接读写实验(1 人)目的:了解磁盘设备编程的特点。设计要求:通过本实验了解在windows 系统中如何

12、直接使用磁盘的读写功能;所编应用程序能够响应用户指定的读写磁盘扇区的请求,也能提供查看磁盘相关参数的功能。技术的关键是使用了windows 提供的API(应用程序接口)来实现所要求的功能。用户可以利用API 进行底层的磁盘操作。相关知识:(下列函数的详细使用方法参看VC+的 MSDN文档)( 1) CreateFile: 用来创建或者打开一个文件、管道、磁盘设备等,它返回一个句柄用于以后对这信对象的访问。( 2)DeviceControl:本 API 直接向相应设备的驱动程序发出指令,以完成在函数参数中所指定的动作。( 3) WriteFile :本 API 用于向文件中写入数据,写入操作可以

13、采用同步方式或者异步方式,写入操作从文件指针处开始,写操作后会被相应调整。磁盘设备被当作文件看待。( 4) ReadFile: 本 API 用于文件中读出数据,读出操作从文件指针处开始,文件指针在读操作后会被相应调整。用法同写文件函数相似。( 5) SetFilePointer:用于移动一个打开的文件中的读写指针。9 处理机调度(2 人)目的:加深作业概念的理解,深入了解多道程序设计系统中如何组织作业、管理作业和调度作业,加深对作业调度算法的理解。设计要求:采用短作业优先调度算法、先来先服务调度算法和最高响应比调度算法实现处理机对作业的调度。作业调度算法的关键是在已有的作业后备队列上按照一定的

14、规则选择一个作业,如何在已有的数据结构上进行操作的问题。10 页面置换算法(2 人)目的:深入掌握存调度算法的概念原理和实现方法。设计要求:编写程序实现:( 1) 先进先出页面置换算法( FIFO)( 2) 最近最久未使用页面置换算法(LRU)( 3) 最佳置换页面置换算法( OPT)专题:设计一个虚拟存储区和存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同存容量下的命中率。11 售票员与乘客(信号量操作)( 1 人)目的:了解进程同步的概念,理解信号量机制的原理,掌握运用

15、信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。设计要求: 编程序模拟车站售票厅进程同步问题,售票厅任何时刻最多可容纳20 名购票者进入,否则需要在外面等待。每个购票者可看成一个进程。12 生产者消费者问题(2 人)目的:掌握信号的使用方法和PV 操作的定义,掌握使用PV 操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。设计要求:设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5 个缓冲区组成的共享存中,两个消费者进程轮流接收并输出这十个数值,

16、同时将两个消费者进程读出的数值进行累加求各和。13 驱动调度( 2 人)目的:掌握驱动调度算法的原理设计要求:模拟电梯调度算法,实现对磁盘的驱动调度。要求模拟设计一个驱动调度程序,观察驱动程序的动态运行过程。通过实验理解和掌握驱动调度的职能。通过输入一个01 的数来确定函数执行“接受请求”命令,还是执行“驱动调度”命令。同时可以根据自已需要确定是否继续执行。调用数组对输入的进程进行存储,并运用循环进行显示同时对I/O请求列表进行初始化。运用电梯调度算法,对I/O列表中的磁盘请求进行调度,同时对I/O列表进行排序,调度完成后显示新的列表。14 银行家算法(1 人)目的:了解多道程序系统中,多个进

17、程并发执行的资源分配。设计要求:管理员可以把一定数量的作业供多个用户周转使用,为保证作业的安全,管理员规定:当一个用户对作业的最大需求量不超过管理员现有的资金就要接纳该用户;用户可以分期贷款, 但贷款的总数不能超过最大需求量;当管理员现有的作业不能满足用户的所需数时,对用户的请求可以推迟支付,但总能使用户在有限的时间里得到请求。当用户得到所需的全部作业后,一定能在有限的时间里归还所有的作业。15 交通信号灯模拟(2 人)目的:了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:编程模拟交通信号灯的控制。问题描述:一个十字路口,共有四组红

18、绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后) ,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。进程的消息通信或其通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆

19、的通行。16 哲学家进餐问题(1 人)目的:通过实现哲学家进餐问题的互步,深入了解和掌握进程互斥的原理。设计要求:哲学家有N 个,规定全体到齐后开始讨论,在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉合一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。17 司机与售票员(信号量操作)( 1 人)目的:掌握信号的使用方法和PV 操作的定义,掌握使用PV 操作实现进程之间同步和互斥的方法,加深对进程同步互斥概念的理解。设计要求:设计程序模拟在公共汽车上,司机和售票员操作的同步。司机:启动车辆,正常行车,到站停车。售票员:上乘客,关车门

20、,售票,开车门,下乘客。用PV 操作对其控制。18 磁盘调度算法(2 人)目的:了解磁盘管理的原理,掌握磁盘调度种算法。设计要求:编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:要求设计主界面可以灵活选择算法,且以下算法都要实现。( 1) 先来先服务算法( FCFS)( 2) 最短寻道时间优先算法( SSTF)( 3) 扫描算法( SCAN)( 4) 循环扫描算法( CSCAN)19 收银员与顾客问题(信号量操作)( 1 人)目的:了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:编程模拟下面同步问题:在某超市有下收银员,且

21、同时最多允许有n 个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如下图所示。为了利用PV操作正确地协调这两类进程之间的工作,设置了三个信号量S1、 S2 和Sn,且初值分别为0、 0、和 n。20 信号量的操作2(1 人)目的:了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:通过对 windows 系统的核同步对象mutexes 和 semaphores 的使用来实现进程同步的控制。利用CreateSemaphore 、 WaitForSingleObject等函数检测核同步对象的状态。21 男女生洗澡问题(信号

22、量操作)( 1 人)目的:了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:编程模拟男女生洗澡问题。问题描述:假设某宿舍楼有一共用浴室,学校颁布规定:当有一个女生正在使用浴室,则其他女生可以进入,但是男生不行,反之亦然。在每个浴室门上有一个滑动指示符号,表示当前处于以下三种可能状态之一:( 1)空(2)有女生( 3)有男生选用一种程序设计语言编写下面的过程:woman_wants_to_enter,man_wants_to_enter,woman_leaves,man_leaves。22 进程间的通信(2 人)目的:了解进程间通信的机

23、制,实现进程的两种通信方式,多次执行,观察结果,并对两种通信方式进行比较。设计要求:利用系统提供的通信系统调用,进行一种方式的进程通信的程序设计,并对结果进行分析,同时了解另一种通信方式,将两种方式进行比较分析。( 1)消息的创建发送和接收使用系统调用msgget() 、 msgsnd() 、msgrev() 、msgctl()来编写长度为500 字节的发送和接收程序。用一个程序先后创建两个子进程server 和 client,进行消息队列方式通信。由 server建立消息队列,等待其他进程发来消息,当遇到类型为1 的消息,则作为通信结束的信号,取消消息队列,退出。Server每接收到一个消息显示在屏幕上。Client判断一个数据中的整数是否为素数,然后使用server建立的消息队列,将某数是否为素数的消息依次发送给server,然后退出。Client每次发送时把消息显示在屏幕上。( 2)共享存储区的创建,附接和断接使用系统调用shmget(),shmat(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论