操作系统课程设计指导
2、实现一个进程管理子系统(实现进程切换)
【问题描述】
在Linux/UNIX/Windows下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成,(此外还可能包括选作的进程切换和调度模块)。
【设计要求】
在1题的基础上,进一步可选做模拟实现进程切换。希望能实现时间片满或接到sleep调用(或信号时)进行进程切换(选择其一即可)。
(1)过随机数产生一个指令序列,共320条指令。其地址按下述原则生成:
①50%的指令是顺序执行的;
②25%的指令是均匀分布在前地址部分;
③25%的指令是均匀分在[0,319]的指令地址之间随机选区一起点M;
②顺序执行一条指令,即执行地址为M+1的指令;
③在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M';
【问题描述1】
设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。
【设计要求1】
可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。
【问题描述2】
设计一个可变式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。
操作系统课程设计指导
一、本课程的教学目的及基本要求
1、教学目的
操作系统课程设计是操作系统课程的重要实践环节,是操作系统课程内实验的有益补充,它旨在培养学生的实践能力,促进理论与实践的结合。要求学生通过上机编程,了解如何模拟操作系统原理的实现,从而加深对操作系统原理的领会,加深对操作系统实现方法的理解,与此同时使学生在程序设计方面也能够得到很大程度的提高。操作系统虽然是理论性很强的课程,但是仅仅是课堂讲授是绝对不够的,操作系统课程设计即是课堂教学基础上的实践环节,其重要程度决不亚于课堂的知识传授。
显示整个系统信息
11、模拟文件系统
【问题描述】
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的小型文件系统。
【设计要求】
该小型文件系统没有子目录机制,文件连续分配,不考虑分区。
做一个简单的操作界面,提供四条简单的命令:简单的ls、cat、cp、rd。
进一步增强
上题中的文件系统功能:文件系统不连续分配,可以有子目录机制,(如两级子目录机制)。
第0条~第9条指令为第0页(对应虚存地址为[0,9]);
第10条~第19条指令为第1页(对应虚存地址为[10,19]);
……
第310条~第319条指令为第31页(对应虚存地址为[310,319]);
按以上方式,用户指令可组成32页。
(3)计算并输出下述各种算法在不同内存容量下的命中率。
①最佳置换页面置换算法(OPT)
二、操作系统课程设计题目
1、实现一个进程管理子系统
【问题描述】
在Linux/UNIX/Windows下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成,(此外还可能包括选作的进程切换和调度模块)。
【设计要求】
该子系统接收新进程建立请求的方式是循环显示“请输入新命令行”,然后根据用户键入内容启动相应进程,其后不等待子进程结束,马上显示下一个“请输入新命令行”如此循环往复。
(4)每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。
(5)就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
④顺序执行一条指令,其地址为M'+1;
⑤在后地址[M'+2,319]中随机选取一条指令并执行;
⑥重复①~⑤,直到执行320次指令。
(2)指令序列变换成页地址流。
设:①页面大小为1K;
②用户内存容量为4页到32页;
③用户虚存容量为32K。
在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:
或位示图法(Linux)
④每建一个目录,分配4个物理块
文件名14byte
⑤目录项信息
i结点号2byte
⑥结构:0#:超级块
1#~20#号为i结点区
20#~30#号为根目录区
⑦功能:初始化
建立文件(需给出文件名,文件长度)
建立子目录
打开文件(显示文件所占的盘块)
删除文件
删除目录
显示目录(即显示目录下的信息,包括文件、子目录等)
【问题描述】
桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专向盘子放苹果(apple),妈妈专向盘子中放桔子(orange);两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用P、V操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。
【设计要求】
了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。编程模拟实现这一问题的程序控制,分析处理过程。
释放存储块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块临接,即对其进行合并操作,直到没有合并的临接块为止,这样可以防止存储空间变得过于零碎。
(2)空闲区采用分区说明表的方法实现(1)中的功能。要求同上。
8、固定式分区分配及可变式分区分配的存储管理方案设计与实现
【设计要求】
(1)进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。
(2)每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
(3)进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。
②最近最久未使用页面置换算法(LRU)
③最少使用页面置换算法(LFU)
④CLOCK算法
要求设计一个虚拟存储区和内存工作区,编程序演示以上四种算法的具体实现过程,并计算访问命中率。演示页面置换的四种算法。
7、内存的申请与释放
【问题描述】
模拟实现操作系统内存分配的算法。
【设计要求】
(1)定义一个自由存储块链表,按块地址排序,表中记录块的大小。当请求分配内存时,扫描自由存储块链表,址到找到一个足够大的可供分配的内存块,若找到的块大小正好等于所请求的大小时,就把这一块从自由链表中取下来,返回给申请者。若找到的块太大,即对其分割,并从该块的高地址部分往低地址部分分割,取出大小合适的块返回给申请者,余下的低地址部分留在链表中。若找不到足够大的块,就从操作系统中请求另外一块足够大的内存区域,并把它链接到自由块链表中,然后再继续搜索。
②最短寻道时间优先算法(SSTF)
③扫描算法(SCAN)
④循环扫描算法(CSCAN)
10、模拟UNIX(Linux)文件系统
【问题描述】
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟UNIX文件系统。
【设计要求】
(1)在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。
(本题作为一道思考选作实验题:由于是在实际OS中模拟实现,故子系统无法完全控制其建立的所有子进程的进程状态变化,象当前进程这样的概念都不太好模拟,需要设法解决或假设。)
3、进程调度算法模块
【问题描述】
编制一个进程调度算法模块。进程调度是处理机管理的核心内容。本设计要求用C语言编写和调试一个简单的进程调度程序。通过设计本可以加深理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。
要求学生通过上机编程,使学生对操作系统运行机制有一个全面的认识和理解,通过模拟文件系统及内存管理系统,锻炼学生的逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。
课程设计基本要求:
1)掌握课堂教学内容,主要包括:
12、Windows磁盘直接读写实验(1人)
【问题描述】
了解磁盘设备编程的特点。
【设计要求】
通过本实验了解在windows系统中如何直接使用磁盘的读写功能;所编应用程序能够响应用户指定的读写磁盘扇区的请求,也能提供查看磁盘相关参数的功能。技术的关键是使用了windows提供的API(应用程序接口)来实现所要求的功能。用户可以利用API进行底层的磁盘操作。
若要实现时间片,假设时间片为1秒钟,设定底层环境OS每个1秒向该系统发一个信号,本子系统将本子系统的进程切换和调度模块设定为该信号的处理程序。或者每当接到子进程发出的的sleep调用(或信号)时进行进程切换,这里子进程发出的sleep调用(或信号)代表实际系统中可能发生的sleep( )调用、等待某一时间发生等情况,进程调度采用简单的FIFO算法。
本课程设计的目的和任务是在课堂教学的基础上,使学生对操作系统运行机制有一个全面的认识和理解,锻炼学生的抽象思维、逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。
先修课程:数据结构,操作系统。
2、教学基本要求
(2)编写一管理程序对此空间进行管理,以模拟UNIX(或Linux)文件系统,具体要求如下: