模拟操作系统实现-使用Java 实现。ooad

来源:互联网 发布:button按钮调用js 编辑:程序博客网 时间:2024/06/06 14:17

一、需求分析 

通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。

该操作系统是模拟一个采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、文件管理和用户接口四部分。

本实验所使用的编程语言是JAVA,开发工具是Eclipse,运行的操作系统是Windows7.

 

二、概要设计

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

2.1 各功能函数概览:

2.1.1 用户区管理

insertPage(int index,string page[]) 往页面插入数据

clearPage(int index) 将指定页面数据清除

getvalue(int black) 获取某单元的值

setvalue(int block,int offset) 设计某单元的值

find best() 找到合适的内存块地址

count() 计算内存中空闲的块数目

 

2.1.2 内存分配表

addNew(int jobsize) 新建一个页表

setNull(int index)搜索引页设为空值

clearall() 清楚所有内存

getvalue() 获得内存中的值

 

2.1.3 设备管理

isFree() 是否被占有

setPossess() 设置占有

setFree() 释放设备

getPossessP() 获取占有设备名称

 

2.1.4 模拟CPU

ALU.java

CPU.java

Register.java

 

 

 

 

 

 

 

 

 

 

 

2.2 主程序的内部数据流图

2.3 系统各模块的设计

2.3.1虚拟CPU

1.虚拟数据寄存器:AX,

2.虚拟算术逻辑单元(ALU):通过接收指令对四个数据寄存器进行算术处理。

3.虚拟程序计数器(PC):存放下一条指令的地址。CPU运行一个周期PC自动加一。

4.地址寄存器(AR):存放当前执行指令的地址。

5.缓冲寄存器(DR):存放当前从内存取出来的数据或指令。

6.指令寄存器(IR):存放当前执行的指令。

7.中断处理器:通过接收系统发来的自定义中断信息而对运行中的作业做出相应的呼应。

 

2.3.2指令集

描述:主要以汇编指令作参考的一套自定义指令集。

1.加法指令:X++(add)  

功能描述:AX+1

2.减法指令:X--(sub) 

  功能描述:AX-1

3.结束指令:end

   功能描述:结束指令

 

2.3.3虚拟内存

1. 主要功能

用于存放虚拟硬盘中的作业的部分或全部的指令,以供虚拟CPU调用执行。

2. 数据结构

用一个String型的二维数组来作为虚拟内存,其中第一维的下标作为该虚拟内存的页地址,第二维的下标为页内偏移地址。如memory[add1][add2]表示add1页内第add2个单元的内容。

2.3.4.虚拟页表

1. 主要功能

用于记录执行中的作业的某条指令存放在虚拟内存中的地址,也即做了一个虚拟硬盘到虚拟内存的映射表。虚拟CPU寻址时使用。

2. 主要记录信息

a、 页数

b、 硬盘中的首地址

c、 是否空(0为空)

d、 最近使用次数

e、 内存中的页地址

 

2.3.5. 虚拟硬盘

1. 主要功能

把系统硬盘里的作业读进来,以自定义的格式编码存放,在要执行作业是再从虚拟硬盘把指令调入虚拟内存。

2. 数据结构

用一个链表组来作为系统用的虚拟硬盘,每个链表可以存放一个作业,比如,list = new mylist[10];那list就可以存放10个作业,作业的大小可任意大。链表的每个结点存放作业的一条指令。

 

2.3.6. 系统硬盘/虚拟硬盘映射表

1. 主要功能

为每个作业做一个从系统硬盘到虚拟硬盘的映射表。

2. 主要记录信息

作业ID:为标识虚拟硬盘中的作业,为每个作业自动生成一个不重复的ID

起始地址:作业在虚拟硬盘中的起始位置,也就是链表的序号。

大小:作业的大小,以指令的条数作为单位。

名字:作业在系统硬盘中对应的名字。

 

2.3.7. 作业PCB

1. 主要记录信息

a、 作业ID

b、 作业状态(0:就绪.1:运行)

c、 优先级(0――5)数值越大,优先级越高。

d、 当前pc(用作保留现场)

e、 当前AX(用作保留现场)

f、 当前BX(用作保留现场)//暂无

g、 当前CX(用作保留现场)//暂无

h、 当前DX(用作保留现场)//暂无

i、 当前的逻辑地址(用作保留现场)

 

2.3.8. 就绪队列

1. 主要功能

用于存放处于就绪状态的作业的PCB的一个队列。

2.3.9. 挂起队列

1. 主要功能

用于存放处于挂起状态的作业的PCB的一个队列。

2.3.10. 等待队列

1.主要功能

用于存放处于等待状态的作业的PCB的一个队列。

 

 

 

 

 

三、详细设计

实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度应能够按照伪码算法在计算机键盘上直接输入高级程序设计语言程序);画出函数的调用关系图。

 

本模拟操作系统分为存储管理、设备管理、进程管理、文件管理和用户接口四部分:

3.1主程序总体设计图

 

 

3.2各个模块的伪代码及实现思想

3.2.1 存储管理模块(内存)

1.实现功能

内存储器的管理,主要由内存管理模块来完成。内存管理模块对内存的管理分三步。首先为各个用户作业分配内存空间;其次是保护已占内存空间的作业不被破坏;最后,是结合硬件实现信息的物理地址至逻辑地址的变换。使用户在操作中不必担心信息究竟在四个具体空间――即实际物理地址,就可以操作,这样就方便了用户对计算机的使用和操作。内存管理模块对内存的管理是使用一种优化算法对内存管理进行优化处理,以提高内存的利用率。这就是操作系统的内存管理功能。

 

 

 

2.主存 

(1)系统区:进程控制块和内存分配表

(2)用户区:512字节,动态分区存储管理方式

3.屏幕显示(颜色显示)

4.页式存储管理

1)页表结构【页数】【硬盘首地址】【是否为空】【内存中页的地址】

2)作用:实现进程在内存中的有效离散存放,提高内存的利用率。

5.建立页表“模块内部数据流图:

6.伪代码

/***************************************************

*功能描述:对一个作业新建一个页表

*参数说明:id:作业ID

****************************************************/

public void newTable(int id)

/********************************************

*功能描述:找一个空的页表

*返回值:页表序号-1:找不到空页表

*********************************************/

 

private int find()

/**************************************************

*功能描述:通过硬盘地址得出内存中的地址

*参数说明:id:作业IDHDAdd:硬盘中的地址

*返回值:内存中的地址

**************************************************/

 public int insertPage(int id,int HDAdd)

/**************************************************

*功能描述:通过硬盘地址得出内存中的地址

*参数说明:id:作业IDHDAdd:硬盘中的地址

*返回值:内存中的地址

**************************************************/

public int getMemAddress(int id,int HDAdd)

3.2.2 设备管理模块

1.实现功能

由于计算机的不断发展,其应用领域越来越广泛,应用技术越来越提高,应用方法越来越简便,与用户的界面越来越友好,随之外部设备的种类也日益增多,功能不断提高,档次日渐升级,因此,操作系统的设备管理模块的功能也必须跟上外部设备的发展而不断发展、不断升级以适应外部设备的日益发展的需要。设备管理模块的任务是当用户要求某种设备时,应马上分配给用户所要求的设备,并技用户要求驱动外部设备以供用户应用。并且对外部设备的中断请求,设备管理模块要给以响应并处理。控制设备和CPU之间进行I/O操作,这就是操作系统的外部设备管理功能。

2.方法

(1)是否被占有:isFree();

(2)设置占有:setPossess();

(3)释放设备:setFree();

(4)获取占有设备名称:getPossessP();

 

 

 

3.2.3 进程管理模块(模拟CPU

1.实现功能

进程管理也称作业管理,用户交给计算机处理的工作称为作业。作业管理是由进程管理模块来控制的,进程管理模块对作业执行的全过程进行管理和控制。

 

2.CPU模拟

(1)用函数进行CPU模拟操作

(2)时钟模拟

A.绝对时钟:系统运行时间;

B.相对时钟:进程可执行时间片。

3.进程控制块(PCB):进程标识符、寄存器组、进程状态、阻塞状态

4.进程调度

1)时间片轮转;

2)正在运行--PCB,就绪--》调用,恢复现场;

3)就绪--》内存清零。

 

5.进程控制(PCB

 

A.create()  

         1).申请空白进程控制块;

         2.申请主空间内存;

         3.初始化进程控制块;

         4.屏幕显示

B.destory() 

         1).回收进程所占资源;

         2)回收进程控制块;

         3)显示结果

C.block()

         1)保存CPU现场;

         2)修改进程状态;

         3)将进程链入对应阻塞队列

D.awake() 

         阻塞--》就绪

 

 

 

 

6.拟操作系统内部数据流图

7.伪代码

/***************************************************

*功能描述:指令分析

*参数说明:instruction:输入的指令

***************************************************/

private void Analysis(String instruction)

/*************************************************

*功能描述:把文件读入虚拟硬盘

*参数说明:filename:文件名及其路径

*抛出异常:IOException:找不到指定文件出错  myException:虚拟硬盘没有足够空间

 * @throws IOException 

**************************************************/

public void GetFile(String filename) throws IOException

/****************************************************

*功能描述:生成一个作业ID

*返回值:生成的作业ID

****************************************************/

private int createID()

 

/****************************************************

*功能描述:从虚拟硬盘中移除一个作业并把该作业在作业表中的值高为初始值

*参数描述:id:作业ID

*抛出异常:当在作业表中找不到对应的ID时抛出异常

****************************************************/

public void RemoveFile(int id)

 

 

3.2.4 文件管理和用户接口模块

1.实现功能

操作系统对文件的管理主要是通过文件管理模块来实现的。文件管理模块管理的范围包括文件目录、文件组织、文件操作和文件保护。

 

2.文件结构

1)域:基本数据单元。

2)记录:一组相关的域的集合。

3)文件:一组相似记录的集合。

4)数据库:一组相关的数据的集合

 

3.文件组织和访问

1)文件组织指文件记录中的逻辑结构,由用户访问文件的方式确定。

2)文件在辅存中的物理组织取决于分块策略和文件分配策略。

3)基本文件组织方式:

a.

b.顺序文件

c.索引顺序文件

d.索引文件

f.直接或散列文件

4.文件的分配方法

(1)连续分配

(2)链接分配

(3)索引分配

 

5.用户接口

用户接口是为方便用户使用计算机资源所建立的用户和计算机之间的联系。通常指软件接口,即在人机联系的硬件设备接口基础上开发的软件。如建立和清除连接、发送和接收数据、发送中断信息、控制出错、生成状态报告表等。通常可分为3部分

(1)命令接口:为了便于用户直接或间接控制自己的作业,操作系统向用户提供了命令接口。命令接口是用户利用操作系统命令组织和控制作业的执行或管理计算机系统。命令是在命令输入界面上输入,由系统在后台执行,并将结果反映到前台界面或者特定的文件内。命令接口可以进一步分为联机用户接口和脱机用户接口。

(2)程序接口:程序接口由一组系统调用命令组成,这是操作系统提供给编程人员的接口。用户通过在程序中使用系统调用命令来请求操作系统提供服务。每一个系统调用都是一个能完成特定功能的子程序。如早期的UNIX系统版本和MS-DOS版本。

(3)图形接口:图形用户接口采用了图形化的操作界面,用非常容易识别的各种图标来将系统各项功能、各种应用程序和文件,直观、逼真地表示出来。用户可通过鼠标、菜单和对话框来完成对应程序和文件的操作。图形用户接口元素包括窗口、图标、菜单和对话框,图形用户接口元素的基本操作包括菜单操作、窗口操作和对话框操作等。

0 0
原创粉丝点击