当前位置:文档之家› 操作系统课程设计指导

操作系统课程设计指导

操作系统课程设计指导
操作系统课程设计指导

操作系统课程设计指导

一、本课程的教学目的及基本要求

1、教学目的

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

本课程设计的目的和任务是在课堂教学的基础上,使学生对操作系统运行机制有一个全面的认识和理解,锻炼学生的抽象思维、逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。

先修课程:数据结构,操作系统。

2、教学基本要求

要求学生通过上机编程,使学生对操作系统运行机制有一个全面的认识和理解,通过模拟文件系统及内存管理系统,锻炼学生的逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。

课程设计基本要求:

1) 掌握课堂教学内容,主要包括:

(1) 掌握操作系统四大资源管理的理论知识;

(2) 熟悉Linux或UNIX文件系统的结构;

(3) 使用编程语言实现课程设计题目要求的功能。

2) 根据课程设计题目,按以下步骤进行:

(1) 问题分析,理解问题,明确设计要求;

(2) 根据要求进行概要设计和详细设计;

(3) 编码实现、上机调试,数据测试;

(4) 完成课程设计实习报告。

1

二、操作系统课程设计题目

1、实现一个进程管理子系统

【问题描述】

在Linux/UNIX/Windows下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成,(此外还可能包括选作的进程切换和调度模块)。

【设计要求】

该子系统接收新进程建立请求的方式是循环显示“请输入新命令行”,然后根据用户键入内容启动相应进程,其后不等待子进程结束,马上显示下一个“请输入新命令行”如此循环往复。

当建立进程时,相应读写进程控制表,然后借助底层环境OS中象fork和exec这样的函数将新进程投入运行(这与底层环境的实际OS不同,实际OS将新进程投入运行时要布置现场,最后时程序技术器寄存器)。进程撤消时,利用底层OS的wait( )从子进程回到本子系统,相应修改PCB。

比较该子系统与实际系统中的相应功能的异同与差距,尤其在现场保存与恢复方面的比较。

2、实现一个进程管理子系统(实现进程切换)

【问题描述】

在Linux/UNIX/Windows下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成,(此外还可能包括选作的进程切换和调度模块)。

【设计要求】

在1题的基础上,进一步可选做模拟实现进程切换。希望能实现时间片满或接到sleep调用(或信号时)进行进程切换(选择其一即可)。

若要实现时间片,假设时间片为1秒钟,设定底层环境OS每个1秒向该系统发一个信号,本子系统将本子系统的进程切换和调度模块设定为该信号的处理程序。或者每当接到子进程发出的的sleep调用(或信号)时进行进程切换,这

2

里子进程发出的sleep调用(或信号)代表实际系统中可能发生的sleep( )调用、等待某一时间发生等情况,进程调度采用简单的FIFO算法。

(本题作为一道思考选作实验题:由于是在实际OS中模拟实现,故子系统无法完全控制其建立的所有子进程的进程状态变化,象当前进程这样的概念都不太好模拟,需要设法解决或假设。)

3、进程调度算法模块

【问题描述】

编制一个进程调度算法模块。进程调度是处理机管理的核心内容。本设计要求用C语言编写和调试一个简单的进程调度程序。通过设计本可以加深理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。

【设计要求】

(1) 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。

(2) 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。

(3) 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。

(4) 每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。

(5) 就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。

(6) 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。

(7) 重复以上过程,直到所要进程都完成为止。

3

4、生产者—消费者问题实现

【问题描述】

有一群生产者进程生产产品供给消费者进程消费,为使两者并发执行,在两者之间设置具有n个缓冲区的缓冲池,生产者进程所生产的产品放入一个缓冲区中,消费者进程可从一个缓冲区中取走产品去消费。要求掌握信号的使用方法和PV操作的定义,掌握使用PV操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。

【设计要求】

设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中,两个消费者进程轮流接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。

5、苹果问题

【问题描述】

桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专向盘子放苹果(apple),妈妈专向盘子中放桔子(orange);两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用P、V操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。

【设计要求】

了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。编程模拟实现这一问题的程序控制,分析处理过程。

6、模拟请求页式存储管理算法

【问题描述】

存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本次设计的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。

4

【设计要求】

设计一个请求页式存储管理方案。并编写模拟程序实现之。要求包含:

(1) 过随机数产生一个指令序列,共320条指令。其地址按下述原则生成:

①50%的指令是顺序执行的;

②25%的指令是均匀分布在前地址部分;

③25%的指令是均匀分布在后地址部分。

#具体的实施方法是:

①在[0, 319]的指令地址之间随机选区一起点M;

②顺序执行一条指令,即执行地址为M+1的指令;

③在前地址[0, M+1]中随机选取一条指令并执行,该指令的地址为M';

④顺序执行一条指令,其地址为M'+1;

⑤在后地址[M'+2, 319]中随机选取一条指令并执行;

⑥重复①~ ⑤,直到执行320次指令。

(2) 指令序列变换成页地址流。

设:①页面大小为1K;

②用户内存容量为4页到32页;

③用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:

第0条~ 第9条指令为第0页(对应虚存地址为[0, 9]);

第10条~ 第19条指令为第1页(对应虚存地址为[10, 19]);

……

第310条~ 第319条指令为第31页(对应虚存地址为[310, 319]);

按以上方式,用户指令可组成32页。

(3) 计算并输出下述各种算法在不同内存容量下的命中率。

①最佳置换页面置换算法(OPT)

②最近最久未使用页面置换算法(LRU)

③最少使用页面置换算法(LFU)

④CLOCK算法

要求设计一个虚拟存储区和内存工作区,编程序演示以上四种算法的具体实现过程,并计算访问命中率。演示页面置换的四种算法。

5

7、内存的申请与释放

【问题描述】

模拟实现操作系统内存分配的算法。

【设计要求】

(1) 定义一个自由存储块链表,按块地址排序,表中记录块的大小。当请求分配内存时,扫描自由存储块链表,址到找到一个足够大的可供分配的内存块,若找到的块大小正好等于所请求的大小时,就把这一块从自由链表中取下来,返回给申请者。若找到的块太大,即对其分割,并从该块的高地址部分往低地址部分分割,取出大小合适的块返回给申请者,余下的低地址部分留在链表中。若找不到足够大的块,就从操作系统中请求另外一块足够大的内存区域,并把它链接到自由块链表中,然后再继续搜索。

释放存储块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块临接,即对其进行合并操作,直到没有合并的临接块为止,这样可以防止存储空间变得过于零碎。

(2) 空闲区采用分区说明表的方法实现(1)中的功能。要求同上。

8、固定式分区分配及可变式分区分配的存储管理方案设计与实现【问题描述1】

设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。

【设计要求1】

可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。

【问题描述2】

设计一个可变式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。

【设计要求2】

6

对分区的管理法可以是下面三种算法之一:

①首次适应算法

②循环首次适应算法

③最佳适应算法

9、磁盘调度算法

【问题描述】

了解磁盘管理的原理,掌握磁盘调度种算法。

【设计要求】

编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:要求设计主界面可以灵活选择算法,且以下算法为基本要求。

①先来先服务算法(FCFS)

②最短寻道时间优先算法(SSTF)

③扫描算法(SCAN)

④循环扫描算法(CSCAN)

10、模拟UNIX(Linux)文件系统

【问题描述】

在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟UNIX文件系统。

【设计要求】

(1) 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。

(2) 编写一管理程序对此空间进行管理,以模拟UNIX(或Linux)文件系统,具体要求如下:

①要求盘块大小1k

正规文件

②i结点文件类型目录文件

(共1byte)块设备

管道文件

物理地址(索引表)

共有13个表项,每表项2byte

7

文件长度4byte

联结计数1byte

③0号块超级块栈长度50

空闲盘块的管理:成组链接(UNIX)

或位示图法(Linux)

④每建一个目录,分配4个物理块

文件名14byte

⑤目录项信息

i结点号2byte

⑥结构:0#:超级块

1# ~ 20#号为i结点区

20# ~ 30#号为根目录区

⑦功能:初始化

建立文件(需给出文件名,文件长度)

建立子目录

打开文件(显示文件所占的盘块)

删除文件

删除目录

显示目录(即显示目录下的信息,包括文件、子目录等)

显示整个系统信息

11、模拟文件系统

【问题描述】

在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的小型文件系统。

【设计要求】

该小型文件系统没有子目录机制,文件连续分配,不考虑分区。

做一个简单的操作界面,提供四条简单的命令:简单的ls、cat、cp、rd。 进一步增强

上题中的文件系统功能:文件系统不连续分配,可以有子目录机制,(如两级子目录机制)。

8

12、Windows磁盘直接读写实验(1人)

【问题描述】

了解磁盘设备编程的特点。

【设计要求】

通过本实验了解在windows系统中如何直接使用磁盘的读写功能;所编应用程序能够响应用户指定的读写磁盘扇区的请求,也能提供查看磁盘相关参数的功能。技术的关键是使用了windows提供的API(应用程序接口)来实现所要求的功能。用户可以利用API进行底层的磁盘操作。

相关知识

(下列函数的详细使用方法参看VC++的MSDN文档)

CreateFile:用来创建或者打开一个文件、管道、磁盘设备等,它返回一个句柄用于以后对这信对象的访问。

DeviceControl:本API直接向相应设备的驱动程序发出指令,以完成在函数参数中所指定的动作。

WriteFile:本API用于向文件中写入数据,写入操作可以采用同步方式或者异步方式,写入操作从文件指针处开始,写操作后会被相应调整。磁盘设备被当作文件看待。

ReadFile:本API用于文件中读出数据,读出操作从文件指针处开始,文件指针在读操作后会被相应调整。用法同写文件函数相似。

SetFilePointer:用于移动一个打开的文件中的读写指针。

选作部分

1、睡眠理发师问题

【目的】

了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

【设计要求】

编写程序实现理发师与顾客进程的同步。

9

(1) 这是一种经典的IPC问题,理发店有一位理发师,一把理发椅和n把用来等候理发的椅子。如果没有顾客,则理发师在理发椅上睡觉,顾客理来时,如理发师闲则理发,否则如有空椅则坐等,没有空椅则离开,编写程序实现理发师和顾客程序,实现进程控制,要求不能出现竞争。

(2) 将(1)题中问题修改为有两位理发师,设计程序实现同步控制。

问题提示

可以用一个变量waitting来记录等候理发的顾客数,另使用三个信号量:用来记录等候理发的顾客数customers;用来记录理发师是否空闲的信号量barbers,一个用于互斥访问waitting变量的mutex.。

2、读者与写者问题(进程同步问题)

【目的】

了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。

【设计要求】

编程模拟读者与写者问题,要求显示结果。

(1) 多个进程共享一个文件,其中只读文件的称之为读者,其余只写文件的称为写者。读者可以同时读,但是写者只能独立写。

(2) 对(1)修改,使得它对写者优先,即一旦有写者到,后续的读者都必须等待,而无论是否有读者在读文件。

3、模拟文件管理系统

【目的】

深入了解文件管理系统,初步掌握文件管理系统的实现方法。

【设计要求】

编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。

在此文件管理系统,可实现的操作有:

改变目录:格式:cd <目录名>

10

显示目录:格式:dir [<目录名>]

创建目录:格式:md <目录名>

删除目录:格式:rd <目录名>

新建文件:格式:edit <文件名>

删除文件:格式:del <文件名>

退出文件系统:exit

实现参考

(1) 文件系统采用二叉树型存储结构,结点结构如下:

Struct FileNode

{

Char filename [FILENAME_LEN]; //文件名/目录名

Int isdir ; //目录、文件的识别标志

Int i_nlink; //文件链接数

Int adr; //文件的地址

Struct FileNode *parent,*child; //指向父亲的指针和左孩子的指针

Struct FileNode *sibling_prev,*sibling_next; //指向前一个兄弟的指针和后一个兄弟的指针。

}

(2) 目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。

(3) 功能具体描述:

改变目录:改变当前工作目录,目录不存在是给出出错信息

显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s 参数的dir命令,显示所有子目录)

创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信息。

删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。

创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。

删除文件:删除指定文件,不存在时给出出错信息。

退出文件系统:exit

(4) 总体流程:

11

初始化文件目录;

输出提示符,等待接受命令,分析键入的命令;

对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令。直到键入exit退出为止。

4、售票员与乘客(信号量操作)

【目的】

了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。

【设计要求】

编程序模拟车站售票厅内进程同步问题,售票厅任何时刻最多可容纳20名购票者进入,否则需要在外面等待。每个购票者可看成一个进程。

5、驱动调度

【目的】

掌握驱动调度算法的原理。

【设计要求】

模拟电梯调度算法,实现对磁盘的驱动调度。

要求模拟设计一个驱动调度程序,观察驱动程序的动态运行过程。通过实验理解和掌握驱动调度的职能。

通过输入一个0 ~ 1的数来确定函数执行“接受请求”命令,还是执行“驱动调度”命令。同时可以根据自已需要确定是否继续执行。

调用数组对输入的进程进行存储,并运用循环进行显示同时对I/O请求列表进行初始化。

运用电梯调度算法,对I/O列表中的磁盘请求进行调度,同时对I/O列表进行排序,调度完成后显示新的列表。

6、交通信号灯模拟

【目的】

12

了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

【设计要求】

编程模拟交通信号灯的控制。

一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。

车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后),其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。

进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。

进程的消息通信或其通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。

进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。

7、哲学家进餐问题

【目的】

通过实现哲学家进餐问题的互步,深入了解和掌握进程互斥的原理。

【设计要求】

哲学家有N个,规定全体到齐后开始讨论,在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉合一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。

8、司机与售票员(信号量操作)

【目的】

掌握信号的使用方法和PV操作的定义,掌握使用PV操作实现进程之间同步和互斥的方法,加深对进程同步互斥概念的理解。

【设计要求】

13

设计程序模拟在公共汽车上,司机和售票员操作的同步。司机:启动车辆,正常行车,到站停车。售票员:上乘客,关车门,售票,开车门,下乘客。用PV操作对其控制。

9、收银员与顾客问题(信号量操作)

【目的】

了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

【设计要求】

编程模拟下面同步问题:在某超市有下收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如下图所示。为了利用PV操作正确地协调这两类进程之间的工作,设置了三个信号量S1、S2和Sn,且初值分别为0、0、和n。

10、信号量的操作

【目的】

了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

【设计要求】

通过对Windows系统的内核同步对象mutexes和semaphores的使用来实现进程同步的控制。利用CreateSemaphore、WaitForSingleObject等函数检测内核同步对象的状态。

11、进程间的通信(2人)

【目的】

了解进程间通信的机制,实现进程的两种通信方式,多次执行,观察结果,并对两种通信方式进行比较。

【设计要求】

利用系统提供的通信系统调用,进行一种方式的进程通信的程序设计,并对结果进行分析,同时了解另一种通信方式,将两种方式进行比较分析。

14

(1) 消息的创建发送和接收

使用系统调用msgget( )、msgsnd( )、msgrev( )、msgctl( )来编写长度为500字节的发送和接收程序。用一个程序先后创建两个子进程server和client,进行消息队列方式通信。由server建立消息队列,等待其他进程发来消息,当遇到类型为1的消息,则作为通信结束的信号,取消消息队列,退出。Server每接收到一个消息显示在屏幕上。

Client判断一个数据中的整数是否为素数,然后使用server建立的消息队列,将某数是否为素数的消息依次发送给server,然后退出。Client每次发送时把消息显示在屏幕上。

(2) 共享存储区的创建,附接和断接

使用系统调用shmget( )、shmat( )、shmctl( )编写一个与上面(1)中相同功能的程序。

12、分时系统实现

【目的】

了解计算机系统的启动过程,实模式和保护模式的区别,进程管理功能的具体实现。

【设计要求】

(1) 制作计算机启动盘。

(2) 实现由实模式进入到保护模式。

(3) 静态建立几个进程,采用时间片轮转调度策略调度进程执行。

参考书目

《操作系统实验教程》,张丽芬、刘利雄、王全玉等,清华大学出版社。

《操作系统原理与实践教程》周湘贞、曾宪权编,清华大学出版社。

《Windows操作系统核心编程实验教程》,宋晓宇,中国铁道出版社。

三、关于选题及成绩评定的说明

1、设计题目选择

15

(1) 课程设计时间一般为一周,地点学院机房,老师将不定期点名。

(2) 课程设计题目均选自《操作系统课程设计指导》,请根据选题目查阅相应内容;学生也可以自己选题,难度与设计指导中布置的题目难度相当,并必须经老师审核批准。

(3) 确定自己设计的题目的方法建议:用班级名单顺序号对n取余,结果所得序号即为应做设计题目。

(4) 按照设计内容要求进行课程设计。

(5) 向指导老师提交电子版设计文档,由指导老师评阅。

(6) 电子版设计文档经审核合格后,由指导老师对设计内容进行口头提问考核。

(7) 提交合格的电子版文档和打印文档。电子文档名:设计题目+班级+学号+姓名,课代表收齐,统一打包发给老师。

2、评分标准

(1) 操作系统课程设计严禁抄袭,无论是不同小组之间还是与往届之间,一旦确认为抄袭作品记为零分。被抄袭的作品与抄袭作品的处理相同。

(2) 课程设计的成绩分两部分:上机检查设计结果与质疑+设计报告。

(3) 提交实验报告时,给出自我评价成绩。

(4) 成绩为“优”的同学,必须通过评优答辩。

四、课程设计报告内容要求

1、实验题目的描述与要求;

2、总体设计及环境说明、工具等;

3、详细设计:本题目所需数据结构与模块说明;

4、调试过程、测试数据、运行结果及对结果的分析等;

5、自我评析与总结:

(1) 你认为你完成的设计哪些比较好或比较出色;

(2) 差距与局限:从本设计中得到的收获,对设计进行进一步改进的思路;

(3) 自评成绩。

五、课程设计报告模板(见下页)

16

设计题目:

学院:信息科学与工程学院专业:

班级:

学号:

学生姓名:

指导教师:

2015 年 1 月2 日

目录

1实验内容(二号黑体,段前12磅,段后12磅) (3)

1.1基本要求(三号黑体,段前、段后均0磅) (3)

1.1.1三级标题(四号黑体,段前、段后均0磅) (3)

1.1.2三级标题 (3)

1.1.3三级标题 (3)

1.2选作内容 (3)

1.3二级标题 (3)

1.3.1三级标题 (3)

1.3.2三级标题 (3)

1.3.3三级标题 (3)

1.4二级标题 (3)

2数据结构设计 (4)

2.1二级标题 (4)

2.1.1三级标题 (4)

2.1.2三级标题 (4)

2.2二级标题 (4)

2.3二级标题 (4)

3算法设计 (5)

3.1功能模块图 (5)

3.1.1三级标题 (5)

3.1.2三级标题 (5)

3.2算法思路 (5)

3.2.1实现方法 (5)

3.2.2设计思想 (5)

3.3二级标题 (5)

4测试数据及程序运行情况 (6)

4.1二级标题 (6)

4.1.1三级标题 (6)

4.1.2三级标题 (6)

4.2二级标题 (6)

4.3二级标题 (6)

5实验过程中出现的问题及解决方法 (7)

5.1二级标题 (7)

5.1.1三级标题 (7)

1

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

操作系统课程设计题目

课程设计任务书 一、课程设计目的 《计算机操作系统》课程设计是计算机类专业的集中实践性环节之一,是学习完《计算机操作系统》课程后进行的一次全面的综合练习。其目的在于加深对操作系统课程的理解,使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,理解操作系统在计算机系统中的作用、地位和特点,具有分析实际操作系统,设计、构造和开发现代操作系统的基本能力,为今后从事的各种实际工作,如设计、分析和改进各种系统软件和应用软件提供必要的软件理论基础。 二、课程设计内容及要求 课程设计要求: 每位同学从下述设计任务中任选一个任务完成,上机验收运行结果,现场提问,并提交所完成该任务的课程设计报告。 实验要求: 1)上机前认真使用C语言编写好程序,采用Visual C++6.0作为编译环境; 2)上机时独立调试程序 3)上机验收运行结果,现场提问 4)根据具体任务要求,提交课程设计实验报告,报告内容包括:课程设计目的、内容、基本原理、模块划分、数据结构、算法设计、程序流程图(包括主程序流程图、模块详细设计流程图等)、以及算法源码(必须有相关注释,以有助于说明问题为宜,不得全盘打印而不加任何注释)、心得体会等。

设计内容一页式虚拟存储管理页面置换算法 1.目的和要求 在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础 2.实验内容 阅读教材《计算机操作系统》,掌握存储器管理相关概念和原理。 模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。 前提: (1)页面分配采用固定分配局部置换。 (2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。 (3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。 3.实验环境 Windows操作系统、VC++6.0、C语言 4.实验提示 (1)基础知识 存储管理是操作系统进行资源管理的一个重要功能。现代操作系统广泛采用虚

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

《操作系统课程设计》题目要求

操作系统课程设计要求 一.设计目的 熟悉Linux编程环境,加强对Linux命令的理解及函数的运用 二.设计内容 1. 在Linux环境下模拟实现简单命令解释器。 (1)要求实现的基本命令包括: pwd //显示当前所在目录的路径名 dir <目录名> //列出指定目录名中的所有目录及文件 cd <目录名或路径>//改变当前工作目录 newdir <目录名> //新建目录 deldir <目录名> //删除目录 exit //退出命令解释程序 (2)可选做的扩展命令包括: rename <旧文件名> <新文件名> //重命名一个文件或目录 find <目录> -name <待查找的文件名> //在指定的目录及其子目录中查找指定的文件date //显示当前日期 (3)提示:整个程序的大致框架可参考如下: while ( exit未被输入) { 接收键盘的一行输入 分析输入的命令 对输入的命令进行处理,调用系统函数实现功能 } 2. 设计要求 (1) 设计必须在Linux环境下进行。 (2) 命令解释程序的提示符为:姓名拼音@ (3) 程序编写中不得使用system()系统调用。 (4) 整个程序必须严格经过测试,完成所有基本功能。源程序应有较详尽的注释。 3.可能用到的系统调用: open(),close(),read(),write(),creat() chdir(), opendir(),readdir(),rewinddir(),closedir(),rmdir(),mkdir() getcwd(), ftw() time(), localtime(), asctime()

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 2.1 系统的主要功能 (1) 2.2系统模块功能结构 (1) 2.3运行环境要求 (2) 2.4数据结构设计 (2) 第3章详细设计 (3) 3.1模块设计 (3) 3.2算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 5.1运行结果及分析 (4) 5.2系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write写入文件 Delete 删除文件 Mkdir 建立目录

Cd 切换目录 Logout 退出登录 2.2系统模块功能结构 2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users;

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

操作系统-课程设计

课程设计说明书(操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13-2 学号:20133029xx 学生姓名:xx 指导教师:xx 2015年12月15日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。进程调度是进程管理过程的主要组成部分,是必然要发生的事件。 在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。 进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。 关键词:进程,调度,PCB,时间片轮转

目录 1.设计目的 (6) 2.设计思路 (6) 3.设计过程 (8) 3.1流程图 (8) 3.2算法 (8) 3.3数据结构 (10) 3.4源代码 (10) 4.实验结果及分析 (20) 4.1 使用说明 (20) 4.2程序演示 (20) 5.实验总结 (24) 6.参考文献 (24)

【精选】操作系统课程设计(文件系统管理)文件

评定等级 操作系统课程设计 文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制

文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看, 加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了 解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete 等文件命令,对文件进行操作。以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录 UFD (User File Directory )。这些文件目录可以具有相似的结构,它由用户所有文件的文件 控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory );在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目 录的指针。

2017操作系统(含课程设计) - 随堂练习

随堂练习提交截止时间:2017-12-15 23:59:59 当前页有10题,你已做10题,已提交10题,其中答对10题。 1.(单选题) 操作系统是基本的特征是() A、并发 B、共享 C、虚拟 D、异步 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 2.(单选题) 下面不属于操作系统设计目标的是() A、提高资源利用率 B、提高系统吞吐量 C、用户操作计算机更方便 D、并行执行多个进程 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 3.(单选题) 历史上最早出现的操作系统是() A、单道批处理系统 B、多道批处理系统 C、分时系统 D、实时系统 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 4.(单选题) 实时操作系统必须在()内处理完来自外部的事件。 A、响应时间 B、周转时间 C、被控对象规定时间 D、调度时间 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 5.(单选题) 操作系统是对()进行管理的软件。 A、软件 B、硬件 C、计算机资源 D、应用程序 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 6.(单选题) 配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的一台计算机只是一台逻辑上的计算机,称为()计算机。 A、并行 B、真实 C、虚拟 D、共享 答题: A. B. C. D. (已提交)

问题解析: 7.(单选题) 操作系统中采用多道程序设计技术提高了CPU和外部设备的() A、利用率 B、可靠性 C、稳定性 D、兼容性 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 8.(单选题) 在操作系统中,并发性是指若干事件____发生( ) A、在同一时刻 B、在不同时刻 C、在某一时间间隔内 D、依次在不同时间间隔内 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 9.(单选题) ()操作系统允许在一台主机上同时联接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。 A、网络操作系统 B、批处理操作系统 C、实时操作系统 D、分时操作系统 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 10.(单选题) 下面关于操作系统的叙述中正确的是 ( ) A、批处理作业必须提交作业控制信息 B、分时系统不一定都具有人机交互功能 C、从响应时间的角度看,实时系统与分时系统差不多 D、由于采用了分时技术,用户可以独占计算机的资源 答题: A. B. C. D. (已提交) 参考答案:A 问题解析:

操作系统课程设计报告

; 一、概述 课程设计目的、意义: 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 主要任务: 模拟文件系统设计是设计和实现一个简单的文件系统。内容包括: 1.建立文件存储介质的管理机制 2.建立目录(采用一级目录结构) 3.文件系统功能(显示目录、创建、删除、打开、关闭、读、写) ~ 4.文件操作接口(显示目录、创建、删除、打开、关闭、读、写) 二、系统设计 课程设计的系统设计: 本系统模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文

件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 整体设计框架: 系统初始化界面是由创建用户存储空间,管理文件,退出系统三个模块组成。用户创建由创建用户存储空间,进入目录,删除用户存储空间,显示所有用户存储空间,等模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 三、系统实现 课程设计主要内容的实现程序代码: 《 #include <> #include <> #include <> typedef struct file{ char name[10]; struct file *next; }File; typedef struct content{ ! char name[10]; File *file;

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件 系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景

计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下: 钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计论文

学年论文(课程设计)题目:操作系统课程设计 学院数学与计算机学院 学科门类工学 专业网络工程 学号 姓名 指导教师王煜 年月日

河北大学学年论文(课程设计)任务书 (指导教师用表) 指导教师签字: 系主任签字: 主管教学院长签字: 装 订 线

河北大学学年论文(课程设计)成绩评定表学院:数学与计算机学院 装 订 线

摘要 此系统实现了存储管理、设备管理和进程管理。 存储管理部分主要实现主存空间的分配和回收。存储管理采用可移动的可变分区存储管理方式。采用数组来模拟主存,大小为512个字节。 设备管理主要包括设备的分配和回收。模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。设备分配时采用采用先来先服务策略。设备回收时唤醒等待设备的进程。 进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。其中硬件中的中央处理器用不断循环的函数CPU( )模拟,重要寄存器(如:程序状态寄存器PSW、指令寄存器IR)用全局变量模拟,中断的发现是在函数CPU中加检测PSW 的方式来模拟,时钟的模拟通过timer控件实现。进程控制块的模拟通过数组,本系统最多容纳10个。进程调度时采用时间片轮转调度算法,时间片为5。 关键词:存储管理设备管理进程管理时间片

ABSTRACT The system has storage management, equipment management and process management. The storage management has achieved the allocation and recovery of the main memory space. Variable storage management is used as storage management .We simulate the main memory by array, whose size is 512 bytes. The device management, including the distribution and recovery of devicet. We simulate three devices ,A,B,C. the numbers of them are 3,2,1. The distribution of device used to adopt first-come first-service strategy. It awakes the blocking process when the device is recycled. The process management, including scheduling ,creating revocation ,blocking and waking up the process, the realization of the interruption.We simulate the central processing unit by the cycling function named CPU(),simulate the important register by global variable, simulate the recovering of interruption by checking PSW in the function of CPU(),simulate the clock by the timer control. The simulation of the process control block by array, whose number is up to 10. When the scheduling of the process happens, we use the algorithm of time piece rotation scheduling, and the time piece is 5. Key words: storage device process time

操作系统课程设计二级文件系统

操作系统课程设计报告 专业:计算机信息处理 学号:09103408 姓名:纪旻材 提交日期:2011-12-28

【设计目的】 1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 1、delete 删除文件 2、open 打开文件 3、close 关闭文件 4、write 写文件 【实验环境】 Windows7系统

Visual studio 2010 【相关知识综述】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 【设计思路】 1 主要数据结构 #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/ #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/ typedef struct/*the structure of OSFILE定义主文件*/

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件

系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。

2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

操作系统课程设计题目

实验一进程调度 一、实验目的 观察、体会Linux 系统的进程调度方法,并通过一个简单的进程调度模拟程序的实现,加深对进程调度算法,进程切换的理解。 二、实验内容 采用动态优先数的方法,编写一进程调度程序模拟程序。模拟程序只进行相应的调度模拟操作,不需要实际程序。 [提示]: (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: 进程名 指针 要求运行时间 优先数 状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。 指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。 要求运行时间——假设进程需要运行的单位时间数。 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。 (4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行: 优先数-1 要求运行时间-1 来模拟进程的一次运行。 提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。 (5) 进程运行一次后,若要求运行时间?0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。 (6) 若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,

操作系统课程设计(文件系统)

操作系统课程设计 班级: 姓名: 学号: 使用语言:C++ 指导老师: 学院:

一、系统要求 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 二、系统分析 1、设计思想 本文件为二级文件系统,即要实现对文件的增删改查,同时又具备登陆系统、注册用户的功能,各个用户之间的文件系统互不干扰。 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录、文件数据内容: 0 48*5 48*5+44*50 48*5+44*50+264*200 每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。整个系统的编码构成主要分为:

Allstruct.h 定义了每个分区的结构体; Mysys.h 声明了对系统操作的各种方法; Myuserfile.h 声明了对文件操作的各种方法; Mymain.cpp 整个系统的主函数,操作入口; Mysys.cpp 包含了mysys.h,实现了操作系统的各种方法;Myuserfile.cpp 包含了myuserfile.h,实现了操作文件的各种方法; 2、主要数据结构 Allstruct.h文件的内容: struct s_user //用户区结构体 { long isuse; //是否使用 char name[20]; //用户名 char psd[20]; //密码 long address; //目录地址 }; struct s_list //目录结构体 { long isuse; //是否使用 char name[20]; //文件名字 long myaddress; //本条目录地址 long pointaddress; //指向的文件的地址 long isfile; //是否锁定 long pointsize; //目标文件的大小 long nextaddress; //下条目录的地址 }; struct s_file //文件结构体 { long isuse; //是否使用 char content[256]; //文件内容 long next; //下个文件块地址 };

相关主题
文本预览
相关文档 最新文档