没有合适的资源?快使用搜索试试~ 我知道了~
4-OS实验报告个人版-陈扬1
需积分: 0 0 下载量 81 浏览量
2022-08-08
19:06:59
上传
评论
收藏 1.27MB DOCX 举报
温馨提示
试读
27页
计算机操作系统课程设计实践报告题 目: 可视化仿真实现Linux2.6进程管理与内存管理 姓 名: 陈扬 学 院: 信息科技学院 专 业: 计算机科学技术系 班
资源详情
资源评论
资源推荐
计算机操作系统课程设计
实践报告
题 目:
可视化仿真实现 Linux2.6 进程管理与内存管理
姓 名:
陈扬
学 院:
信息科技学院
专 业:
计算机科学技术系
班 级:
网工 161
学 号:
19316117
指导教师:
姜海燕 职称: 教授
2019 年 3 月 15 日
目录
一、程序结构说明 ...........................................................................................................................1
(一)基本硬件 .......................................................................................................................1
(二)管理模块 .......................................................................................................................1
(三)系统内核 .......................................................................................................................1
(四)UI 界面 ..........................................................................................................................2
二、功能设计与实现 .......................................................................................................................2
(一)高级调度 .......................................................................................................................2
(二)中级调度 .......................................................................................................................3
(三)低级调度 .......................................................................................................................3
(四)JCB、PCB 设计实现...................................................................................................4
(五)死锁检测与撤销 ...........................................................................................................5
(六)页表生成 .......................................................................................................................6
(七)四态转换 .......................................................................................................................7
(八)进程同步互斥 ...............................................................................................................7
(九)进程原语 .......................................................................................................................8
三、功能测试 .................................................................................................................................10
(一)系统常量 .....................................................................................................................10
(二)PCB 测试 ....................................................................................................................10
(三)JCB 测试.....................................................................................................................11
(四)死锁检测 .....................................................................................................................11
(五)UI 界面 ........................................................................................................................12
(六)三级调度 .....................................................................................................................16
(七)指令运行 .....................................................................................................................16
四、技术问题分析报告 .................................................................................................................20
(一)精确时间计时 .............................................................................................................20
(二)队列指定元素删除 .....................................................................................................21
(三)cpu 内部时间计数 ......................................................................................................22
(四)三级调度的优先级控制 .............................................................................................23
五、实验心得 .................................................................................................................................23
六、参考文献 .................................................................................................................................24
第 1 页/共 25 页
可视化仿真实现 Linux2.6 进程管理与内存管理
一、程序结构说明
程序的设计遵循了操作系统的基本原理,从底层开始构建,逐级往上添加功
能与模块。任何一个模块都有其对应的父模块与子模块。程序的结构层层调用且
保持了层级结构,这样的设计使得程序日后的开发趋于模块化。
程序的结构(除了 Main.java)文件之外,可分为四个模块:基本硬件、管理
模块、系统内核、UI 界面。在具体的代码结构上,可以分为三个 package 包,分
别为:hardware、os、ui。
每一个模块的程序结构将在下文加以详细说明。
(一)基本硬件
基 本 硬 件 为 package 包 下 的 内 容 。 有 : AddressLine.java 、 CPU.java 、
DataLine.java、HardDisk.java、Memory.java、MMU.java、Timer.java 文件。
每一个文件中所定义的类以及在程序中的基本功能如下:
AddressLine.java:定义了 AddressLine 类,模拟抽象了地址线的功能,为系
统底层硬件的地址传输提供支持。
CPU.java:定义了 CPU 类,模拟抽象了 CPU 的功能,为系统整体的程序运
行提供支持,内部还有计时器、MMU 硬件。
DataLine.java:定义了 DataLine 类,模拟抽象了数据线的功能,为系统底层
硬件的数据传输提供支持。
HardDisk.java:定义了 HardDisk 类,模拟抽象了硬盘的功能,为系统提供外
部存储的功能。在程序开始运行后,该模块作为系统底层将被频繁调用。
Memory.java:定义了 Memory 类,模拟抽象了内存的功能,为系统提供内存
的功能。在程序开始运行后,该模块作为系统底层将被频繁调用。
MMU.java:定义了 MMU 类,模拟抽象了 CPU 中内存管理部件的功能,为
系统从虚拟地址到物理地址的转换的功能。同时,在 MMU 还设计有 TLB 表,
加快了地址的转换。
Timer.java:定义了 Timer 类,模拟抽象了 CPU 中计时器的功能。该模块可
以按照一定的时间间隔产生时钟中断,以协调进行系统三级调度。
(二)管理模块
管理模块为 os 包下的部分内容。有:JobModule.java、ProcessModule.java、
PageModule.java 文件。
每一个文件中所定义的类以及在程序中的基本功能如下:
JobModule.java:定义了 JobModule 类,提供了对于系统作业的所有有关的
管理功能。
ProcessModule.java:定义了 ProcessModule 类,提供了对于系统进程的所有
有关的管理功能。
PageModule.java:定义了 PageModule 类,提供了对于内存页框与磁盘块的
所有有关的管理功能。同时,伙伴算法、内存分配回收、虚存空间管理的功能都
在该类中可以找到。
(三)系统内核
系 统 内 核 为 os 包 下 的 部 分 内 容 。 有 : Control.java 、 DeadLock.java 、
JCB.java、kernel.java、Page.java、PCB.java、Scheduling.java 文件。
第 2 页/共 25 页
每一个文件中所定义的类以及在程序中的基本功能如下:
Control.java:定义了 Control 类,该类是对于系统中所有功能模块的整合,
并对外提供 API 接口方便 UI 调用系统功能。
DeadLock.java:定义了 DeadLock 类,该类是对于死锁功能的具体实现。在
该类中,提供了 PV 操作指令和资源申请释放指令的具体操作,在任何情况下进
行的死锁检测算法调度。
JCB.java:定义了 JCB 类,该类是对于作业控制块的具体描述。
kernel.java:定义了 kernel 类,该类为整个程序提供需要使用的常量定义。
Page.java:定义了 Page 类,该类是对于页面、页框、块的具体描述。
PCB.java:定义了 PCB 类,该类是对于进程控制块的具体描述。
Scheduling.java:定义了 Scheduling 类,该类中提供了低级调度、中级调度、
高级调度三种不同调度的功能实现。
(四)UI 界面
UI 界面为 ui 包下的所有内容。有:CPUInfoUI.java、CreateJobUI.java、
HardDisk.java、MainUI.java、Memory.java、PageModule.java 文件。
每一个文件中所定义的类以及在程序中的基本功能如下:
CPUInfoUI.java:定义了 CPUInfoUI 类,该类是 CPU 信息展示的界面。
CreateJobUI.java:定义了 CreateJobUI 类,该类是提供创建作业功能的界面。
HardDisk.java:定义了 HardDiskUI 类,该类是提供查看硬盘内容功能的界面。
MainUI.java:定义了 MainUI 类,该类是整个程序开始执行后的最开始的界
面,展示了各个队列的进程运行情况。同时,提供了调出其他窗口的功能。
MemoryUI.java:定义了 MemoryUI 类,该类是提供查看内存内容功能的界
面。
PageModuleUI.java:定义了 PageModuleUI 类,该类是提供查看页面占用与
分配情况的界面。
二、功能设计与实现
在本次操作系统课程设计实验中,我设计完成了多项功能,如:三级调度、
JCB 与 PCB 的设计实现、死锁检测与撤销、页表生成、页面调度算法、四态转
换、进程同步互斥、进程原语功能。
这些功能是系统最核心最重要的功能。同时,某些功能还需要依赖于页面调
度算法的实现。
下文将对这些功能的实现原理进行深度阐述。
(一)高级调度
高级调度又称为作业调度或宏观调度。它用于确定把后备队列上的哪些作业
调入内存,并为之建立进程,分配其所需的资源,然后将它挂在就绪队列上。
高级调度又称为作业调度或宏观调度。其主要功能是根据一定的算法,从输入的
一批任务(作业)中选出若干个作业(从磁盘的作业后备队列中选择作业调入内
存),分配必要的资源并建立与作业相对应的进程,如内存、外设等,为它建立
相应的用户作业进程和为其服务的系统进程(如输入/输出进程),最后把它们的
程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后作善后
处理工作。
高级调度的基本原理即为队列的表现形式,如图:
第 3 页/共 25 页
高级调度将控制多道程序的道数,被选择进入内存的作业越多,每个作业所
获得的 CPU 时间就越少,为了向用户提供满意的服务,有时需要限制内存中同
时运行的进程数。每当有作业执行完毕并撤离时,作业调度会选择一个或多个作
业补充进入内存。此外,如果 CPU 空闲时间超过一定的阈值,系统也会引出作
业调度选择后备作业。
高级调度的实现在文件 Scheduling.java 中,具体实现的逻辑为:
1、刷新后备队列
2、判断后备队列中是否还有作业
3、若有,则按照 FIFO 算法,获取 PCB 队列中需要被调入的作业
4、检测 PCB 池空间是否足够
5、若足够,则检测虚存空间是否足够
6、若足够,则开始导入进程:
① 将 JCB 转换为 PCB
② 在虚存中申请对应大小的空间
③ 将作业的所有指令区转移到虚存中
④ 写 PCB 中的快表
⑤ 将 PCB 写入到 PCB 池
⑥ “下一个作业”指针后移
⑦ 将该进程加入到就绪队列,等待被调度
(二)中级调度
中级调度又称为中程调度,引入中级调度的主要目的是为了提高内存的利用
率和系统的吞吐量。内存中不能有太多的进程,把进程从内存移到外存,当内存
有足够空间时,再将合适的进程换入内存,等待进程调度。中级调度实际上就是
存储器管理中的对调功能。
中级调度的实现在文件 Scheduling.java 中,具体实现的逻辑为:
1、将挂起队列中的进程全部取出
2、获取当前内存中可用的页框数
3、如果可用页框数小于 10,则进行中级调度:
①根据 LRU 算法,取出最近最不经常使用的 10 个页面
②将这 10 个页面直接移出到虚存
③改写使用这些页面的进程的页表
④将这些进程变成挂起状态
(三)低级调度
低级调度又称为进程调度、短程调度,它决定就绪队列中的哪个进程将获得
处理机,然后由分派程序执行把处理机分配给该进程的操作。在批处理,分时,
实时三类系统中,进程调度必须被配置,因而是一种最基本的调度。与中级调度
——交换,高级调度——作业调度相对应。
低级调度的实现在文件 Scheduling.java 中,具体实现的逻辑为:
剩余26页未读,继续阅读
兰若芊薇
- 粉丝: 24
- 资源: 301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0