logo资料库

中南大学操作系统实验报告.docx

第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
资料共78页,剩余部分请下载后查看
第一部分
一 实验概述
(二) 实验内容及要求
操作系统实验报告 学生姓名 学 号 专业班级 指导教师 宋虹 学 院 信息科学与工程学院 完成时间 2018 年 5 月 20 日
目录 第一部分……………………………………………………………………………… 1 一、实验概述 (一)实验目的....................................................................................................1 (二)实验内容及要求........................................................................................1 1、操作系统实验一...........................................................................................................1 2、操作系统实验二...........................................................................................................2 二、需求分析 (一)基本原理....................................................................................................4 1、动态优先权调度算法.....................................................................................4 2、首次适应算法................................................................................................4 (二)基本功能....................................................................................................4 三、总体设计 (一)总体设计思路............................................................................................7 (二)总体工作流程图......................................................................................17 四、详细设计与实现 (一)数据结构设计……………………………………………………………10 (二)进程调度模块的设计与实现……………………………………………10 (三)内存管理模块的设计与实现……………………………………………21 五、实验运行结果…………………………………………………………………… 26 第二部分………………………………………………………………………………32 第三部分………………………………………………………………………………54 第四部分………………………………………………………………………………65 结束语..........................................................................................................................72 参考文献......................................................................................................................76
第一部分 一 实验概述 (一) 实验目的 本实验是操作系统原理课程的实践性锻炼环节。通过实验,帮助学生更好地掌 握操作系统在计算机软硬件资源管理中的地位和作用,掌握操作系统的基本概念、 原理和基本方法,锻炼学生应用高级编程语言完成进程管理和内存管理编程的能力, 初步培养学生系统层次软件分析、设计能力,使学生加深对操作系统本质的理解, 巩固课堂所学的理论知识。 (二) 实验内容及要求 操作系统实验一 1. 实验题目 支持多进程并发执行的简单模拟系统 2. 实验目的 (1)加深对进程概念及进程管理各部分内容的理解; (2)熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构和同步 机构的实现过程。 3. 实验内容 (1)设计进程管理中数据结构的内容; (2)设计一个优先权调度算法,实现进程调度; (3)设计至少两个临界资源的同步管理模拟。 4. 实验要求 (1)最好采用图形界面; (2)可随时增加进程; (3)规定道数,设置后备队列和阻塞状态。若内存中进程少于规定道数,可自动 第 1页 共 70 页
从后备队列中调度作业进入。被阻塞进程入阻塞队列,设置唤醒功能用于将指定阻塞进 程唤醒进入就绪队列; (4)每次调度完成,显示各进程状态; (5)设置至少两个临界资源阻塞队列和公共变量,模拟同步过程; (6)设置时间片中断操作; 5. 提示 (1)PCB 内容:进程名/PID、要求运行的时间、优先数、状态、临界资源表、条件 表; (2)可随时输入若干进程,并按优先权排序; (3)从就绪队列首选进程运行: 优先数-1;要求运行时间-1;当要求运行时间=0 时,撤销该进程; (4)重新排序,进行下轮调度; 操作系统实验二 1. 实验题目 主存空间的分配与回收 2. 实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 3. 实验内容 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。 4. 实验提示和要求 (1)自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) (2)结合实验一,PCB 增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB 指针} (3)采用最先适应算法分配主存空间。 第 2页 共 70 页
(4)进程完成后,回收主存,并与相邻空闲分区合并。 二 需求分析 第 3页 共 70 页
(一) 基本原理 1. 动态优先权调度算法 动态优先级调度算法是指在创建进程之初,先赋予其一个优先级,然后其值随 着进程的推进或等待时间的增加而改变,以便获得更好的调度性能。例如,可以规 定在就绪队列中的进程随其等待的时间的正常,使其优先级相应提高。若所有的进 程都具有相同的优先级初值,则最先进入就绪队列的进程会因为其优先级变得最高, 而优先获得处理机,这相当于 FCFS 算法。若所有的就绪进程具有各不相同的优先级 初值,那么对于优先级初值低的进程,在等待了足够的时间后,也可以获得处理机。 抢占式优先权调度算法 在这种方式下,系统把处理机分配给优先权最高的进程,使之执行。但在其执 行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前 进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。 因此,在采用这种调度算法时,是每当系统中出现一个新的就绪进程 i 时,就将其 优先权 Pi 与正在执行的进程 j 的优先权 Pj 进行比较。如果 Pi≤Pj,原进程 Pj 便 继续执行;但如果是 Pi>Pj,则立即停止 Pj 的执行,做进程切换,使 i 进程投入执 行。显然,这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用 于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中。 2. 首次适应算法 首次适应算法(FF,first fit)是内存基于顺序搜索的动态分配分区算法,在 分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止, 然后在按照作业的大小从该分区中划出一块内存空间,分配给请求者,余下的空闲 分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则表 明系统中已没有足够大的内存分配给该进程,内存分配失败,返回等待。 该算法倾向于优先利用内存中低地址部分的空闲分区,从而保留了高地址部分 不断被划分。这为以后到达的大作业分配大的的内存空间创造了条件。其缺点是低 地址部分不断被划分,会留下许多难以利用的、很小的空闲分区,称为碎片。而每 次查找又都是从低地址部分开始的,这无疑又会增加查找可用空闲分区时的开销。 (二) 基本功能 1. 创建 第 4页 共 70 页
创建新进程,弹出新建进程的窗口。如果用户自己设置进程名称、运行时间用 优先级,则按用户的需要创建;否则,系统将随机为该进程生成名字、运行时间及 优先级。如果就绪队列表中的进程数目少于 4 个,那么就将新建的进程放入就绪队 列表中,分配内存,并按优先级的高低排列;否则该进程就进入到后备队列表中, 同样也会按优先级进行排列。 2. 运行 选择“运行”时,就绪队列表中的第一个进程的状态改为“运行”,并且开始 运行。按照初始优先权排序后分配内存,文本框中显示“某进程正在运行...”,优 先权-1,要求运行时间-1;按照动态优先权调度,运行的进程不断切换;随着时间 的推移,进程的剩余时间慢慢变小,直到 0;进度条按比例增长,到最大值后返回 0。 当第一个进程运行完后,移出就绪队列,如果后备队列表中有进程,那么将后备队 列中的第一行移到就绪表中并排序。修改排序后的第一个进程的状态然后运行。重 复这些,直到后备队列表和就绪队列表为空。 3. 挂起 选择“挂起”时,当就绪队列表不为空时,如果选择了表中的一项,那么将选 中的那一行移出就绪队列表,如果没有选择就绪表中的任意一行,那么将就绪队列 表中的第一行移出;在挂起队列表中添加移出了的这一行,并将状态改为“挂起”; 如果就后备队列表不为空,那么将此表中的第一行移到就绪队列表中并排序。 4. 解挂 选择“解挂”时,当挂起队列表不为空时,如果没有在挂起队列表中选择一行, 那么不能挂起;如果选择了,那么将选择了的这一行移出;如果就绪队列表中的行 数小于 4,在就绪队列表中添加移出了的这一行,并将状态改为“就绪”;如果就绪 队列表中的行数大于或等于 4,那就在后备队列表中添加这一行,并将状态改为“后 备”。 5. 清空 选择“清空”时,将内存和分配分配情况记录清空。 6. 退出 选择“退出”时,退出整个图形界面。 7. 唤醒 第 5页 共 70 页
用于将指定阻塞进程唤醒进入就绪队列。 三 总体设计 (一) 总体设计思路 根据实验一、二的任务要求将本程序分为两个模块:进程调度模块、内存分配 模块。进程调度模块使用动态优先权调度算法,内存分配模块使用最先适应算法。 通过 Swing 技术来实现用户友好的图形化界面,首先将主页面分成两部分:上 面小部分 p1 依次放置要用到的按钮(创建,运行,唤醒,挂起,解挂,清空,退出), 剩下一大部分 p2 用来放置表格,显示进程的详细信息。p2 又分成了四个部分,其 中前三个部分用来放置表格,分别为后备队列表、就绪队列表、挂起进程表、阻塞 队列表哦,最后一部分放置一个文本框(显示内存分配情况记录),进度条(显示正 第 6页 共 70 页
分享到:
收藏