基于C#实现的操作系统模拟系统

学习是我快乐

发布日期: 2020-07-06 10:02:45 浏览量: 283
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、课程设计的性质与目的

操作系统是计算机系统配置的基本软件之一,其作用是对计算机系统进行统一的调度和—管理,提供各种强有力的系统服务,为用户创造既灵活又方便的使用环境。本课程是计算机及应用专业的一门专业主干课和必修课。通过课程设计,使学生掌握操作系统的基本概念、设计原理及实施技术,具有分析操作系统和设计、实现、开发实际操作系统的能力。

二、课程设计任务

采用C或C#程序设计语言,模拟实现一个简单功能的操作系统。

三、设计要求

3.1 实现作业管理

  • 创建作业

    • 为每个作业定义一个作业控制块(包含作业标识、用户名称、预计运行时间、要求内存大小、作业大小、资源需求的类型和最大数量、以及其他所需信息等)
    • 建立后备作业队列(不少于10个作业)
  • 采用短作业优先调度算法

  • 每次作业调度时,最多从后备队列选取5个作业调入内存

  • 显示作业的调度情况

3.2 实现进程管理

  • 假设每个作业只创建一个进程,进程控制块PCB包含进程标识、状态、大小、进程页表地址、资源类型和数量以及其他信息等

  • 创建进程

    • 申请空白进程控制块PCB
    • 内存分配
    • 初始化进程控制块
    • 将新进程插入就绪队列
  • 进程调度:采用时间片轮转进程调度算法,将CPU分配给就绪队列队首进程,原进程插入就绪队列队尾。显示各进程信息

  • 当进程被调度执行时,提出资源请求,采用银行家算法实现资源分配,避免死锁

  • 唤醒进程:当某类资源被释放时,则对该资源阻塞队列中的进程按顺序判断是否满足资源需要,如果满足资源需求,则把该进程插入就绪队列

  • 终止进程:当进程完成时,释放内存,释放其他资源,撤销进程控制块PCB,进行作业调度。

3.3 实现内存管理功能

  • 采用请求分页虚拟存储器管理方式,页面大小为1K个存储单元

  • 建立一个存储分块表(MBT),表示内存所有物理页的当前状态

  • 允许多进程并发执行,为每个进程建立一个页表,表示该进程中各逻辑页是否已经调入内存,如果已经调入,该逻辑页对应的内存物理页号

  • 当进程发生缺页中断,并且没有空闲物理页时,采用LRU算法页面置换

  • 当进程被调度执行时,模拟进程的访存过程:输入逻辑地址,转换为逻辑页号和页内地址,判断是否产生缺页中断完成调页,然后实现地址变换,查页表得到对应的物理页号,最后显示物理地址

四、总体设计

模拟实现操作系统的作业管理、进程管理和存储管理等功能。

4.1 总体设计图

4.2 各模块功能

作业管理

子功能模块 功能
作业创建 获取text文本框输入的信息,生成作业控制块
作业删除 点击Delete按钮,即可删除相关作业
作业修改 点击Edit按钮,即可修改相关作业
作业添加 点击Add按钮,即可修改相关作业
作业调度 采用短作业优先调度算法,从后备队列选取作业调入内存

进程管理

子功能模块 功能
进程创建 每个作业只创建一个进程,根据作业信息以及键盘输入的信息生成进程控制块
进程终止 当进程完成时,释放内存,释放其他资源,撤销进程控制块PCB,进行作业调度
进程调度 采用时间片轮转进程调度算法,将CPU分配给就绪队列队首进程,原进程插入就绪队列队尾。
进程执行 提出资源请求,采用银行家算法分配资源,避免死锁。

存储管理

子功能模块 功能
内存分配 在进程创建时进行内存分配,生成页表
内存回收 在进程终止时,将分配给该进程的存储块回收(状态标为空闲),将页表删除。
页面置换 当进程发生缺页中断,并且没有空闲物理页时,采用LRU算法页面置换。
地址变换 将输入的逻辑地址分成页号和位移量,若该页在主存中则根据块号和页内偏移量计算出物理地址。

五、详细设计

5.1 作业管理

5.1.1 作业创建

操作流程和实现方法

  • 为每个作业定义一个作业控制块(包含作业标识、用户名称、预计运行时间、要求内存大小、作业大小、资源需求的类型和最大数量、以及其他所需信息等)

  • 插入作业队列末尾

运行界面

5.1.2 作业删除

操作流程和实现方法

选择要删除的项目,点击删除,显示作业队列查看作业信息是否被删除。

运行界面

5.1.3 作业修改

操作流程和实现方法

选择要修改的项目,获取输入的数据将原数据覆盖,显示作业队列查看作业信息是否被修改。

运行界面

5.1.4 作业调度

操作流程和实现方法

点击作业调度即可。

运行界面

5.2 进程管理

5.2.1 进程创建

操作流程和实现方法

用户输入进程的名称、当前资源占用情况,根据进程所属的作业的信息生成进程控制块(包含进程标识、状态、大小、进程页表地址、资源类型和数量以及其他信息等)。

运行界面

5.2.2 进程终止

操作流程和实现方法

当进程已分配资源达到该进程所需的最大资源数量且无剩余运行时间,进程完成。当进程运行时间结束撤销进程。

运行界面

5.2.3 进程调度

操作流程和实现方法

采用时间片轮转进程调度算法,将CPU分配给就绪队列队首进程,将其状态从“就绪”改为“运行”,原进程插入就绪队列队尾;

运行界面

5.2.4 进程执行

操作流程和实现方法

提出资源请求,若资源请求合法,采用银行家算法分配资源,检查资源预分配后的系统安全性,如不安全,则该进程转为“等待”状态,放入等待队列队尾,如安全,则实现本次资源分配。

运行界面

5.3 存储管理

5.3.1 内存分配

操作流程和实现方法

  • 初始化存储分块表,在进程创建时进行内存分配,生成页表

  • 根据进程的大小以及进程申请的内存大小来确定页表中物理页的数量以及分配的存储块的数量

运行界面

5.3.2 内存回收

操作流程和实现方法

在进程终止时,将分配给该进程的存储块回收(状态标为空闲),将页表删除。

运行界面

5.3.3 页面置换

操作流程和实现方法

  • 当进程发生缺页中断,并且没有空闲物理页时,采用LRU算法页面置换

  • 当进程发生缺页中断,有空闲物理页时,将该页面调入空闲物理页中

运行界面

5.3.4 地址变换

操作流程和实现方法

  • 将输入的逻辑地址分成页号和位移量,若该页在主存中则根据块号和页内偏移量计算出物理地址

  • 若该页不在主存中则缺页中断,进行页面调度

运行界面

上传的附件 cloud_download ksya - 副本.rar ( 2.39mb, 2次下载 )
error_outline 下载需要11点积分

发送私信

43
文章数
9
评论数
最近文章
eject