设计方案.docx

时间:2022-12-25 17:17:00
【文件属性】:

文件名称:设计方案.docx

文件大小:643KB

文件格式:DOCX

更新时间:2022-12-25 17:17:00

文档资料

设计方案 设计方案全文共14页,当前为第1页。设计方案全文共14页,当前为第1页。 设计方案全文共14页,当前为第1页。 设计方案全文共14页,当前为第1页。 项目说明文档 操作系统课程设计 ——内存管理 作 者 姓 名: 李一凡 学 号: 1852144 学院、 专业: 软件学院 软件工程 同济大学 Tongji University 目录 1 分析 2 1.1 背景分析 2 1.2 功能分析 2 1.3 算法思想 2 2 设计 3 2.1 数据结构设计 3 设计方案全文共14页,当前为第2页。设计方案全文共14页,当前为第2页。2.2 类结构成员 4 设计方案全文共14页,当前为第2页。 设计方案全文共14页,当前为第2页。 2.3 类操作设计 6 1.逻辑块类 6 2.主窗口类 6 2.4 系统流程设计 10 1.所有控件的初始化: 10 2.指令初始化: 11 3.按键绑定: 11 3运行情况 13 1 分析 1.1 背景分析 只涉及到一个作业(进程),而且也没有特别提到说交换区的概念,我们只要把逻辑地址和实际的物理地址对应起来就可以了。主要是FIFO和LRU两种算法实现。 1.2 功能分析 在整个界面中,可以单步、五步、或者连续执行。在文本框有输出提示,对于交换和缺页情况用不同颜色标记的很清楚。 整体指令现规定执行1000次,文本每次最多显示20000行内容,前面多余的部分会自动删除。 可以选择两种算法分别执行,注意:如果单步执行的时候切换算法是可行的,但事实上这么做没有任何意义。 我的指令模拟不是按照老师那样,所以有出入很正常。我是用随机函数,严格按照1:2:1的比率来随机分配指令类型。 1.3 算法思想 FIFO:直接用一个内置的队列,满足先进先出,在队列变化时我们保存弹出来或者添加的逻辑地址即可,用另一个数组来存储对应的物理地址。 设计方案全文共14页,当前为第3页。设计方案全文共14页,当前为第3页。每次调度,先判断指令是否已经在逻辑内存中,如果在,打印提示即可。如果不在,分两种情况:如果内存块有空,则直接调入。如果内存满,发生调度,用队列模拟即可。 设计方案全文共14页,当前为第3页。 设计方案全文共14页,当前为第3页。 LRU:我仍然是用队列,不过是把它只作为判断逻辑内存块是否满的工具。设置一个结构体,存储逻辑块号和对应的访问时间间隔,如果逻辑块被填充而且在一次访问中不命中,则将它的访问间隔增加。如果命中,将访问时间置1,表示刚刚访问过。如果内存块为空,它的访问时间间隔就一直保持为零。 调度在整体与FIFO相似,只是在交换的时候有所不同。在交换前,按照访问间隔排序,将访问间隔最大的逻辑块中的内容交换出去。 2 设计 2.1 数据结构设计 总体上一个主窗口类、逻辑块类,一个物理地址类,还有一个对外输出窗口类。还有一些ui空间(单步、五步、连续执行、两种算法选择)。 设计方案全文共14页,当前为第4页。设计方案全文共14页,当前为第4页。2.2 类结构成员 设计方案全文共14页,当前为第4页。 设计方案全文共14页,当前为第4页。 设计方案全文共14页,当前为第5页。设计方案全文共14页,当前为第5页。 设计方案全文共14页,当前为第5页。 设计方案全文共14页,当前为第5页。 设计方案全文共14页,当前为第6页。设计方案全文共14页,当前为第6页。2.3 类操作设计 设计方案全文共14页,当前为第6页。 设计方案全文共14页,当前为第6页。 1.逻辑块类 一个重启,一个刷新显示。 2.主窗口类 void MainWindow::dealcheck1() { if(ui->algorithm1->isChecked()) { select=FIFOA; } } void MainWindow::dealcheck2() { if(ui->algorithm2->isChecked()) { select=LRUA; } } 这两个来处理算法选择按钮的响应。 void MainWindow::T1full() { double lose1 = double(Miss1) / double(Toperation1); edit0.append("FIFO执行结束."); 设计方案全文共14页,当前为第7页。设计方案全文共14页,当前为第7页。 QString temp3=QString::number(Miss1); 设计方案全文共14页,当前为第7页。 设计方案全文共14页,当前为第7页。 QString temp4=QString::number(lose1*100); temp3="缺页次数:"+temp3+"缺页率:"+temp4+"%"; edit0.append(temp3); edit0.app


网友评论