# Visual Simulation To Achieve Linux2.6 Process Management And Memory Management
可视化仿真实现Linux2.6进程管理与内存管理,计算机操作系统课程设计
## 摘要
为了检验自己的操作系统课程的学习情况与掌握程度,以及将该课程知识用编程语言描述的技能,本次小组选择“可视化仿真实现Linux2.6进程管理与内存管理”的题目进行操作系统课程设计。该课程设计对于理解操作系统中进程管理与内存管理的知识有着重要作用,同时,管理手段采用Linux2.6内核的规则,可借此机会检验自己的编程水平与Linux核心代码的阅读水平。
系统模拟仿真了Linux2.6系统,并实现了作业及进程并发环境、MMU 地址变换、进程原语、页表生成与页面调度算法、三级作业调度过程及算法(需作业调度到指令集,至少实现三态转换)、页面分配与回收算法、进程同步互斥、进程死锁检测与撤销算法,并将实现原理过程通过可视化方式呈现。
按照计算机理论,在程序框架上,将系统分为硬件、驱动程序、系统管理模块、UI界面四个模块。
在硬件层面,系统根据题目需要,设计了CPU、内存、外存(硬盘)、地址线数据线四个硬件,CPU中还包含计时器与MMU。CPU负责进程指令的执行与数据的传递,计时器负责发出中断与系统时间的计算,MMU负责系统中地址的变换。内存与外存是系统中的存储设备,所有作业、进程以及页面的管理都以这两个硬件为基础进行设计。
系统管理模块分为作业管理、进程管理与页面管理。作业管理模块是基于CPU与硬盘硬件的系统模块之一。该模块的功能是为作业的创建、存入、删除以及作业的调入检测提供相关的支持。作业管理模块在java工程中写在JobModule.java文件中,同时该类被Control.java调用。
进程管理模块是基于CPU与内存的系统模块之一。该模块的功能是为作业调入后转换成的进程提供管理功能。进程管理是整个系统设计中最为复杂的部分,其包括低级调度管理、中级调度管理、高级调度管理、进程链表等功能。进程管理模块在java工程中写在ProcessModule.java文件中,同时该类被Control.java调用。
页面管理是负责系统中对于页面存入、读取、对换、换入换出功能的管理模块。在页面管理中,该模块与其他模块的信息交换全部都通过Page类来进行。当有页面换入、换出请求发出时,该模块先将页面信息写入Page类的对象,再将该对象传出,当其他模块收到该对象时,也可以对该对象进行操作,以减少操作的复杂度。页面管理模块在java工程中写在PageModule.java文件中,同时该类被Control.java调用。
系统的UI界面为java程序直接提供给用户进行操作的界面,通过该界面,用户可以方便快捷的使用所有系统功能并知晓系统所有功能模块以及硬件设备的实时信息。
综上所述,该系统很好地实现了课程设计的所有要求,同时,还提供生动形象的UI界面,方便用户进行操作管理。
## 关键字:Linux2.6、系统仿真、进程管理、内存管理、JAVA编程
## 可视化仿真实现Linux2.6进程管理与内存管理
### 1 实践目的与意义
为了检验自己一学期的操作系统课程的学习情况与掌握程度,以及将该课程知识用编程语言描述的技能,所以本次选择“可视化仿真实现Linux2.6进程管理与内存管理”的题目进行操作系统课程设计。
该课程设计对于理解操作系统中进程管理与内存管理的知识有着重要作用,同时,管理手段采用Linux2.6内核的规则,可借此机会检验自己的编程水平与Linux核心代码的阅读水平。
### 2 实践任务与合作
根据Linux2.6 进程管理与内存管理原理,仿真实现作业及进程并发环境、MMU 地址变换、进程原语、页表生成与页面调度算法、三级作业调度过程及算法(需作业调度到指令集,至少实现三态转换)、页面分配与回收算法、进程同步互斥、进程死锁检测与撤销算法,并将实现原理过程通过可视化方式呈现。
为了实现以上任务目标,我们进行了如下分工:
#### 组长(陈扬):
系统整体框架的构思与搭建
程序设计规范的撰写
三级调度过程及算法
JCB、PCB的设计
死锁检测与撤销算法
页表生成
可视化方式呈现过程
进程同步互斥的实现
进程与进程原语的设计实现
#### 组员(梁嘉文):
CPU部件的仿真
内存空间的仿真实现
MMU地址变换
页面设计实现
页面调度算法
页面分配与回收算法
可视化方式呈现过程
### 3 程序结构说明
本系统的结构设计参考了操作系统课本的设备管理章节,从最底层向上可分为:硬件、硬件驱动、系统管理模块、系统内核、UI界面。同时,由于对于硬件部分的仿真本身就包含了存入、读取的功能,所以将硬件与硬件驱动进行合并。在系统管理模块部分,分为:作业管理、进程管理、页面管理三部分。在系统内核部分,系统提供了系统的全局变量与系统的操作类,用来将其下的三个模块进行整合。再向上,即JAVA所提供的UI交互界面,可以方便用户使用该系统。
### 4 裸机硬件仿真设计
#### 4.1 CPU设计
CPU硬件中包含计时器与MMU。在程序设计时,需要将两者分开,设计三个类,CPU类“cpu”,计时器类“timer”,MMU硬件类“mmu”。timer与MMU只在cpu类中存有唯一一个实例,即可体现出计时器与MMU包含于CPU的概念。任何对计时器与MMU的调用,都需要通过cpu类中的实例来进行,而不能够直接访问。
CPU类的定义为:
```
public class CPU
{
public static CPU cpu=new CPU();
public Timer ti;
public MMU mm;
}
```
CPU的结构及内容:
1. 地址寄存器PC
2. PSW程序状态寄存器
3. IR(指令寄存器)
4. 页基址寄存器CR3
5. 在时间片结束时执行完的指令数量already_run
#### 4.2 内存设计
内存大小为32KB,故可根据该要求设计memory类,该类有一个总大小为32KB的对象数组,为short类型,因为系统要求地址线与数据线为16位,所以在该系统的设计时,统一使用short类型数据。需要注意:内存memory类为文件的映射,因此,在该类被实例化之前,其构造函数需要进行从文件到对象的映射,即读取文件内容,并根据文件内容初始化该实例。内存硬件类memory只是简单地对硬件进行模拟仿真,不需要过多复杂的操作,只需要提供两个基本操作即可,即数据的存入与取出。但是,数据的存入与取出都需要通过地址线与数据线。
内存类的定义为:
```
public class Memory
{
public static Memory memory=new Memory();
private byte []data=new byte[32*1024]; //32KB=32768B
}
```
内存总大小为32KB,规定:前16KB为内核区,后16KB为用户区
内核区存储的内容:核心栈+系统内核,进程所有PCB信息
综上所述,内存的组成结构为:
核心栈+系统内核(1页)、PCB池(31页)、用户区(32页)
#### 4.3 硬盘设计
与内存硬件的设计相似,硬盘类只提供简单的数据存入取出。但是,数据的存入与取出也都需要通过地址线与数据线。硬盘硬件只负责最基本的硬件仿真。硬盘harddisk类为文件的映射,因此,在该类被实例化之前,其构造函数需要进行从文件到对象的映射,即读取文件内容,并根据文件内容初始化该实例。
硬盘类定义为:
```
public class HardDisk
{
public static HardDisk harddisk=new HardDisk();
priv
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【作品名称】:基于 java 实现可视化仿真实现Linux2.6进程管理与内存管理,计算机操作系统课程设计【自测报告,实验报告】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。
资源推荐
资源详情
资源评论
收起资源包目录
基于 java 实现可视化仿真实现Linux2.6进程管理与内存管理,计算机操作系统课程设计【自测报告,实验报告】 (222个子文件)
ProcessModule.class 11KB
Scheduling.class 11KB
MainUI.class 9KB
PCB.class 9KB
HardDiskUI.class 8KB
PageModule.class 8KB
PageModule.class 8KB
MemoryUI.class 7KB
panel_search.class 6KB
panel_search.class 6KB
JobModule.class 5KB
Main.class 5KB
CreateJobUI.class 4KB
DeadLock.class 4KB
CPU.class 4KB
panel_left.class 3KB
panel_left.class 3KB
PageModuleUI.class 3KB
PageModuleUI.class 3KB
CPU.class 3KB
panel_right.class 3KB
panel_right.class 3KB
HardDisk.class 3KB
HardDisk.class 3KB
panel_top.class 3KB
panel_top.class 3KB
MainPanel.class 2KB
MainPanel.class 2KB
panel_button.class 2KB
kernel.class 2KB
kernel.class 2KB
HardDiskUI$5.class 2KB
panel_button.class 2KB
MMU.class 2KB
MemoryUI$3.class 2KB
JCB.class 2KB
CreateJobUI$2.class 2KB
CreateJobUI$1.class 2KB
MMU.class 2KB
Page.class 2KB
Page.class 2KB
CPUInfoUI.class 2KB
Memory.class 2KB
Memory.class 2KB
CPUInfoUI.class 2KB
Timer.class 2KB
Timer.class 2KB
MainUI$1.class 1KB
HardDiskUI$6.class 1KB
MemoryUI$4.class 1KB
MainUI$3.class 1KB
HardDiskUI$3.class 1KB
HardDiskUI$4.class 1KB
Control.class 1KB
panel_search$2.class 872B
panel_search$2.class 853B
panel_search$3.class 843B
panel_search$3.class 824B
HardDiskUI$1.class 787B
MemoryUI$1.class 775B
MainUI$5.class 771B
CreateJobUI$3.class 763B
HardDiskUI$2.class 758B
panel_button$1.class 757B
MemoryUI$2.class 746B
panel_button$1.class 738B
MainUI$2.class 731B
MainUI$10.class 727B
MainUI$9.class 727B
MainUI$8.class 721B
MainUI$7.class 718B
MainUI$4.class 706B
HardDiskUI$7.class 689B
panel_button$2.class 689B
panel_button$3.class 686B
panel_search$1.class 685B
MainUI$6.class 679B
MemoryUI$5.class 677B
panel_button$2.class 670B
panel_button$3.class 667B
panel_search$1.class 666B
CPUInfoUI$1.class 660B
AddressLine.class 653B
AddressLine.class 653B
CPUInfoUI$1.class 641B
DataLine.class 632B
DataLine.class 632B
Main.class 445B
.classpath 318B
.classpath 295B
harddisk.dat 1024KB
harddisk.dat 1024KB
memory.dat 32KB
memory.dat 32KB
cpu.dat 44B
cpu.dat 44B
陈扬-19316117-郑朝友-19216218-组间测试.doc 6.86MB
梁嘉文-19216126-郭一帆-19216221-组间测试.doc 461KB
实验报告整合版.docx 3.27MB
陈扬-自测报告.docx 1.36MB
共 222 条
- 1
- 2
- 3
资源评论
MarcoPage
- 粉丝: 3026
- 资源: 3306
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java的网上订餐系统设计源码 - online ordering system
- 基于Javascript的超级美眉网络资源管理应用模块设计源码
- 基于Typescript和PHP的编程知识储备库设计源码 - study-php
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功