- 17
- 0
- 约1.03万字
- 约 20页
- 2016-06-11 发布于重庆
- 举报
OS课程设计报告书
南通大学计算机学院
操作系统教程 2.首次适应算法
专业班级 软外122
学生姓名 宋俞璋
学 号 1213122050
指导教师 周建美
日 期 2014年7月3日
目 录
一级目录1……………………………………………………………页码
一级目录2……………………………………………………………页码
…………
1.课程设计题目:
设计一个按优先级调度的算法实现处理机调度
采用首次适应算法管理内存
()进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解算法的具体实施办法。
?
3. 课程设计要求:
实验一:
(1)假设系统中有3~5个进程,每个进程由一个进程控制块(PCB)来代表。进程的优先数、要求运行时间和估计运行 时间由用户程序任意设计,且优先数越低,优先级越高。调度时,总是选择优先级最高的进程运行。
(2)为了调度方便,设计一个指针指向就绪队列的第一个进程。另外再设一个当前运行进程指针,指向当前正运行的进程。
(3)处理机调度时,总是选择已经到达队列的优先级最高的进程运行。为了采用 动态优先级调度,进程每运行一次,其优先级就减1。由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行:
优先数加1和估计运行时间减1
用这个操作来模拟进程的一次运行。
(4)进程运行一次后,若剩余的运行时间不为0,且其优先级低于就绪队列的其他进程的优先级,则选择一个高优先级进程抢占CPU;若剩余运行时间为0,则把它
的状态改为完成状态“C”,并撤出就绪队列。
(5)若就绪队列不空,则重复上述的步骤(3)和(4)直到所有进程都运行完为止。
(6)在所设计的程序中应有显示或打印语句,以显示或打印每次被选中进程的进程名字、运行一次后进程的变化以及就绪队列中的各进程排队情况等。
实验二:
一个好的计算机系统不仅要有足够的存储容量,较高的存取速度和稳定可靠的存储器,而且能够合理的分配和使用这些主存空间。当用户提出申请主存空间的要求时,存储管理能够按照一定的策略分析主存的使用情况,找出足够的空间分配给申请者;当作业运行完毕,存储管理要回收作业占用的主存空间。本实验实现在可变分区存储管理方式下,采用最先适应算法对主存空间进行分配和回收,以加深了解操作系统的存储管理功能。
4. 课程设计报告内容
实验一:
int super; //优先级数
int ntime; //需要运行时间
int rtime; //已运行时间
(2)流程图
实验二:
()
(2)主要数据结构
typedef struct FreeLink{ //空闲链
struct FreeLink *prior;
char name;
int start;
int size;
bool flag;
struct FreeLink *next;
}* ptr,*head;
head top;
ptr p;
(3)内存分配算法
当有进程要求分配主存时,依据首次适应算法从链头开始,延链查找一个足以容纳该进程的空闲区。若这个分区比较大,则一分为二,一部分分配给进程,另一部分作为空闲区仍留在链中的当前位置,修改它的上一个空闲区的前向指针值为再加上分配给进程的分区大小,下一个空闲区的后向指针值为再加上分配给进程的分区大小,使链保持完整。若这个分区的大小正好等于进程的大小,该分区全部分配给进程,并将该空闲区从链中摘除(即修改下一个空闲区的后向指针=该空闲区后向指针,上一个空闲区的前向指针=该空闲区的前向指针)。再在已分配区表中找一个空表目,登记刚刚分配的内存始址、长度和进程号。
(4)内存的回收
当进程运行完成,释放内存时,通过输入进程号,来回收进程占用的分区。在回收时,释放区与空闲区相邻接的情况要考虑4种情况:
⊙释放区下邻空闲区
⊙释放区上邻空闲区
⊙释放区与上下空闲区均相邻
⊙释放区与上下空闲区均不相邻
(5)程序流程图
※空闲链的首次适应算法分配流程图
※空闲链的首次适应算法回收流程图
()截图
5.设计总结及体会
(1)首先这次实验的难度不小
原创力文档

文档评论(0)