操作系统报告

本文介绍了如何设计并实现一个功能简单的操作系统,包括进程管理、处理器调度(如抢占式优先级调度)、存储器管理(请求页式)和输入输出中断处理。使用PyQT库构建界面,详细描述了进程状态转换、内存管理及调度算法应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

课程设计要求: 设计并实现一个功能简单的操作系统。

至少包含进程管理、处理器调度(至少一种)、存储器的管理(请求页式)和输入输出中断请求的处理功能,有余力的同学,可以模拟实现设备管理和文件系统的功能。

最低要求: 

1、有5个以上进程

2、进程至少执行四类指令:读内存,写内存,输入,输出

3、进程至少有三种状态之间的转换:运行、阻塞和就绪

4、进程至少访问10个页面,自行设计指令序列,产生5次以上缺页中断

5、程必须有页表,有能力的同学可以模拟快表

6、处理器调度算法可以是:抢占式优先级调度、多级反馈队列调度

7、页面调度算法可以是LRU或CLOCK。
  1. 系统实现

4.1界面

系统界面使用PyQT库进行实现。系统有初始化和运行两个按钮,通过QPushButton()方法分别实现初始化进程和运行两个功能。左侧通过QTableWidget()方法展示就绪队列、阻塞队列以及运行中的进程。右侧信息提示栏中可以显示内存分配情况以及当前进程所执行的指令等。并且显示运行进程的页表。如图4-1所示。

图4-1 系统界面

4.2进程管理模块实现

点击初始化按钮,系统自动读取PCB.yaml文件中类容,创建5个不同进程,并加入就绪队列。系统为新进程分配惟一的进程标识符、新进程的程序和数据,以及用户栈分配相应的主存空间及其他必要分配资源。系统初始化PCB中的相应信息,如进程名称、优先级、运行时间、阻塞时间等。如图4-2所示。

图4-2 初始化PCB

正在运行的进程由于提出系统服务请求(如I/O操作),但因为某种原因未得到操作系统的立即响应,或者需要从其他合作进程获得的数据尚未到达等原因,系统会将进程阻塞,等待阻塞时间结束后进程才被唤醒。如图4-3所示。

图4-3 进程阻塞

class PCB:
    def __init__(self, id=0, name='p', priority=0, state=0, start_Block=0, cur_order=0,block_time=0, run_time=0):
        self.id = id
        self.name = name  # 进程名称
        self.priority = priority  # 优先级
        self.state = state  # 0表示ready 1表示running 2表示block
        self.run_time = run_time  # 运行时间
        self.block_time = block_time  # 阻塞时间
        self.cur_order = cur_order  # 指令指针
        self.start_Bolck = start_Block  # 块号
        self.page_Tab = []  # 页表
        self.orders = []  # 指令集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值