logo资料库

OS实验报告.docx

第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
资料共42页,剩余部分请下载后查看
一 实验概述
(二)实验内容及要求
1.实验内容
二 需求分析
通过分析实验要求,可知实验主要分为五大方面的需求:数据结构、处理机、内存分配、可视化,模块之间的联系
数据结构主要实现PCB的定义。
处理机主要实现作业调度以及进程调度。
内存分配主要实现内存空间的分配以及回收,回收过程中能够合并相邻空闲分区。
可视化主要实现各作业或进程状态的可视,内存空间使用状况的可视,还需要提供添加作业的窗口、挂起与解挂操
模块之间的联系包含各模块任务之间的相互配合或相互制约等需求。
(二)具体需求
1.数据结构
2.处理机
3.内存分配
4.可视化
5.模块之间的联系
三 总体设计
(一)总体设计思路
1.任务分解
2.整体流程
3.互斥的处理
4.并行的实现
5.语言的选择
四 详细设计与实现
(一)数据结构
1.PCB
2.队列
(二)处理机模块函数实现
1.数据成员
2.函数成员
(三)内存分配模块实现
(四)可视化界面的实现
五 实验运行结果
操作系统原理 实验报告 学生姓名 学 号 专业班级 指导教师 学 院 完成时间 郑美光 计算机学院 2020.06.10
目录 一 实验概述....................................................................................................... 1 (一)实验目的........................................................................................... 1 (二)实验内容及要求............................................................................... 1 1.实验内容......................................................................................... 1 2.实验具体要求................................................................................. 1 二 需求分析......................................................................................................... 2 (一)需求分类........................................................................................... 2 (二)具体需求........................................................................................... 2 1.数据结构......................................................................................... 2 2.处理机............................................................................................... 3 3.内存分配........................................................................................... 3 4.可视化............................................................................................... 3 5.模块之间的联系............................................................................... 4 三 总体设计......................................................................................................... 5 (一)总体设计思路................................................................................... 5 1.任务分解........................................................................................... 5 2.整体流程........................................................................................... 5 3.互斥的处理....................................................................................... 5 4.并行的实现....................................................................................... 5 5.语言的选择..................................................................................... 5 四 详细设计与实现............................................................................................. 7 (一)数据结构..........................................................................................................................7 1.PCB..................................................................................................7 2.队列................................................................................................. 11 (二)处理机模块实现........................................................................................................11 1.数据成员....................................................................................... 11 2.函数成员......................................................................................... 12 (三)内存分配模块实现..................................................................................................21 (四)可视化界面模块实现.............................................................................................24 五 实验运行结果............................................................................................... 36 结束语................................................................................................................. 39 参考文献............................................................................................................. 40
一 实验概述 (一)实验目的 多道系统中,进程与进程之间存在同步与互斥关系。当就绪进程数大于处理机数时, 需按照某种策略决定哪些进程先占用处理机。在可变分区管理方式下,采用首次适应算 法实现主存空间的分配和回收。 本实验模拟实现处理机调度及内存分配及回收机制,以对处理机调度的工作原理以 及内存管理的工作过程进行更深入的了解。 (二)实验内容及要求 1.实验内容 (1)选择一个调度算法,实现处理机调度; (2)结合(1)实现主存储器空间的分配和回收。 2.实验具体要求 (1)设计一个抢占式优先权调度算法实现多处理机调度的程序,并且实现在可变 分区管理方式下,采用首次适应算法实现主存空间的分配和回收。 (2)PCB 内容包括:进程名/PID;要求运行时间(单位时间);优先权;状态;进程 属性:独立进程、同步进程(前趋、后继)。 (3)可以随机输入若干进程,可随时添加进程,并按优先权排序。 (4)从就绪队首选进程运行:优先权-1;要求运行时间-1;要求运行时间为 0 时, 撤销该进程;一个时间片结束后重新排序,进行下轮调度; (5)考虑两个处理机,考虑同步进程的处理机分配问题,每次调度后,显示各进 程状态,运行进程要显示在哪个处理机上执行。 (6)规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动 从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将制定挂起进 程解挂入就绪队列。 (7)结合实验一 PCB 增加所需主存大小,主存起始位置(由作业调度分配内存); 采用首次适应算法分配主存空间。 (8)自行假设主存空间大小,预设操作系统所占大小并构造未分分区表。表目内 容:起址、长度、状态(未分/空表目)。 第 1页 共 40 页
(9)进程完成后,回收主存,并与相邻空闲分区合并。 (9)最好采用图形界面; 二 需求分析 (一)需求分类 通过分析实验要求,可知实验主要分为五大方面的需求:数据结构、处理机、内存 分配、可视化,模块之间的联系。 数据结构主要实现 PCB 的定义。 处理机主要实现作业调度以及进程调度。 内存分配主要实现内存空间的分配以及回收,回收过程中能够合并相邻空闲分区。 可视化主要实现各作业或进程状态的可视,内存空间使用状况的可视,还需要提供 添加作业的窗口、挂起与解挂操作的窗口。 模块之间的联系包含各模块任务之间的相互配合或相互制约等需求。 (二)具体需求 1.数据结构 PCB 的内容包括 PID,运行时间,优先权,状态,前趋,后继,在内存中的起始位 置,需要的内存空间的大小。要能够区分独立进程和同步进程。 (1)PID 是进程的唯一性标识,因此各进程的 PID 不允许重复。另外,用户不需 要输入 PID,当一个作业由作业调度选中进入内存后,自动被分配 PID。 (2)要求运行时间设置为进程需要的时间片个数,在 CPU 中的进程每次只能运行 一个时间片,完成后时间片个数减一。 (3)优先权用优先数表示,优先数是非负整数,优先数的数值越小,优先级越高。 进程运行完一个时间片后,优先数加一。 (4)进程状态包括就绪状态(ready),运行状态(running),阻塞状态(block), 挂起状态(suspend),完成状态(finished)。处于后备队列的作业,没有被分配 PID 和内存空间,处于后备状态(reverse)。实际上作业不具有 PCB,PCB 是进程存在的唯 一标识,在这里出于模拟的需要,为提交的作业先行构建 PCB,以存储有关优先级和运 行时间等的信息。 (5)进程的属性分为独立进程、同步进程,同步进程是有前趋或者后继的进程, PCB 中的前趋记录前趋进程的 PID,后继记录后继进程的 PID。 第 2页 共 40 页
(6)内存由多个一定大小的块构成,块按排列顺序编号。采用连续的方式存储, 在内存中的起始位置就是进程所占块的编号的最小值。需要内存空间大小用需要块的个 数表示。 (7)运行函数。当进程处于 running 状态时,运行该函数。该函数的功能包括休眠 单位时间片时间(模拟进程运行),减少当前进程需要时间片个数,增加优先数。 2.处理机 (1)实现作业调度。作业调度指从外存的后备队列选取某些作业,调入内存,为 他们创建进程,分配资源,插入就绪队列中。本实验中所有的作业被提交后均进入后备 队列,作业调度为作业分配内存空间和 PCB,使之成为进程。当就绪队列中的进程数少 于道数的时候,作业调度自动将后备队列的作业调入。按照作业优先级的顺序调度,当 某作业需要的内存空间不能满足时,将该作业移到后备队列的队尾。 (2)实现进程调度。按优先级对进程排序、调度。由于具有两个处理机,因此理 论上应该实现两个进程的并行。两个处理机共用就绪队列,阻塞队列,挂起队列,完成 队列,采用相同的进程调度规则(按优先级调度),因此上述三个队列是临界资源,需 要考虑互斥问题。两个处理机共同调度还应该考虑进程的同步问题,即当一个进程的前 趋未运行完成时,该进程会进入阻塞状态,等待前趋进程的完成。当前趋进程完成的时 候,处于阻塞队列的进程立即进入就绪队列。 3.内存分配 (1)设定主存空间大小为内存块的数目。 (2)预设操作系统所占大小,为操作系统分配固定位置的内存空间。 (3)构造未分分区表,表目需包括以下信息:起址、长度、状态(占用或未占用)。 4.可视化 主要实现各作业或进程状态的可视,内存空间使用状况的可视,还需要提供添加作 业的窗口、挂起与解挂操作的窗口。 (1) 显示后备队列中各作业的有关信息,包括需要时间数,优先级,前趋,需要 内存空间数。 (2) 显示就绪队列,阻塞队列,挂起队列中进程的有关信息,包括 PID,需要时 间数,优先级,前趋,需要内存空间数的信息。 (3) 显示两个处理机 CPU 正在运行的进程情况。 (4) 显示内存空间的使用情况。内存块上显示占用该内存块的进程的 PID。内存 第 3页 共 40 页
块数量表示该进程所需的内存空间的大小。 (5) 提供添加作业的窗口,输入作业的需要时间数,优先数,前趋,需要内存空 间数即可提交一个作业。 (6) 提供挂起与解挂操作的窗口。在挂起窗口输入需要挂起的进程的 PID,该进 程会进入挂起队列,进程的部分内存空间被回收,仅在内存中保留该进程占 用的第一个内存块;在解挂窗口输入需要解挂的 PID,会根据内存的具体情 况将进程调回就绪队列或保留在挂起队列。 (7) 提供错误提示信息。如解挂后的进程需要直接进入就绪队列,存在内存不足 的情况,因此需要提示“内存不足,无法解挂进入就绪队列”。 (8) 设置结束键,当按下结束键时,处理机结束工作。 (9) 界面布局良好。 5.模块之间的联系 (1)作业调度、进程调度、窗体显示、添加进程、挂起或解挂进程应当实现宏观 上的并行。即需要实现在窗体上添加作业或挂起、解挂进程时不影响原有进程的调度和 运行;窗体能够实现动态的刷新,及时更新信息。 (2)作业调度需要为进程分配内存空间,同时进程完成后需要回收内存资源,因 此存在处理机和内存分配的配合;挂起进程需要回收部分内存资源,解挂需要再分配内 存资源,因此存在挂起解挂功能与内存分配的配合。 第 4页 共 40 页
三 总体设计 (一)总体设计思路 1.任务分解 将实验分解为四部分,数据结构、处理机、内存分配、可视化的图形界面,分模块 实现各部分的主要功能。再处理各个模块之间的通信,使各模块相互配合,成为有机的 整体,实现上述各种需求。 2.整体流程 主要的工作流程是:输入作业的时间数、优先级等信息,创建作业→进入后备队列 →由作业调度为作业创建进程,分配资源(本实验中主要是内存资源),创建 PCB→进 入就绪队列→循环进行进程调度→某进程完成→回收内存,将阻塞的后继进程调回就绪 队列→循环进行程序调度…… 3.互斥的处理 对于互斥的资源,如两个处理机共用的就绪队列,阻塞队列分别设置锁,当一个处 理机对某个队列进行排序、插入元素、修改元素、删除元素等操作时,另一个处理机不 能同时操作相同的队列。 4.并行的实现 实现作业调度、双处理机进程调度、内存分配、挂起与解挂、作业提交、图形界面 的刷新等功能的宏观上的并行,采用多线程的方式。线程是可以由 CPU 直接运行的实 体,单 CPU 同一时刻只能运行一个进程,但一个进程可以创建多个线程,各线程可以 共享 CPU。为作业调度、图形界面显示(内含挂起与解挂、作业提交功能)以及两个处 理机上的两个进程调度分别创建线程,以实现上述功能宏观上的并行执行。 5.语言的选择 实验采用 Java 语言编写,以便较方便地实现多线程和图形化界面展示。而实际的操 作系统大多由 C 语言编写而成。 第 5页 共 40 页
(二)总体工作流程图 否 该作业移至后 备队列队尾 开始 提交作业 作业调度 内 存 满 是 进入就绪队列 进程调度 是 否 有 前 否 否 运行时间减一 优先级减一 运 行 时 间 为 是 解挂 是 进入挂起队列 是 是 否 挂 进入阻塞队列 前 趋 完 是 回收内存,解除后继的阻塞状态 否 留在阻塞队列 否 插入完成队列 所 有 进 程 完 是 结束 图 3-1 总体工作流程图 第 6页 共 40 页
分享到:
收藏