操作系统课程设计_第1页
操作系统课程设计_第2页
操作系统课程设计_第3页
操作系统课程设计_第4页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、.操作系统课程设计指导.一、本课程的教学目的及基本要求教学目的操作系统课程设计是操作系统课程的重要实践环节, 是操作系统课程内实验的有益补充, 它旨在培养学生的实践能力, 促进理论与实践的结合。 要求学生通过上机编程,了解如何模拟操作系统原理的实现, 从而加深对操作系统原理的领会,加深对操作系统实现方法的理解, 与此同时使学生在程序设计方面也能够得到很大程度的提高。 操作系统虽然是理论性很强的课程,但是仅仅是课堂讲授是绝对不够的, 操作系统课程设计即是课堂教学基础上的实践环节, 其重要程度决不亚于课堂的知识传授。本课程设计的目的和任务是在课堂教学的基础上, 使学生对操作系统运行机制有一个全面的

2、认识和理解,锻炼学生的抽象思维、逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。 促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。先修课程:数据结构,操作系统教学基本要求要求学生通过上机编程, 使学生对操作系统运行机制有一个全面的认识和理解,通过模拟文件系统及内存管理系统,锻炼学生的逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。 促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。课程设计基本要求:1、掌握课堂教学内容,主要包括:(1) 掌握操作系统四大资源管理的理论知识;(2

3、) 熟悉 Linux 或 Unix 文件系统的结构;(3) 使用 编程语言实现课程设计题目要求的功能。2、根据课程设计题目,按以下步骤进行:(1) 问题分析,理解问题,明确设计要求;(2) 根据要求进行概要设计和详细设计;(3) 编码实现、上机调试,数据测试;(4) 完成课程设计实习报告。.二、操作系统课程设计题目1实现一个进程管理子系统 问题描述 在 Linux/UNIX/windows 下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成, (此外还可能包括选作的进程切换和调度模块) 。 设计要求 该子系统接收新进程建立请求的方式是循环显示“请输

4、入新命令行” ,然后根据用户键入内容启动相应进程, 其后不等待子进程结束, 马上显示下一个 “请输入新命令行”如此循环往复。当建立进程时,相应读写进程控制表,然后借助底层环境OS中象 fork和exec 这样的函数将新进程投入运行(这与底层环境的实际OS不同,实际 OS 将新进程投入运行时要布置现场,最后时程序技术器寄存器)。进程撤消时,利用底层 OS的 wait()从子进程回到本子系统,相应修改PCB。比较该子系统与实际系统中的相应功能的异同与差距,尤其在现场保存与恢复方面的比较。2实现一个进程管理子系统(实现进程切换) 问题描述 在 Linux/UNIX/windows 下编制一个程序,模

5、拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成, (此外还可能包括选作的进程切换和调度模块) 。 设计要求 在 1 题的基础上,进一步可选做模拟实现进程切换。 希望能实现时间片满或接到 sleep 调用(或信号时)进行进程切换(选择其一即可) 。若要实现时间片,假设时间片为 1 秒钟,设定底层环境 OS每个 1 秒向该系统发一个信号,本子系统将本子系统的进程切换和调度模块设定为该信号的处理程序。或者每当接到子进程发出的的 sleep 调用(或信号)时进行进程切换,这里子进程发出的 sleep 调用(或信号)代表实际系统中可能发生的 sleep ()调用、等待某一

6、时间发生等情况,进程调度采用简单的FIFO 算法。( 本题作为一道思考选作实验题:由于是在实际 OS中模拟实现,故子系统无法完全控制其建立的所有子进程的进程状态变化,象当前进程这样的概念都不太好模拟,需要设法解决或假设。 )3进程调度算法模块. 问题描述 编制一个进程调度算法模块。进程调度是处理机管理的核心内容。本设计要求用 C 语言编写和调试一个简单的进程调度程序。通过设计本可以加深理解有关进程控制块、 进程队列的概念, 并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。 设计要求 1 )进程调度算法: 采用最高优先数优先的调度算法 (即

7、把处理机分配给优先数最高的进程)和先来先服务算法。2)每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、 已用 CPU时间、进程状态等等。3)进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。4)每个进程的状态可以是就绪W( Wait )、运行 R( Run)、或完成 F(Finish )三种状态之一。5)就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加 1 来表示。如果运行一个时间片后,进程的已占用CPU 时间已达到所需要的运

8、行时间,则撤消该进程, 如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。6)每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。7)重复以上过程,直到所要进程都完成为止。4. 生产者 消费者问题实现 问题描述 有一群生产者进程生产产品供给消费者进程消费, 为使两者并发执行, 在两者之间设置具有 n 个缓冲区的缓冲池,生产者进程所生产的产品放入一个缓冲区中,消费者进程可从一个缓冲区中取走产品去消费。 要求掌握信号的使用方法和PV操作的定义,掌握使用

9、PV操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。 设计要求 设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程, 父子进程都使用父进程创建的共享存储区进行通信,由生产.者进程将一个数组中的十个数值发送到由5 个缓冲区组成的共享内存中, 两个消费者进程轮流接收并输出这十个数值, 同时将两个消费者进程读出的数值进行累加求各和。5. 苹果问题 问题描述 桌子上有一只盘子, 最多可容纳两个水果, 每次只能放入或取出一个水果。爸爸专向盘子放苹果( apple ),妈妈专向盘子中放桔子( orange );两个儿子专等吃盘子中的桔子, 两个女儿专等吃盘子

10、中的苹果。 请用 P、V 操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。 设计要求 了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。 编程模拟实现这一问题的程序控制, 分析处理过程。6. 模拟请求页式存储管理算法 问题描述 存储管理的主要功能之一是合理地分配空间。 请求页式管理是一种常用的虚拟存储管理技术。本次设计的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 设计要求 设计一个请求页式存储管理方案。并编写模拟程序实现之。要求包含:( 1)过随机数产生一个指令序列,共 32

11、0 条指令。其地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在后地址部分;#具体的实施方法是:A.在0 ,319 的指令地址之间随机选区一起点M;B. 顺序执行一条指令,即执行地址为 M+1的指令;C. 在前地址 0 ,M+1中随机选取一条指令并执行, 该指令的地址为M;D. 顺序执行一条指令,其地址为 M +1;E. 在后地址 M+2,319 中随机选取一条指令并执行;.F. 重复 A E,直到执行 320 次指令。(2)指令序列变换成页地址流设:页面大小为1K; 用户内存容量为4 页到 32 页;用户虚存容量为 32K。在用户虚存中

12、,按每 K 存放 10 条指令排列虚存地址,即 320 条指令在虚存中的存放方式为:第 0 条 第 9 条指令为第 0 页(对应虚存地址为 0 ,9 );第 10 条 第 19 条指令为第 1 页(对应虚存地址为 10 ,19 );。第 310 条 第 319 条指令为第 31 页(对应虚存地址为 310 ,319 );按以上方式,用户指令可组成32 页。(3).计算并输出下述各种算法在不同内存容量下的命中率。最佳置换页面置换算法(OPT)最近最久未使用页面置换算法(LRU)最少使用页面置换算法(LFU)CLOCK算法要求设计一个虚拟存储区和内存工作区, 编程序演示以上四种算法的具体实现过程,

13、并计算访问命中率。演示页面置换的四种算法。7. 内存的申请与释放 问题描述 模拟实现操作系统内存分配的算法。 设计要求 (1) 定义一个自由存储块链表,按块地址排序,表中记录块的大小。当请求分配内存时,扫描自由存储块链表,址到找到一个足够大的可供分配的内存块,若找到的块大小正好等于所请求的大小时, 就把这一块从自由链表中取下来, 返回给申请者。 若找到的块太大, 即对其分割, 并从该块的高地址部分往低地址部分分割,取出大小合适的块返回给申请者, 余下的低地址部分留在链表中。 若找不到足够大的块, 就从操作系统中请求另外一块足够大的内存区域, 并把它链接到自由块链表中,然后再继续搜索。.释放存储

14、块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块临接,即对其进行合并操作,直到没有合并的临接块为止,这样可以防止存储空间变得过于零碎。(2) 空闲区采用分区说明表的方法实现(1)中的功能。要求同上。8固定式分区分配及可变式分区分配的存储管理方案设计与实现 问题描述 1设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。 设计要求 1可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表, 按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。 问题描述 2设计一个可变

15、式分区分配的存储管理方案。并模拟实现分区的分配和回收过程。 设计要求 2对分区的管理法可以是下面三种算法之一:首次适应算法循环首次适应算法最佳适应算法9. 磁盘调度算法 问题描述 了解磁盘管理的原理,掌握磁盘调度种算法。 设计要求 :编程序实现下述磁盘调度算法, 并求出每种算法的平均寻道长度:要求设计主界面可以灵活选择算法,且以下算法为基本要求。(1) 先来先服务算法( FCFS)(2) 最短寻道时间优先算法(SSTF)(3) 扫描算法( SCAN)(4) 循环扫描算法( CSCAN)10. 模拟 UNIX(linux) 文件系统 问题描述 在任一 OS下,建立一个大文件, 把它假象成一张盘,

16、 在其中实现一个简单的模拟 UNIX文件系统。 设计要求 ( 1)在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。.( 2)编写一管理程序对此空间进行管理, 以模拟 UNIX(或 linux) 文件系统,具体要求如下:要求盘块大小1k正规文件i结点文件类型目录文件(共 1byte)块设备管道文件。物理地址(索引表)共有 13 个表项,每表项2byte。文件长度4byte。联结计数1byte0 号块超级块栈长度 50空闲盘块的管理: 成组链接( UNIX)或位示图法(Linux)每建一个目录,分配4 个物理块文件名14byte目录项信息i结点号2byte结构:0# : 超级块1#20#

17、号为 i结点区20#30#号为根目录区功能:初始化建立文件(需给出文件名,文件长度)建立子目录打开文件(显示文件所占的盘块)删除文件删除目录显示目录(即显示目录下的信息,包括文件、子目录等)显示整个系统信息11模拟文件系统 问题描述 在任一 OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的小型文件系统。 设计要求 该小型文件系统没有子目录机制,文件连续分配,不考虑分区。做一个简单的操作界面,提供四条简单的命令:简单的ls 、cat 、 cp、rd.进一步增强 :上题中的文件系统功能: 文件系统不连续分配, 可以有子目录机制,(如两级子目录机制)。12.Windows 磁盘直接读写

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

19、数中所指定的动作。WriteFile:本 API 用于向文件中写入数据,写入操作可以采用同步方式或者异步方式,写入操作从文件指针处开始,写操作后会被相应调整。 磁盘设备被当作文件看待。ReadFile: 本 API 用于文件中读出数据,读出操作从文件指针处开始,文件指针在读操作后会被相应调整。用法同写文件函数相似。SetFilePointer:用于移动一个打开的文件中的读写指针。选作部分1睡眠理发师问题目的:了解信号量机制, 了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:(1)编写程序实现理发师与顾客进程的同步。问题描述:这是一种经典的IPC 问

20、题,理发店有一位理发师, 一把理发椅和n 把用来等候理发的椅子。如果没有顾客,则理发师在理发椅上睡觉,顾客理来时,如理发师闲则理发,否则如有空椅则坐等,没有空椅则离开,编写程序实现理发师和顾客程序,实现进程控制,要求不能出现竞争。(2)将( 1)题中问题修改为有两位理发师,设计程序实现同步控制。问题提示:可以用一个变量 waitting 来记录等候理发的顾客数,另使用三个信号量:用来记录等候理发的顾客数 customers ;用来记录理发师是否空闲的.信号量 barbers ,一个用于互斥访问waitting变量的 mutex. 。2. 读者与写者问题(进程同步问题)目的:了解进程同步的概念,

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

22、显示目录:格式: dir创建目录:格式: md 删除目录:格式: rd新建文件:格式: edit删除文件:格式: del退出文件系统: exit实现参考:(1) 文件系统采用二叉树型存储结构,结点结构如下:Struct FileNodeChar filenameFILENAME_LEN;/文件名 / 目录名Int isdir ;/目录、文件的识别标志Int i_nlink;/文件链接数Int adr;/文件的地址Struct FileNode *parent,*child;/指向父亲的指针和左孩子的指针StructFileNode *sibling_prev,*sibling_next;/指向

23、前一个兄弟的指针和后一个兄弟的指针。.(2) 目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/ ”隔开(3) 功能具体描述:改变目录:改变当前工作目录,目录不存在是给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录 (选做:带/s参数的 dir 命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信息。删除目录:删除指定目录下所有文件和子目录。 要删目录不空时, 要给出提示是否要删除。创建文件:创建指定名字的文件, 只要创建表示文件的节点即可, 内容及大小不考虑。删除文件:删除指定文件,不存在时给出出错信息。退出文件系统: exit(4

24、) 总体流程:初始化文件目录输出提示符,等待接受命令,分析键入的命令;对合法的命令,执行相应的处理程序, 否则输出错误信息, 继续等待新命令。直到键入 exit退出为止。4. 售票员与乘客(信号量操作)目的:了解进程同步的概念, 理解信号量机制的原理, 掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。设计要求:编程序模拟车站售票厅内进程同步问题, 售票厅任何时刻最多可容纳 20 名购票者进入,否则需要在外面等待。每个购票者可看成一个进程。5. 生产者 消费者问题目的:掌握信号的使用方法和 PV操作的定义,掌握使用 PV操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念

25、的理解。设计要求:设计一程序, 由一个进程创建三个子进程, 三个子进程一个是生产者进程,两个是消费者进程, 父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由 5 个缓冲区组成的共享内存中,两个消费者进程轮流接收并输出这十个数值, 同时将两个消费者进程读出的数值进行累加求各和。6. 驱动调度目的:掌握驱动调度算法的原理设计要求:模拟电梯调度算法,实现对磁盘的驱动调度。.要求模拟设计一个驱动调度程序, 观察驱动程序的动态运行过程。 通过实验理解和掌握驱动调度的职能。通过输入一个 01 的数来确定函数执行“接受请求”命令,还是执行“驱动调度”命令。同时可以根据

26、自已需要确定是否继续执行。调用数组对输入的进程进行存储, 并运用循环进行显示同时对 I/O 请求列表进行初始化。运用电梯调度算法, 对 I/O 列表中的磁盘请求进行调度, 同时对 I/O 列表进行排序,调度完成后显示新的列表。7. 交通信号灯模拟目的:了解信号量机制, 了解并掌握进程同步和互斥机制, 熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:编程模拟交通信号灯的控制。问题描述:一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。车辆通行设定:路口宽度不限,对一个

27、路口而言,只有当一辆车通过路口 (越过对面路口的交通灯后) ,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。进程的消息通信或其通信方式: 对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。进程的调度:停留在一个路口的车辆, 决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。8. 哲学家进餐问题目的:通过实现哲学家进餐问题的互步,深入了解和掌握进程互斥的原理。设计要求:哲学家有 N个,规定全体到齐后开始讨论, 在讨论的间隙哲学家进餐

28、,每人进餐时都需使用刀、 叉合一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定, 实现刀和叉的互斥使用算法的程序实现。9. 司机与售票员(信号量操作)目的:掌握信号的使用方法和 PV操作的定义,掌握使用 PV操作实现进程之间同步和互斥的方法,加深对进程同步互斥概念的理解。设计要求:设计程序模拟在公共汽车上,司机和售票员操作的同步。司机:启动车辆,正常行车,到站停车。售票员:上乘客,关车门,售票,开车门,下乘客。用 PV操作对其控制。.10. 收银员与顾客问题(信号量操作)目的:了解信号量机制, 了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资

29、源的控制。设计要求:编程模拟下面同步问题: 在某超市有下收银员, 且同时最多允许有 n 个顾客购物,我们可以将顾客和收银员看成是两类不同的进程, 且工作流程如下图所示。为了利用 PV操作正确地协调这两类进程之间的工作,设置了三个信号量 S1、S2 和 Sn,且初值分别为 0、0、和 n。11. 信号量的操作 2目的:了解信号量机制, 了解并掌握进程同步和互斥机制, 熟悉信号量的操作函数,利用信号量实现对共享资源的控制。设计要求:通过对 windows 系统的内核同步对象 mutexes 和 semaphores 的使用来实现进程同步的控制。利用 CreateSemaphore、WaitForS

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

温馨提示

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

评论

0/150

提交评论