一、需求分析
本系统采用Eclipse Java开发工具在Windows环境下设计一个模拟操作系统。无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
实验主要实现内存演示,进程管理的功能。进程调入包含两种方式:一是直接创建进程,二是通过读取已有文件调入进程。前者创建进程的同时允许设置优先级,后者读取文件主要是通过文件的绝对路径的写入,调用相应的文件,完成读取文件的运行。内存演示是在界面中设立进程块,根据每个文件中所写入的信心分配相应的内存块,然后通过内存的回收与分配完成内存演示功能的实现。进程管理主要包括进程调度,采用时间片轮转法,时间片为5,实现了进程的创建和撤销、进程的阻塞和唤醒。模拟系统中,采用链式存储管理方案,以dataTable类存储。建立PCB结构体,包括各类寄存器,标识符,地址等信息。详细设计主要包括各模块功能说明,程序流程图,实现该功能的函数名称、入口及出口参数说明,函数调用关系描述,算法实现等。
二、整体设计
通过设计进程管理和内存管理,进一步理解进程和内存的基本概念,加强理解进程管理中主要数据结构的设计、进程调度算法及内存管理方式。显示系统在运行过程中各进程的状态及有关参数的变化情况。通过可视化窗口,显示时间片使用情况,正在运行的进程,正在执行的指令等等,并对就绪队列和阻塞队列中存放的信息进行显示。在进程创建时为每个进程分配相应的内存,程序结束时调用进程撤销原语撤销进程,回收之前分配的内存,然后进行进程调度,在I/O中断时将阻塞结束的进程唤醒。在进程时间片用完时,将正在运行的进程添加到就绪队列,重新进程调度,并实现相对时钟的模拟题目中要求写出模拟中断的种类和中断处理方式。模拟内存管理时用可变分区管理方式对内存进行分配与回收,减少碎片化带来的影响。
系统主要分为四大板块:
1.中央处理器额模拟
2.主要寄存器的模拟
3.中断的模拟
进程管理
1.进程控制块(PCB)的设计
2.进程的创建、调度、阻塞、唤醒。
3.CPU函数
4.指令的处理
内存管理
1.内存区域的模拟设计
2.内存单元和分区链表节点的模拟设计
4.PCB和内存块的分配与回收设计
4.界面设计
屏幕上的显示主要分为以下几个部分:
1.创建进程和载入进程按钮部分
2.运行进程显示,包含中间结果、优先级、时间片等
3.就绪队列,阻塞队列中进程的显示
4.主存分配区
5.最终结果显示区
主界面:
载入9个进程的界面:
运行时界面:
该系统最多支持 10 个进程同时运行,进程调度时,每次都在时间片用尽时重新调度。时间片的长度为 5 个系统时钟,一个时钟 1 秒。该系统的内存采用的最优分配策略,每次总是在空闲分区表中寻找满足当前需求的最小空闲区块,因此有时会产生类似下图的碎片。
运行结果:
创建进程界面:
创建成功界面:
运行情况:
运行结果:
可以看到在有的进程执行结束之后内存会被释放,当多个进程争夺设备而设备不 足时就会进入等待队列,直到得到设备才会占用设备,被设备阻塞一段时间。