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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南通大学计算机科学与技术学院操作系统课程设计报告

专业:

学生姓名:

学号:

时间:

操作系统模拟算法课程设计报告

设计要求

将本学期三次的实验集成实现:

A.处理机管理;

B.存储器管理;

C.虚拟存储器的缺页调度。

设计流程图

主流程图

开始的图形界面

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

先来先服务时

L

R

U

A.处理机调度

1)先来先服务FCFS

N

Y

先来先服务算法流程

开始

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

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

计算并打印进程的完成时刻、周转时间、带权周转时间

其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间

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

数组为空

结束

2)时间片轮转法

开始

输入进程总数

指针所指的进程是

否结束

输入各进程信息

输出为就绪状态的进程的信息

更改正在运行的进程的已运行时间

跳过已结束的程序

结束

N

指向下一个进程

Y

如果存在下一个进程的话

Y N

输出此时为就绪状态的进程的信息

时间片轮转算法流程图

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放在链首,

并修改其状态位

为空闲

2)最佳适应法

回收内存流程

C.虚拟存储器的缺页调度

开始

释放分区与上空闲分区相邻

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

结束

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

T

F

T

F

T

F

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

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

摘除链表中下分区。合并释放分区与下分区,将释放分区中长度修改为这二分区的长度。

将合并的或释放的分区按长度升序重新插入到自由链表中。

1)先进先出FIFO

2)LRU

开始FIFO的缺页中

断处理

查主存分块表

有空闲块

可用?

分配一块

J的修改标

志=1?

J=p[HEAD]

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

输出“装入L页”

调整FIFO队列,将L插入队

尾(HEAD=(HEAD+1)modM)

修改主存分块表和页表

终止

N

Y

N

Y

FIFO淘汰算法流程

实现原理

开始LRU 的缺页中

断处理

查主存分块表

有空闲块

可用?

分配一块

J 的修改标志=1?

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

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

输出“装入L 页”

调整堆栈,使HEAD 所指元素及以下的元素下移P[HEAD]=L 修改主存分块表和页表 终止

N

Y

N

Y

LRU 淘汰算法流程

相关文档
最新文档