1 / 35
文档名称:

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

格式:doc   大小:489KB   页数:35页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

文档介绍:南通大学计算机科学与技术学院
专业:
学生姓名:
学号:
时间:

操作系统课程设计报告


操作系统模拟算法课程设计报告
设计要求
将本学期三次的实验集成实现:
处理机管理;
存储器管理;
虚拟存储器的缺页调度。
设计流程图
主流程图
开始的图形界面




存储器管理
缺页调度
处理机管理


LRU算法
先进先出
最佳适应法
首次适应法
先来先服务

时间片轮转

A、处理机调度
1)先来先服务FCFS
开始


初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队


调度数组中首个进程,并让数组中的下一位移到首位


计算并打印进程的完成时刻、周转时间、带权周转时间
其中:周转时间 = 完成时间 - 到达时间
带权周转时间=周转时间/服务时间


更改计时器的当前时间,即下一刻进程的开始时间
当前时间=前一进程的完成时间+其服务时间


数组为空

N


Y
结束

先来先服务算法流程
2)时间片轮转法


时间片轮转算法流程图
B、存储器管理(可变式分区管理)
1)首次适应法
分配流程图

开始
申请xkb内存
由链头找到第一个空闲区
分区大小≥xkb?
大于
分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb
将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针
等于
小于
延链查找下一个空闲区
到链尾了?
作业等待
返回
就是

登记已分配表
返回分配给进程的内存首地址

首次适应算法回收流程图


开始
输入完成进程的标号
在分配区表中查找
释放区p下邻分区空闲区
前一个空闲区的后向指针指向p的后一个分区,p的后一个分区的前向指针指向p的前一个分区,且p的前一个分区大小更改为加上p的大小,释放p
释放区p上邻分区空
前一个分区的后向指针指向p的后一个空闲分区,p的后一个空闲分区的前向指针指向p的前一个分区,且p的后一个分区大小更改为加上p的大小
释放区p上下均邻空闲区
前一个空闲区的后向指针指向p的后一个空闲分区,p的后一个空闲分区的前向指针指向p的前一个空闲分区,且p的前一个空闲分区大小更改为加上p的大小再加上p的后一个空闲分区的大小,合并后的这个空闲区的后向指针指向p的下下个分区,如果p的下下个分区不为空,则其前向指针指向合并后的这个空闲区,释放p与p的下一个分区
释放区p上下均不邻空闲区
将p放在链首,
并修改其状态位为空闲

最佳适应法

开始
释放分区与上空闲分区相邻
释放分区与下空闲分区相邻

结束
释放分区与下空闲分区相邻

T
F
T
F
T
F
摘除链表中上分区。合并释放分区与上分区,将上空闲区长度修改为这二分区的长度。

摘除链表中上下分区。合并这三个分区,将上空闲区长度修改为三个分区的长度。

摘除链表中下分区。合并释放分区与下分区,将释放分区中长度修改为这二分区的长度。
将合并的或释放的分区按长度升序重新插入到自由链表中。
回收内存流程
C、虚拟存储器的缺页调度
1)先进先出FIFO
开始FIFO的缺页中断处理


查主存分块表

有空闲块可用?

Y
分配一块

N

J=p[HEAD]

J的修改标志=1?

N



Y
输出“将J页复写入交换区”


输出“装入L页”

调整FIFO队列,将L插入队尾(HEAD=(HEAD+1)modM)

修改主存分块表与页表


终止

FIFO淘汰算法流程

2)LRU
开始LRU的缺页中断处理


查主存分块表

有空闲块可用?

Y
分配一块

N

找到栈底元素:J=p[M-1]

J的修改标志=1?

N


Y
输出“将J页送到入交换区”


输出“装入L页”

调整堆栈,使HEAD所指元素及以下的元素下移P[HEAD]=L


修改主存分块表与页表


终止

LRU淘汰算法流程

实现原理
主界面
设计一个框架分别去链接处理机管理、存储器管理与缺页调度相关的程序。

A、处理机调度
1)先来先服务FCFS
任务
先来先服务的调度算法实现处理机调

点击展开更多

分享好友

预览全文

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

上传人:龙的传人 2021/2/25 文件大小:489 KB

下载得到文件列表

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

相关文档