二、 概要设计
- 通过程序来模拟计算机的硬件系统,在此基础上实现操作系统的模拟实现。
- 本次实验由5个模块构成 (1) 文件管理模块 (2) 进程控制及内存管理模块 (3) 硬件实现及管理模块 (4) 用户界面交互模块 (5) 系统内核软件模块
三、详细设计
(1) 文件管理模块
文件管理模块由以下3个类组成
1.MyFile类
该类是操作系统的基本文件单位,这个类包含了文件的数据内容,名字,属性以及磁盘的起始扇区和长度等,构成一个基本的文件。利用输入的属性和数据来初始化文件,同时提供了getter和setter方法可以对文件的属性进行访问和修改。
- FileSamplesGenerator类
该类通过预设的二进制代码生成可执行的文件。这个类中保存了10个可执行的程序的代码,通过调用文件系统中创建文件的方法,将这些代码转换成操作系统内部的文件,同时将文件名和路径记录在这个类中。
- FileSystem类
该类用于管理整个文件系统。通过读取磁盘文件,利用FileSamplesGenerator类生成可执行文件和利用DirTreeParser类生成目录树进行初始化,包含了查找磁盘空闲扇区和分配空闲扇区的功能接口,以实现将FAT中的数据直接写入磁盘或直接对磁盘盘块进行写入操作,以及可以对操作系统内的文件直接进行查找和访问。对外提供了创建、打开、读取、写入、关闭、删除文件的功能方法,并且可以获取路径下的子目录,并且修改文件的属性。
(2)进程控制及内存管理模块
进程控制及内存管理模块由以下4个类组成
1.ExcuteTask类
该类是操作系统的进程调度的类,这个类包含了进程创建、进程销毁、进程阻塞、进程唤醒等功能,模拟一个进程的生命周期及维护相应的就绪和阻塞队列,并且调用其他类来模拟申请内存与释放内存、查看当前内存详情和获取正在执行的指令等
2.MenoryBlock类
该类是内存块类,获取具体被分配的线程id的属性和大小,提供了getter和setter方法可以对内存块的属性进行访问和修改。
3.MemoryController类
该类是内存空间的管理类,用于维护一个内存块队列,比如添加一个新内存块、删除一个内存卡、获取当前内存块队列,提供了getter和setter方法可以对内存的属性进行访问和修改。
4.SimulationThread类
该类是进程的一个模拟类,通过进程的id或者对应的可执行文件来启动或者新建一个进程、包括获取进程id和获取进程阻塞原因,同时提供了getter和setter方法可以对进程的属性进行访问和修改。
源码和文档都托管在了【WRITE-BUG数字空间】上面了,有需要的可自取~