当前位置:文档之家› 系统软件课程设计指导书-2010-12

系统软件课程设计指导书-2010-12

系统软件课程设计指导书-2010-12
系统软件课程设计指导书-2010-12

北京工业大学计算机学院

2008级系统软件课程设计指导书

二〇一〇年十二月

一、课程设计的目的和意义

本次系统软件课程设计的主要任务有两个方面:一方面是分析Linux 源代码;另一方面是进行系统级的程序设计。本课程设计是操作系统原理课程的延伸。通过该课程设计,使学生更好地掌握操作系统各部分结构、实现机理和各种典型算法,加深对操作系统的设计和实现思路的理解,培养学生的系统设计和动手能力,学会在内核、系统调用及应用程序几个层次上分析和编写程序。课程设计的实施将使学生在以下几个方面有所收获:(1)加深对操作系统原理的理解,提高综合运用所学知识的能力;(2)培养学生自主查阅参考资料的习惯,增强独立思考和解决问题的能力;(3)通过课程设计,培养严谨的科学态度和协作精神。

二、课程设计题目和时间安排

2.1版本要求和预备知识

(1)本次课程设计所分析的源代码为Linux 2.4.18 版本(有蒋静、徐志伟著《操作系统原理——技术与编程》的同学,也可从随书携带的光盘中得到)。

(2)课程设计要求及源代码下载地址:

登录到教育在线下载(操作系统)

(3)源代码阅读辅助工具:

在Windows 环境下推荐SourceInsight3.5

在Linux 环境下推荐SourceNavigator 5

(4)要有操作系统和微机原理的基本知识;对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展知识的了解。熟悉Linux内核源代码的整体分布情况

2.2 课程设计时间安排

课程设计时间安排:18周周一至19周周五(共2周)

教师答疑时间和地点:工作日每天8.30-11.30、13.30-16.30,信南412。

联系电话:67391745

验收时间见“四课程设计的考核与成绩评定”的要求。

2.3 课程设计指导教师

王丹 67396752地点:信南404 wangdan@https://www.doczj.com/doc/509010799.html,

高红雨 67391745地点:信南412 hygao@https://www.doczj.com/doc/509010799.html,

金雪云 67391745地点:信南412 jinxueyun@https://www.doczj.com/doc/509010799.html,

2.4 课程设计题目选择

请同学根据个人兴趣、专业基础和预期投入的时间、精力等因素,从下面四

个题目中选择一个。

(1)如果选择分析Linux源代码:则可以以3人为一组展开。学生可综合考虑能力、兴趣、优势互补等原则自愿组合,选择自己的课程设计题目。原则上在每个老师所指导的学生名单中进行组合,尽量避免跨指导教师组合。如果确实需要跨指导教师组合的话,请一定注明。

分组名单提交:hygao@https://www.doczj.com/doc/509010799.html, (高红雨老师)

分组名单提交:wangdan@https://www.doczj.com/doc/509010799.html, (王丹老师)

分组名单提交:jinxueyun@https://www.doczj.com/doc/509010799.html, (金雪云老师)

由于各任务的难度有所不同,学生应视自己的实际能力进行选择。在课程设计之初进行登记,并发送到上述地址。

要求:一旦提交分组名单后,不允许擅自更换课程设计题目。

(2)如果选择操作系统相关原理的程序设计,则只能由一个人独立完成,并且要求完成全部任务6到任务9,共4个子任务。对于这4个任务,要求:除了基本的原理与算法能够实现外,要求有图形化界面(注意:指导书后面的举例仅使用了字符界面),辅助有动态显示的功能。没有这部分内容,会大大影响成绩。

(3)Pintos实验项目。以小组为单位完成,小组人数不超过3人。具体要求见相关资料。

(4)Minix实验项目。以小组为单位完成,小组人数不超过3人。具体要求见相关资料。

2.5 课程设计任务描述

任务1-任务5:分析Linux源代码;任务6-任务9:程序设计。

任务1:分析Linux系统启动

[目的]了解Linux系统的启动过程

[要求]

(1)掌握BIOS启动过程

(2)掌握系统引导过程

(3)掌握实模式下的系统初始化

(4)掌握内核解压缩过程

(5)掌握保护模式下的系统初始化

[代码] (汇编代码)

 (1)arch/i386/bootsect.S

 (2)arch/i386/boot/ setup.S

(3)arch/i386/boot/compressed/head.s

(4)arch/i386/kernel/head.S

[难度] 稍难

任务2:分析Linux的内存管理

[目的] 了解Linux的内存管理实现机制

[要求]

(1)掌握x86 的地址映射过程

(2)掌握线性地址和物理地址的相互转换

(3)掌握物理页面的分配和回收,描述物理页面的数据结构的作用和意义 (4)掌握缺页异常处理过程

[代码]

(1)linux\mm\vmalloc.c

(2)linux\mm\memory.c

(3)linux\mm\page_io.c

(4)linux\mm\page_alloc.c

(5)linux\mm\mmap.c

(6)linux\i386\mm\fault.c

(7)linux\mm\swap.c

[难度] 较难

任务3:进程控制

[目的] 了解Linux 中的进程控制

[要求]

(1)掌握进程描述符及其重点字段的含义

(2)掌握Linux 中创建进程的过程

(3)掌握相关的数据结构和相关的系统调用

(4)了解其执行的内存变动和硬件的相关变化

[代码]

(1)kernel/fork.c

(2)fs/exec.c

(3)kernel/exit.c

[难度] 较容易

任务4:时钟中断与进程调度

[目的]了解时钟中断与进程调度

[要求]

(1)掌握系统时钟的初始化;

(2)掌握时钟中断的处理

(3)掌握定时器的实现

(4)掌握Linux 进程的调度时机和调度策略

[代码]

(1)arch/i386/kernel/time.c

(2)kernel/timer.c

(3)kernel/sched.c

[难度] 中等难度

任务5:进程间通信

[目的]学习进程间通信方法

[要求]

(1)掌握管道的创建和读写过程等

(2)掌握共享内存区的创建、控制和管理方法

(3)掌握信号的发送,接收和处理过程

(4)掌握消息缓冲区、消息结构、消息队列结构,以及相关的系统调用 (5)掌握信号量的创建方法、信号量的操作以及对信号量的控制和管理 [代码]

(1)fs/pipe.c

(2)ipc/shm.c

(3)ipc/msg.c

(4)ipc/sem.c

(5) kernel/signal.c

[难度] 较容易

任务6:进程调度

1 设计目的

(1)要求学生设计一个模拟进程调度的算法(时间片轮转及先来先服务)。(2)理解进程控制块的结构。

(3)理解进程运行的并发性。

(4)掌握进程调度算法。

2 设计要求

在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。进程调度的算法有多种,常用的有优先级调度算法、先来先服务算法、时间片轮转算法。

进程是程序在处理机上的执行过程。进程存在的标识是进程控制块(PCB),进程控制块结构如下:

typedef struct node

{

char name[10]; /* 进程标识符 */

int prio; /* 进程优先数 */

int round; /* 进程时间轮转时间片 */

int cputime; /* 进程占用CPU时间 */

int needtime; /* 进程到完成还需要的时间 */

int count; /* 计数器 */

char state; /* 进程的状态 */

struct node *next /* 链指针 */

}PCB;

系统创建一个进程,就是由系统为某个程序设置一个PCR,用于对该进程进行控制和管理,进程任务完成,由系统收回其PCB,该进程便消亡。每个进程可以有三个状态:运行状态、就绪状态和完成状态。

用C++或者Java语言编写一个程序实现进程调度的算法,模拟进程调度的过程,加深对进程控制块概念和进程调度算法的理解。

本任务要求完成时间片轮转及先来先服务两个算法。

3. 时间片轮转算法完成进程的调度

设计要求:

(1)进程的调度采用时间片轮转算法。

(2)设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。

(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。

(4)输出的格式和上面的运行结果分析中的格式相同。

时间片轮转调度,具体做法是调度程序每次把CPU分配给就绪队列首进程使用一个时间片。当这个时间片结束时,就强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮调度。实现这种调度要使用一个间隔时钟。当一个进程开始运行时,就将时间片的值置入间隔时钟内,当发生间隔时钟中断时,就表明该进程连续运行的时间已超过一个规定的时间片。此时,中断处理程序就

通知处理器调度进行处理器的切换工作。

4. 用先来先服务算法完成进程的调度

设计要求:

(1)进程的调度采用先来先服务算法。

(2)设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。

(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。

(4)输出的格式和上面的运行结果分析中的格式相同。

先来先服务:按照进程进入就绪队列的先后次序来分配处理器。先进入就绪队列的进程优先被挑选,运行进程一旦占有处理器将一直运行下去直到运行结束或被阻塞,这是一种非剥夺式调度。

任务7:主存空间的回收与分配

1.设计目的

主存是中央处理器能直接存取指令和数据的存储器,能否合理地利用主存,在很大程度上将影响到整个计算机系统的性能。主存分配是指在多道作业和多进程环境下,如何共享主存空间。主存回收是指当作业执行完毕或进程运行结束后将主存空间归还给系统。主存分配与回收的实现是与主存储器的管理方式有关。本次设计主要是为了帮助理解主存空间的分配与回收的几种算法

(1) 掌握最先适应分配算法

(2) 掌握最优适应分配算法

(3) 掌握最坏适应分配算法

2.设计要求

用户提出内存空间请求,系统根据申请者要求,按照最先适应分配算法的分配策略分析内存空间的使用情况,找出能满足请求的空闲区,分给申请者,当程序执行完毕时,系统要收回它所占用的内存空间。

建立空闲数据文件,空闲区数据文件包括若干行,每行有两个字段:起始地址、内存块大小(均为整数),各字段以逗号隔开。下面是一个空闲区数据文件的示例:

0,10

10,08

18,10

28,06

34,10

44,09

读取空闲区数据文件,建立空闲区表并在屏幕上显示空闲内存状态,空闲区

表记录了可供分配的空闲内存的起始地址和大小,用标志位指出该分区是否是未分配的空闲区。

接收用户的内存申请,格式为:作业名、申请空间的大小。

按照内存分配算法中的一种方法选择一个空闲区,分割并分配,修改空闲区表,填写内存已分配区表(起始地址、长度、标志位),其中标志位的一个作用是指出该区域分配给哪个作业。

作业结束后回收内存。

空闲区表的结构如下:

typedef struct node{

int start;

int length;

char tag[20];

}job;

本次设计要求完成如下算法:

(1) 设计一个内存分配回收的程序使用最先适应分配算法

(2) 设计一个内存分配回收的程序使用最优适应分配算法

(3) 设计一个内存分配回收的程序使用最坏适应分配算法

用户提出内存空间请求,系统根据申请者要求,选择上述算法的一种分配策略分析内存空间的使用情况,找出合适的空闲区,分给申请者,当作业执行完毕时,系统收回它所占用的内存空间。

3.运行结果分析

按照自己编写的测试文件的内容,先分析一下算法应该是一个什么样的执行效果,然后实际运行程序验证一下自己的分析结果,另外还可以通过修改测试文件中的数据来看看程序运行的情况。

任务8:模拟DOS文件的建立和使用

1 设计目的

磁盘文件是磁盘上存储的重要信息,通过本实验模拟DOS和UNIX文件的建立和使用情况,理解磁盘文件的物理结构。文件管理是操作系统中重要的内容之一,不同的文件系统提供了不同的物理结构,通过实验,深入理解文件的物理结构与存取方法之间的关系,以便更好的掌握文件系统的概念。

2 设计要求

<1> 模拟设计DOS操作系统中磁盘文件的存储结构

DOS操作系统对磁盘文件的管理采用连接结构,将所有的链结指针集中在一起,存放在文件分配表(FAT)中。连接文件的第一个物理块号登记在文件目录中。其设计思想是:假定磁盘上共有N个物理块可供使用,当要存放文件时,

从FAT 表中寻找其值为0的项,用其对应的物理块存放文件信息,并把文件占有的各物理块用链接指针登记在FAT 表中。再把文件的第一个物理块号登记在文件目录中。 文件目录及FAT 表如图所示:

000 001 002 003

004

007 … 010 … …

在DOS 中FAT 表的前两项(001和002)用来记录磁盘的类型。而从第2项开始记录磁盘的分配情况和文件各物理块的链接情况。在FAT 表中第三项为0,表示对应的第三块空闲。由图1还知道文件A 的各记录依次存放在第2、第4、第15、第16、第50等六个物理块中。第50块中的指针为FFF ,表示文件A 的结束。文件B 的各记录依次存放在第7、第10、第20等三个物理块中。第20块中的指针为FFF 。 假定磁盘存储空间共有100个物理块,设计一个文件分配表。为了简单,文件分配表可用一个数组定义,其中每一个元素与一个物理块对应。当第i 个元素为0时,表示第i 块空闲;当第i 个元素既不为0也不为FFF 时,其值表示该文件的下一个物理块号。另外,再设一个空闲块总数变量记录系统还有的空闲块数。 为了简单,假定一个物理块指存放一个逻辑记录,要求设计一个程序,把文件的逻辑记录结构转换成MS-DOS 的链接结构。当用户要求将已在主存的文件保存在磁盘上时,给出文件名及文件的记录个数,系统应能在磁盘上正确地保存文件。或当用户要求给指定文件增加记录时,也应正确的实现,并插在指定记录之后。 为了正确地执行模拟程序,可用键盘模拟输入用户的要求。输入格式为: write(文件名,记录个数)

文件名

起始块号

文件长度

FDF A 002 5块

FFF 004B 007 2块

000. . . . . . .

.

.

015… 010… 020016050…

insert(文件名,逻辑记录号)

<2> 模拟设计便于直接存取的索引文件结构

为了便于用户直接存取文件的各个逻辑记录,在MS-DOS 中通过文件目录,再沿着链查找FAT 表,便可直接找到指定逻辑记录对应的物理块。在小型机或更高级的文件系统中,直接存取文件的方法是为每个文件建立一个索引表,指出各逻辑记录与物理块的对应关系。

最简单的形式是一个逻辑记录对应一个物理块。文件目录与索引表的关系如图所示。

通常索引表按照逻辑记录顺序建立,这样既有利于顺序存储,又有利于直接存储。为了标识哪些记录已经建立,哪些记录还没建立,故在索引表中增设一个标志位。写文件或插入一个记录的过程是寻找一个空闲物理块,然后将其填入索引表对应项中。其建立过程同第一题,即write (文件名,记录号)和insert (文件名,记录号)。

文件名 索引表地址 A

B

要求用位示图描绘出磁盘的使用情况,并要求模拟程序执行过程的每一步都能显示文件目录,位示图,索引表。

任务9:磁盘调度

1.设计目的

(1)要求学生设计一个模拟磁盘调度的程序

(2)理解磁盘调度过程中的三个时间段

(3)理解磁盘调度的三种算法

2.实验原理

共享设备的典型代表为磁盘,磁盘的物理块的地址由柱面号、磁头号、扇区号来指定,完成磁盘某一个物理块的访问要经过三个阶段:寻道时间Ts、旋转延迟Tw和读写时间Trw。

寻道时间Ts是磁头从当前磁道移动到目标磁道所需要的时间;旋转延迟Tw 是当磁头停留在目标磁道后,目标物理块从当前位置旋转到磁头位置的时间;读写时间Trw是目标物理块内容与内存中对应交换的时间。磁盘调度的原则是公平和高吞吐量,衡量指标有访问时间T和平均访问时间Ta:

T=Ts+Tw+Trw

Ta=Tsa+Twa+Trwa

寻道时间和旋转延迟成为调度算法的主要考虑因素。减少访问时间就是要减少寻道时间和旋转延迟。

3 设计要求

(1)设计一个函数完成先来先服务的磁盘调度功能

(2)设计一个函数完成最短寻道时间优先的磁盘调度功能。

(3)设计一个函数完成电梯算法的磁盘调度功能。

三、课程设计报告的内容及要求

3.1 课程设计报告内容要求

课程设计报告应该能够反映学生完成课程设计题目的全部情况,包括对课程设计题目要求的分析、功能描述、算法或者模型分析等等。课程设计报告应该包括下列主要内容:

报告题目(见封面要求,封面上注明提交的时间)

报告摘要

关键词

引言(总体介绍整个任务,详细说明每名同学的分工和工作量)

每名同学撰写自己所负责的工作,包括如下内容:

数据结构及变量说明

完成功能的主要函数

程序段的功能描述和代码注释

代码阅读框图(适用于分析Linux内核源代码的各项任务) 结束语

剖析体会:① 结合操作系统的理论学习,谈操作系统具体功能如何实现。② 阅读程序后有什么收获。

参考文献及其在课程设计报告中的引用

3.2 课程设计报告的格式要求

要求课程设计报告用A4纸打印成册。具体格式说明如下:

1.标题分为三级

第1级标题一、三号黑体,居中

第2级标题 1.1 四号黑体

第3级标题 1.1.1 小四号黑体

2.正文

五号宋体,首行缩进两个汉字,两端对齐,行间单倍距

3.封面格式

课程设计题目名称(二号黑体字)

学号____________(四号宋体)

姓名____________(四号宋体)

指导教师____________(四号宋体)

2009年6月(五号宋体)

3.3 需要注意的问题

为了完成课程设计的各项任务,并获得良好的成绩,在课程设计过程中应该注意以下几个问题:

1、对于在阅读源代码的过程中所遇到的头文件,如include/linux/time.h,include/linux/sched.h等也需要弄清楚,否则会影响程序的阅读。

2、本次课程设计要求阅读的Linux源代码版本为2.4.18,其他版本无效;

3、结合操作系统基本原理进行代码分析,并进行详细分析和完整注释,注释越详细,成绩越好;

5、设计型题目要按照要求完成全部算法

6、一定要充分地考虑个人的能力选择相应的题目;

7、注意版权的自我保护;

8、认真写好课程设计报告;

9、有问题及时与老师联系、沟通。

四、课程设计的考核与成绩评定

4.1成绩评定方法

课程的总成绩采用百分制。除了论文内容外,还要参照论文结构并适当考虑所选任务的难易程度。

有下列情况之一视为课程设计总评成绩不及格:

z没有按照题目要求进行代码分析和注释;

z没有按照要求编写课程设计报告;

z通过教师考查表明课程设计不是自己独立完成的。如发现课程设计报告有抄袭现象,抄袭者和被抄者成绩都记为不及格。

4.2验收要求

1.学生应按照时间要求准时到指定地点验收。要求全组同学必须同时到齐;如报告有明显问题,必须立刻修改;

2.验收时带学生证;

3.将相关内容刻录到光盘中,验收时需上交课程设计报告和光盘;

4.3 验收过程

1.交课程设计报告和光盘(交到各自的指导教师手里)

2.回答老师提出的问题

4.4验收时间和地点

具体安排将于第19周周二前在教育在线公布。请同学届时注意查看。

五、如何阅读Linux源代码

方法一:要分析Linux内核源代码,首先必须找到各个模块的位置,即要弄懂源码的文件组织形式,如Linux目录结构、Linux程序文件的后缀名等。注意:Linux下的汇编语言经常插入到C语言的代码中,以完成一些硬件相关或需要高

效执行的功能。Linux下的汇编语言格式使用的是AT&T格式,而DOS/Windows 下的汇编语言使用的是Intel格式,要弄清楚其主要的区别。

方法之二:以程序流程为线索,一线串珠。一线串珠,就是指根据程序的执行流程,把程序执行过程所涉及到的代码分析清楚。这种方法最典型的应用有两个:一是系统的初始化过程;二是应用程序的执行流程:从程序的装载,到运行,一直到程序的退出。

方法之三:以数据结构为基点,触类旁通。程序=数据结构+算法。数据结构体现了整个系统的构架。例如,把进程控制块结构分析清楚了,就对进程有了基本的把握;把页目录结构和页表结构弄懂了,两级虚存映射和内存管理也就掌握得差不多了。

方法之四:以功能为中心,各个击破。围绕自己所分析的代码所完成的功能进行分析,如进程管理、内存管理、文件系统、硬件驱动、系统调用等。

六、Linux源代码阅读工具

作为一个开放源代码的操作系统,Linux附带的源代码库使得广大爱好者有了一个广泛学习、深入钻研的机会。然而Linux内核的组织极为复杂,同时,又不能像windows平台的程序一样,可以使用集成开发环境通过察看变量和函数,甚至设置断点、单步运行、调试等手段来弄清楚整个程序的组织结构,使得Linux 内核源代码的阅读变得比较困难。

Source Insight3.0是一个强大的源代码编辑器,它的卓越性能使得学习Linux内核源代码的难度大大降低,它是一个Windows平台下的共享软件,可以从 https://www.doczj.com/doc/509010799.html,/上下载30天试用版本。由于Source Insight 是一个Windows平台的应用软件,所以首先要通过相应手段把Linux系统上的程序源代码弄到Windows平台下,这一点可以通过在Linux平台上将/usr/src目录下的文件拷贝到Windows平台的分区上,或者从网上光盘直接拷贝文件到Windows平台的分区来实现。

七、设计提示(任务6----任务9):

任务6:基于优先级的进程调度算法

(1)进程的调度采用优先数调度算法。

(2)采用动态优先数法确定进程的优先级别。

(3)设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。

(4)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。

优先数调度算法为每个进程设一个优先数,它总是把处理机给就绪队列中具有最高优先权的进程,常用的算法有静态优先数法和动态优先数法。

动态优先数法,使进程的优先权随时间而改变。初始的进程优先数取决于进程运行所需要的时间,时间达,则优先数低。采取了将进程优先数定为用一个较大的数(50)减去进程运行所需要的时间。随着进程的运行对优先数进行调整,每次运行时都是从就绪队列中选取优先数最大的进程运行,所以将就绪队列按照优先数的大小从高到低排列,这样,每次取队头进程即可。

进程每执行一次,优先数减一个数(自定),CPU时间数加1,进程还需要的时间数减1。如果进程所需要的时间为0,说明进程运行完毕,将其状态变为完成状态“F”,将此PCB插入到完成队列中,若就绪队列不空,则将就绪队列中的第一个PCB变为运行状态。进程若没有完成,则将其优先数和就绪队列中第一个PCB的优先数作比较,如果小,则将其变为就绪态,插入到就绪队列中适当的位置,将就续队列中的第一个PCB变为运行态投入运行,重复上述过程,直到就绪队列为空,所有进程成为完成态为止。

运行结果分析

C:\> processes

输入进程数:

2

输入进程号和运行时间:

P1 3

P2 2

优先数算法输出信息:

*************************************************

进程号cpu时间所需时间优先数状态

P2 0 2 48 W

P1 0 3 47 W

进程号cpu时间所需时间优先数状态

P1 0 3 47 R

P2 1 1 45 W

进程号cpu时间所需时间优先数状态

P2 1 1 45 R

P1 1 2 44 W

进程号cpu时间所需时间优先数状态

P1 1 2 44 R

P2 2 0 42 F

进程号cpu时间所需时间优先数状态

P1 2 1 41 R

P2 2 0 42 F

进程号cpu时间所需时间优先数状态

P1 3 0 38 F

分析如下:

创建两个进程其进程号和运行时间分别为P1 3和P2 2。

进程P2运行的时间是2(优先数为50-2=48),进程P1运行的时间是3(优先数为50-3=47),所以P2优先数高,因此,在就绪队列中排在P1的前面,先运行。

进程号cpu时间所需时间优先数状态

P2 0 2 48 W

P1 0 3 47 W

P2运行了一次,占用CPU时间1,完成还需时间1。在程序中设定进程每次运行一次优先数减3,所以,P2的优先数为48-3=45。

进程号cpu时间所需时间优先数状态

P1 0 3 47 R

P2 1 1 45 W

P1运行了一次,占用CPU时间1,完成还需时间2。在程序中设定进程每次运行一次优先数减3,所以,P1的优先数为47-3=44。

进程号cpu时间所需时间优先数状态

P2 1 1 45 R

P1 1 2 44 W

P2运行了两次,占用CPU时间2,完成还需时间0,P2进入完成队列。在程序中设定进程每运行一次优先数减3,所以,P2的优先数为45-3=42。

进程号cpu时间所需时间优先数状态

P1 1 2 44 R

P2 2 0 42 F

P1运行了两次,占用CPU时间2,完成还需时间1。在程序中设定进程每运行一次优先数减3,所以P1的优先数为44-3=41。

进程号cpu时间所需时间优先数状态

P1 2 1 41 R

P2 2 0 42 F

P1运行了三次,占用CPU时间3,完成还需时间0,P1进入完成队列。在程序中设定进程每运行一次优先数减3,所以P1的优先数为41-3=38。

进程号cpu时间所需时间优先数状态

P2 2 0 42 F

任务7:主存空间的分配与回收

下面看一个例子,对测试文件input.txt分析如下:

起始地址、内存块大小

0, 10

10, 08

18, 10

28, 06

34, 10

44, 09

在控制台窗口的提示符下输入zcfp回车。

程序运行后提示输入空闲区数据文件(本空闲区数据文件的文件名为input.txt),在输入文件名后,程序创建空闲区表,随后出现模拟内存分配的管理界面,有四个选项供选择执行相应的操作。

选择3

查看当前的内存使用情况,目前系统刚初始化还没有作业在执行,所以,全部为空闲区。

选择1为作业申请内存空间(一共为3个作业分配了空间,依次是[p1 10]、[p2 10]、[p3 6]),由于使用的是最先适应分配算法,所以,为作业[p1 10]分配了从0开始的长度为10的空闲空间;同样[p2 10]申请的也是10个长度的空间,因此,系统为它分配了从18开始长度为10的空闲空间;[p3 6]申请的长度是6,系统为它分配了从10开始长度为6的空闲空间;并且产生从16开始的长度为2的空闲空间。选择3查看当前的内存使用情况

选择2撤销作业p2,作业p2占用的内存空间是10个长度,在它的前面有2个长度的空闲区,在它的后面有6个长度的空闲区,撤销作业p2后产生的10个长度的空闲区和前后两块空闲区合并成一个长度为18的空闲区,起始地址为前面空闲区的地址。选择3查看当前的内存使用情况。

任务9:磁盘管理

以FCFS为例。将申请磁盘服务的进程按先后顺序排队,每次调度选择位于队首的进程运行。请求的先后顺序是18,5,23,8,16。可以计算出所有进程运行后磁头一共移动的磁道数:13+18+15+8=54

18 5 23 8 16

系统的菜单如下:

1.先来先服务

2.最短寻道时间优先

3.电梯调度

4 退出

请选择: 1

18 5 23 8 16 移动的总道数: 54

SSTF算法选择离当前磁头位置最近的目标物理块优先访问,以保证最短的寻道时间。以上述进程为例,当选择磁道号后就会出现进行运行后磁头一共移动的磁道数:3+8+2+5=18(见图2)

系统的菜单如下:

1. 先来先服务2。最短寻道时间优先 3.电梯调度

4. 单项扫描

5. 退出

请选择: 2

5 8 1

6 18 23 请输入当前的磁道号:5

5 8 1

6 18 23 移动的总道数: 18

磁头向一个方向移动的过程中,选择最近的目标物理块访问,直到没有要访问的物理块,然后磁头变换移动方向以同样的方式选择访问磁盘的进程。可以计算进程运行后磁头一共移动的磁道数:2+5+15+3=25

系统的菜单如下:

1. 先来先服务

2.最短寻道时间优先

3. 电梯调度

4. 退出

请选择: 3

5 8 1

6 18 23 请输入当前的磁道号: 16

请输入当前移动臂的移动方向(1 表示向内, 0 表示向外):1

16 18 23 8 5 移动的总道数: 25

系统的菜单如下:

1. 先来先服务

2.最短寻道时间优先

3. 电梯调度

4. 退出

请选择: 3

5 8 1

6 18 23 请输入当前的磁道号: 16

请输入当前移动臂的移动方向(1 表示向内, 0 表示向外):0

8 5 16 18 23移动的总道数: 29

操作系统课程设计

课程设计报告 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 连续动态内存管理模拟实现 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

操作系统课程设计报告

; 一、概述 课程设计目的、意义: 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 主要任务: 模拟文件系统设计是设计和实现一个简单的文件系统。内容包括: 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<

操作系统课程设计完整版内含代码

操作系统课程设计LRU页面调度算法 学号: 姓名: 学院: 专业: 班级: 指导老师: 日期:

目录 一、实验题目 (1) 二、课程设计的目的 (1) 三、设计内容 (1) 四、设计要求 (1) 五、设计思想 (1) 六、主要数据结构及其说明 (2) 七、硬件支持 (3) 八、源程序文件 (3) 九、程序运行结果 (7) 十、实验体会 (8)

一实验题目 LRU页面调度算法 二课程设计的目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的机会。 1.进一步巩固和复习操作系统的基础知识。 2. 培养学生结构化程序、模块化程序设计的方法和能力。 3.提高学生调试程序的技巧和软件设计的能力。 4.提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 三设计内容 程序应模拟实现LRU算法思想,对n个页面实现模拟调度。 四设计要求 1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。 2.对系统进行功能模块分析、画出总流程图和各模块流程图。 3.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。 4.通过命令行相应选项能直接进入某个相应菜单选项的功能模块。 5.所有程序需调试通过。 五设计思想 最近最久未使用(LRU)页调度算法是选择最近最久未使用的页面予以淘汰。 算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间,当所要访问的页面在内存块中时,就不淘汰页面,否则,淘汰页面中时间最长的,即淘汰最近最久未使用的页面。

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 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

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

操作系统课程设计报告 专业:计算机信息处理 学号: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定义主文件*/

操作系统课程设计报告

课程设计说明书 设计题目:操作系统课程设计 班级:信息学管理与信息系统2011级 学号: 2 姓名:克乾

山东科技大学2013年12 月11 日

课程设计任务书 学院信息科学与工程专业信息学管理与信息系统班级2011-2 克乾 一、课程设计题目:操作系统课程设计 二、课程设计主要参考资料 (1)Abraham Silberschatz & Peter Baer Galvin & Greg Gagne. Operating System Concepts(第七版影印版). 高等教育. 2007.3. (2)c++面向对象程序设计电子工业 (3)计算机操作系统(第三版)电子科技大学 三、课程设计应解决的主要问题: (1)CPU调度算法的模拟实现 (2)死锁相关算法的实现 (3)磁盘调度算法的实现 四、课程设计相关附件(如:图纸、软件等): (1)程序源代码 (2) 五、任务发出日期:2013-10-1 课程设计完成日期:2014-1-1

指导教师签字:

指导教师对课程设计的评语成绩: 指导教师签字: 年月日

设计1 CPU调度算法的模拟实现一、设计目的 利用C++编写CPU调度算法,实现先来先服务调度算法FCFS、优先级调度算法PS、短作业优先调度算法SJF、时间片轮转调度算法RR的运行过程和实现的结果,针对模拟进程,利用编写的CPU调度算法对需要运行的进程进行调度。进行算法评价,计算平均周转时间和平均等待时间。 二、设计要求 针对模拟进程,利用CPU调度算法进行调度,最后要进行算法评价,计算平均周转时间和平均等待时间,并且输出调度结果和输出算法评价指标。 调度所需的进程参数由输入产生(手工输入或者随机数产生)。 三、设计说明 时间片轮转算法需要输入相应的时间片,所以独立编写一个程序,系统主体结构如下:

操作系统课程设计

操作系统课程设计 Prepared on 22 November 2020

湖南科技大学计算机科学与工程学院 操作系统课程设计报告 学号: ******** 姓名:* * 班级: *** 指导老师: *** 完成时间: ****.**.** 目录 实验一 Windows进程管理 实验二 Linux进程管理 实验三互斥与同步 实验四银行家算法的模拟与实现 实验五内存管理 实验六磁盘调度 实验七进程间通信 实验一 Windows进程管理 一、实验目的 1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。 2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。

3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。 二、实验内容和步骤 (1)编写基本的 Win32 Consol Application 步骤1:登录进入 Windows 系统,启动 VC++ 。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择 “Win32 ConsolApplication”,然后在“Project name”处输入工程名,在“Location” 处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”,然后在“File” 处输入 C/C++源程序的文件名。 步骤4:将清单 1-1 所示的程序清单复制到新创建的 C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的 debug 子目录,执行编译好的可 (2)创建进程 本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程 ID和它在进程列表中的位置。 步骤1:创建一个“Win32 Consol Application”工程,然后拷贝清单 1-2 中的程序编译成可执行文件。 步骤2:在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。 步骤3:在“命令提示符”窗口加入参数重新运行生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。 (3)父子进程的简单通信及终止进程

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级: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<

操作系统课程设计

湖南科技大学计算机科学与工程学院 操作系统课程设计报告 ******** *** 目录 实验一 Windows 进程管理 实验二 Linux 进程管理 实验三 互斥与同步 实验四 银行家算法的模拟与实现 实验五 内存管理 指导老师: *** 完成时间: **** ** **

实验六磁盘调度 实验七进程间通信 实验一 Windows进程管理 一、实验目的 1 )学会使用VC编写基本的Win3 2 Consol Application (控制台应用程序)。 2)2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟 悉操作系统的进程概念,理解Windows进程的"一生”。 3)3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步 的基本程序设计方法。 二、实验内容和步骤 (1)编写基本的 Win32 Consol Application 步骤1:登录进入 Windows系统,启动VC++ 6.0。 步骤2:在“ FILE”菜单中单击“ NEW”子菜单,在“ projects ”选项卡中选择 “Win32 ConsolApplication ”,然后在“ Project name 处输入工程名,在“Location ”处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“ FILE”菜单中单击“ NEW”子菜单,在“ Files ”选项卡中选择“ C++ Source File ” ,然后在“ File ”处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5 :在“开始”菜单中单击“程序” -“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的 debug子目录,执行编译好的可执行程序,列出运行结果(如果运行不成功,则可能的原因是什么?) 如果运行不成功可能是路径有问题或者没有通过编译。

操作系统课程设计论文

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

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

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

摘要 此系统实现了存储管理、设备管理和进程管理。 存储管理部分主要实现主存空间的分配和回收。存储管理采用可移动的可变分区存储管理方式。采用数组来模拟主存,大小为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

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: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与windows的进行控制系统调用的功能,熟悉主要的几个系统调用命令的格式和如何利用系统调用命令进行编程。通过学习,理解如何创建一个进程、改变进程执行的程序、进程和线程终止以及父子进程的同步等,从而提高对进程和线程控制系统调用的编程能力。 二、实验内容 设计并实现Unix的“time”命令。“mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并记录程序运行的时间。 三、实验环境 CPU: Inter ×2 2.10GHz RAM: 3.00GB Windows 7 旗舰版 Linux Ubuntu 10.04 编译: VS2010 四、程序设计与实现 4.1进程控制系统的调用 4.1.1 windows进程控制调用程序中使用的数据结构及主要符号说明 SYSTEMTIME starttime,endtime; //进程开始时间和结束时间 PROCESS_INFORMATION pi //该结构返回有关新进程及 //其主线程的信息 STARTUPINFO si //该结构用于指定新进程的主窗口特性4.1.2 linux进程控制调用程序中使用的数据结构及主要符号说明 struct timeval starttime,endtime //进程开始时间和结束时间 pid_t pid //进程标志符

4.2 程序流程图 图1 windows进程控制调用图2 linux进程控制调用程序运行流程图程序运行流程图 五、实验结果和分析 5.1 windows实验结果和分析

操作系统课程设计

计算机科学技术学院 操作系统原理课程设计报告 题目:进程管理系统 专业: 班级: 姓名: 学号: 指导老师: 年月日

《操作系统原理》课程设计任务书 一、课程设计题目(任选一个题目) 1.模拟进程管理 2.模拟处理机调度 3.模拟存储器管理 4.模拟文件系统 5.模拟磁盘调度 二、设计目的和要求 1.设计目的 《操作系统原理》课程设计是网络工程专业实践性环节之一,是学习完《操作系统原理》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。 2.基本要求: (1)选择课程设计题目中的一个课题,独立完成。 (2)良好的沟通和合作能力 (3)充分运用前序课所学的软件工程、程序设计、数据结构等相关知识 (4)充分运用调试和排错技术 (5)简单测试驱动模块和桩模块的编写 (6)查阅相关资料,自学具体课题中涉及到的新知识。 (7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实。 三、设计内容及步骤 1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。

2.根据实现的功能,划分出合理的模块,明确模块间的关系。 3.编程实现所设计的模块。 4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。 6.编写课程设计报告; 设计报告要求:A4纸,详细设计部分主要叙述本人的工作内容 设计报告的格式: (1)封面(题目、指导教师、专业、班级、姓名、学号) (2)设计任务书 (3)目录 (4)需求分析 (5)概要设计 (6)详细设计(含主要代码) (7)调试分析、测试结果 (8)用户使用说明 (9)附录或参考资料 四、进度安排 设计在学期的第15、16周进行,时间安排如下:

操作系统含课程设计随堂练习修订稿

操作系统含课程设计随 堂练习 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

随堂练习提交截止时间: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.(已提交) 参考答案:C 问题解析: 7.(单选题) 操作系统中采用多道程序设计技术提高了CPU和外部设备的() A、利用率 B、可靠性 C、稳定性 D、兼容性 答题: A. B. C. D.(已提交)

计算机操作系统课程设计

计算机操作系统课程设计 班级:计091-1 姓名: 学号: 使用语言: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; //目录地址 };

相关主题
相关文档 最新文档