# operating-sys-simulation **Repository Path**: xiangshan/operating-sys-simulation ## Basic Information - **Project Name**: operating-sys-simulation - **Description**: 一个使用C#语言,图形化界面,模拟多核心批任务处理操作系统 基于VS2013构建 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-02-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1).内核 Drive.cs 内核是一个单独操作系统实例的抽象映射,它就是整个操作系统,它的成员包括了以下一切零部件,可以将他看为一部微机的抽象 2).中央处理器 CPU.cs 项目中模拟了CPU的完整实现,包括一个CPU周期的fetch/decode/excute,同时定义并沿用了大二时计算机组成原理课时课程设计的CPU指令集,每一条C#的线程维护一个CPU,CPU和CPU的高速缓存是相互独立的,但受调度器的统一调度,CPU包括激活/休眠/两种状态,因为CPU采用了统一调度/模块化的双重设计,因此本系统允许多核心 3).加载器 Loader.cs 它是操作系统的外部程序接口,通过调用这个类让操作系统实例从外部读取信息 4).IO唤醒器 SystemCaller.cs 它是操作系统的外部程序接口,通过调用这个类让操作系统实例对外部输出操作系统的数据(以文件形式) 5).进程 PCB.cs 进程控制块包含了单个进程所具备的的信息,我们的设计上,它包含进程的状态,进程等待时间,IO次数,进程ID,进程优先级,指令长度,缓存大小,数据地址,作业长度等信息 Process.cs 单个程序实例的抽象,实际上它就只是包含了一个程序控制块,我们并不不关注这个进程抽象的具体内容 6).任务调度器 Dispatcher.cs 调度器负责维护进程的就绪队列,负责将就绪队列的进程出队发送至CPU处理 LongTermScheduler.cs 长程调度器负责将新创建的进程按用户执行的方法放入就绪队列,这里提供了操作系统常见的三种算法选择 7).内存管理单元 MMU.cs 内存管理负责将程序的逻辑地址映射成为真实的物理地址,负责处理缺页中断引起的IO交换 8).进程队列 NewProcessQueue.cs 新进程队列 ReadyQueus.cs 就绪队列 WaitingQueue.cs 等待队列 9).硬盘 Disk.cs 一个大小为2048的无符号整型数据用以长期储存批任务的指令及数据,硬盘抽象类提供的方法实际上就只有读/写,获取大小 10).内存 RAM.cs 只模拟了用户区域的内存 一个大小为2048的无符号整型数据用以储存正在被执行的程序,它使用了操作系统中同步的概念去设计(当然在C#中同步只是一个LOCK()的事情),除了读写之外,在程序执行完毕的时候还提供了释放内存的选项,使内存再次可用