操作系统(一个小型操作系统地设计与实现)课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 淘汰算法流程