操作系统作业 18-22章

news2024/11/15 23:22:27

第十八章

1.根据题中所给参数计算线性页表大小和不同情况下的变化

        paging-linear-translate.py -P 1k -a 1m -p 512m -v -n 0

        paging-linear-translate.py -P 1k -a 2m -p 512m -v -n 0

        paging-linear-translate.py -P 1k -a 4m -p 512m -v -n 0

        页大小为1kb,地址空间大小分别为1mb,2mb,4mb,物理地址空间大小为512mb,页表项应分别有1mb/1kb=1024,1mb/1kb=2048,1mb/1kb=4096。假设每个页表项需要4字节的空间,页表的大小分别为4kb,8kb,16kb。在页大小相同的情况下,地址空间增长,页表项随之增长,页表增大。

        paging-linear-translate.py -P 1k -a 1m -p 512m -v -n 0

        paging-linear-translate.py -P 2k -a 1m -p 512m -v -n 0

        paging-linear-translate.py -P 4k -a 1m -p 512m -v -n 0

        页大小分别为1kb,2kb,4kb,地址空间大小为1mb,物理地址空间大小为512mb,页表项分别有1mb/1kb=1024,1mb/2kb=512,1mb/4kb=256。假设每个页表项需要4字节的空间,页表的大小分别为4kb,2kb,1kb。在地址空间大小相同的情况下,页的大小增大,页表项减少,页表减小。

        使用很大的页会导致页内部的空间可能存在大量浪费和内部碎片,因此不使用很大的页。

2.   使用题中标志paging-linear-translate.py -P 1k -a 16k -p 32k -v模拟,页的大小为1kb,地址空间16k,共16页,用4位表示虚拟页号,10位表示偏移量,并使用-u更改分配给地址空间的页数。

        分配页数为0:

       VA 0:invalid address

       VA 1:invalid address

       VA 2:invalid address

       VA 3:invalid address

       VA 4:invalid address

      分配给地址空间的页数为0,因此没有有效的地址。

      分配页数为25:

       VA 1(11100110000110):VPN=14,invalid address

       VA 2(10101111000110):VPN=10,PFN=19,OFFSET=966,PA=20422

      VA 3(01111000110111):VPN=7,invalid address

       VA 4(00011001110001):VPN=1,invalid address

       VA 5(01101111001001):VPN=6,invalid address

       分配页数为50:

       VA 1(11001110000101):VPN=12,PFN=15,OFFSET=901,PA=16261

       VA 2(10001100011101):VPN=8,invalid address

       VA 3(00000011100110):VPN=0,PFN=24,OFFSET=230,PA=24806

       VA 4(10111000001111):VPN=11,invalid address

       VA 5(01100110000110):VPN=6,PFN=29,OFFSET=390,PA=30086

       分配页数为75:

       VA 1(10111000001111):VPN=11,PFN=19,OFFSET=527,PA=19983

       VA 2(01100110000110):VPN=6,PFN=31,OFFSET=390,PA=32134

       VA 3(11010011001010):VPN=13,PFN=27,OFFSET=202,PA=27850

       VA 4(10101011000011):VPN=10,PFN=3,OFFSET=707,PA=3779

       VA 5(00000000010010):VPN=0,PFN=24,OFFSET=18,PA=24594

       分配页数为100:

      与分配页数为75结果相同。

      增加每个地址空间中的页的百分比,有效地址将更多。

3.按照题中所给参数运行

      paging-linear-translate.py -P 8 -a 32 -p 1024 -v -s 1,页的大小为8,地址空间32,物理地址空间大小为1024,页数为4,2位表示页号,3位表示偏移量:

        VA 1(01110):VPN=1,PFN=97,OFFSET=6,PA=782

        VA 2(10100):VPN=2,invalid address

        VA 3(11001):VPN=3,invalid address

        VA 4(00011):VPN=0,invalid address

        VA 5(00000):VPN=0,invalid address

        这样的组合不合理,地址空间很小,一个地址空间只能存放4页。

        paging-linear-translate.py -P 8k -a 32k -p 1m -v -s 2,页大小为8kb,地址空间大小为32kb,物理地址空间为1mb,页数为4,2位表示页号,13位表示偏移量:

        VA 1(101010110111001):VPN=2,invalid address

        VA 2(010011101110001):VPN=1,invalid address

        VA 3(100110110001111):VPN=2,invalid address

        VA 4(100110110101011):VPN=2,invalid address

        VA 5(100101001100100):VPN=2,invalid address

        该组合同样不合理,地址空间小。

        paging-linear-translate.py -P 1m -a 256m -p 512m -v -s 3,页大小为1mb,地址空间大小为256mb,物理地址空间为512mb,页数为256,8位表示页号,20位表示偏移量:

        VA 1(0011000010001011001001001101):

        VPN=48,PTE=0x800001f6,PFN=502,OFFSET=569933,PA=526955085

        VA 2(0100001000110101000111100110):

        VPN=66,PTE= 0x00000000,invalid address

        VA 3(0010111111101011011001111011):

        VPN=47,PTE= 0x800000a9,PFN=169,OFFSET=964219,PA=178173563

        VA 4(1011010001101001011101111101):

        VPN=180,PTE= 0x00000000,invalid address

        VA 5(1101101111001100111010110100):

        VPN=219,PTE=0x800001f2,PFN=498,OFFSET=839348,PA=523030196

        组合不合理,页和地址空间都很大,物理地址空间只能满足两个地址空间的大小。

第二十章

1.

      对于二级页表,只需要一个寄存器找到页目录的位置,从页目录中找到存放页表的位置,从页表中就可以找到页表项。三级页表同样只需要一个寄存器找到页目录的位置,接下来就可以通过一级页目录找到二级页目录的位置,通过二级页目录找到页表的位置,最后找到页表项。

2.

      首先查看文档中给出的条件,该模拟程序中,页的大小为32字节,地址空间中共有1024页(共32kb),物理地址空间共128页。128页需要7位表示页号,1位表示是否有效,因此一个页表项占用1个字节的空间,所有页表项占用1024字节的空间。将页表项放入32字节大小的页中,需要使用32页,使用5位在页目录中进行索引,5位在页表中索引,5位表示页内偏移,虚拟地址共15位,由页目录索引+页表索引+页内偏移构成。

      种子0

        VA 0:

        611C    110000100011100,页目录索引:11000(24),页表索引:01000(8),页内偏移:11100(28),页目录基址:108。

        首先找到页目录项,在108页的25字节,为0xa1(10100001),最高位表明有效,后七位为页表所在的页:33。

        页表索引为8,即33页的9字节,为0xb5(10110101),最高位表明有效,后七位为物理页帧0x35(53),则物理地址为PA=53*32+28=1724(0x6bc),找到35页的第29个字节即为最终找到的值:0x08。

        其他地址的转换方式相同,具体情况如下表:

        种子1

        计算方法相同,结果如下:

        种子2

        结果如下:

3.

        当初次访问内存中的某个位置时,会产生不命中,系统将访问页表,找到虚拟页所对应的物理页,并将这个映射保存到缓存中。利用时间局部性与空间局部性,接下来的访问很有可能导致大量的缓存命中,从而导致快速访问。在一些特定的情况下,程序短时间访问的页数大于缓存中的页数,也可能会产生大量的缓存不命中。

第二十二章

1.

        使用题中所给参数-s 0 -n 10生成随机地址:

      缓存大小为3页,采用不同策略,情况如下:

     

                 

            FIFO,命中率为10%                                LRU,命中率为20%

                  OPT,命中率为40%

        使用参数-s 1 -n 10生成随机地址:

        采用不同策略,情况如下:

                 

FIFO,命中率20%                                          LRU,命中率20%

        OPT,命中率30%

        使用参数-s 2 -n 10生成随机地址:

        采用不同策略的情况如下:

                     

      FIFO,命中率40%                                          LRU,命中率40%

      OPT,命中率40%

2.

      不同策略下的最差情况的地址引用序列

      FIFO:1,2,3,4,5,6

      LRU:1,2,3,4,5,6

      MRU:1,2,3,4,5,6,5,6,5,6…

      对于LRU和FIFO,只要缓存大小与序列大小相同就可以提高命中率,且除了冷启动不命中外均命中。对于MRU,如果缓存容量刚好已满,而有两页交替进行访问,只要缓存增大1就可以提高命中率,大幅提高性能。

3.

      编写python程序,随机生成一个序列,进行100次地址访问,地址介于0-9之间。程序如下:

        在这种情况下没有局部性,随机进行访问,预计除OPT外的策略效果基本相近。

        使用paging-policy.py程序对产生的序列进行模拟,缓存大小为3,命中率如下:

        FIFO:31%

        LRU:28%

        CLOCK:27%

        RAND:29%

        OPT:50%

        结果符合预期。

4.

      编写python程序,生成具有局部性的序列。访问地址仍为0-9,随机选择两页,在80%的时间访问这两页,20%的时间访问其他页。

        使用paging-policy.py程序对产生的序列进行模拟,缓存大小为3,命中率如下:

        FIFO:61%

        LRU:70%

        CLOCK:66%

        RAND:61%

        OPT:76%

        LRU策略在几种策略中效果最好,RAND策略比LRU效果要差一些,CLOCK策略比RAND和FIFO策略较好,比LRU差。对于CLOCK策略,改变时钟位,结果如下

        Clockbits 2:66%

        Clockbits 1:61%

        Clockbits 3:71%

        Clockbits 4:71%

        Clockbits 5:72%

        Clockbits 7:73%

        Clockbits 7:74%

        Clockbits 8:74%

        Clockbits 9:74%

        Clockbits 10:73%

        可以观察到,在一定的范围内,随着时钟位的增加,CLOCK策略的效果逐步提升,命中率超过了LRU策略,甚至已经接近了OPT。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git详细教程,彻底理解Git运作机制

Git详细教程前言git常用命令版本管理远程仓库分支管理正文git版本管理版本回退工作区和暂存区工作区版本库(Repository)撤销修改删除文件git远程仓库github使用添加远程库小结从远程库克隆git分支管理创建和合并分支git merge vs git rebase解决冲突第一…

即视角|元宇宙社交:新瓶旧酒 or 老树新芽?

即视角 Insight 共享即构新洞察,共建行业新动能——ZEGO即构科技基于音视频技术领域的多年深耕,综合面向各行业的服务经验,在【即视角】栏目发布即构对行业的洞察。 近期我们将聚焦于#元宇宙商业化#话题,共分为三篇:…

自从上了数据结构课之后就想自学c++了

所以今天是摆烂的第三天: 就是来总结一下自己刚学c常犯的小错误(在注释里)和总结吧; 先来看看hello world输出代码; //打了四遍这个代码终于对了TAT //在一整个程序里面如果有多个文件并且不止一个main函数的话&…

聊聊Redis sentinel 机制

Redis 的哨兵机制自动完成了以下三大功能,从而实现了主从库的自动切换,可以降低 Redis 集群的运维开销: 监控主库运行状态,并判断主库是否客观下线;在主库客观下线后,选取新主库;选出新主库后&…

C语言函数大全-- j 开头的函数

C语言函数大全 本篇介绍C语言函数大全– j 开头的函数 1. j0,j0f 1.1 函数说明 函数声明函数功能double j0 (double x);计算 x 的 第一类 0 阶贝塞尔函数(double)float j0f (float x);计算 x 的 第一类 0 阶贝塞尔函数(float&…

AndroidNDK开发——使用Cmake编译生成so文件

文章目录AndroidNDK开发——使用Cmake编译生成so文件1.添加Cmake文件:2.添加Cmake依赖:3.jni文件如下:4.Android.mk文件:5.Application.mk文件6.SerialPort.c文件:7.SerialPort.h文件:8.运行项目&#xff1…

剑指 Offer II 049. 从根节点到叶节点的路径数字之和

中等题题目 : 给定一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生…

BloombergGPT: 首个金融垂直领域大语言模型

BloombergGPT: 首个金融垂直领域大语言模型 Bloomberg 刚刚发布了一篇研究论文,详细介绍了他们最新的突破性技术 BloombergGPT。BloombergGPT是一个大型生成式人工智能模型,专门使用大量金融数据进行了训练,以支持金融行业自然语言处理 (NLP…

ORACLE EBS 系统架构与应用实践(一)

一、从ERP到EBS 从上世纪70年代晚期的物料需求计划MRP(Material Requirements Planning)到80年代的MRP II,再到90年代的企业资源计划ERP(Enterprise Resource Planning),企业管理软件(或曰应用…

直播|StarRocks 3.0 极速统一的湖仓新范式

近期,StarRocks V3.0 RC 版本发布。自此,StarRocks 开启了从 OLAP 到 Lakehouse 演进的新篇章。 全新升级的 StarRocks 3.0: 通过存算分离架构,帮助用户降低存储成本、提升计算弹性 通过数据湖分析、物化视图等特性简化湖仓融合…

从“高内聚,低耦合”说起

从“高内聚,低耦合”说起 记得在上学的时候,⽼师就说过“⾼内聚,低耦合”,但当初对这句话的理解⽐较浅显。⼯作之后,为了说服别⼈采⽤⾃⼰设计的⽅案,常常说“……这样就做到了⾼内聚,低耦合……

【C语言 - 初阶指针 概念、类型、野指针、指针运算】

C语言 - 初阶指针一 指针概念注意:指针变量的大小:(与指向的数据类型无关)二 指针类型2.1指针类型的含义:2.1.1 不同指针类型决定解引用时候权限不同:总结:2.1.2 任何类型的指针变量都能存放地址…

10 个高级 Python 面试问题

随着 Python 最近变得越来越流行,你们中的许多人可能正在接受与 Python 打交道的技术面试。在这篇文章中,我将列出十个高级 Python 面试问题和答案。 这些内容可能会令人困惑,并且针对的是中级开发人员,他们需要对 Python 作为一…

RB-PEG-COOH,罗丹明聚乙二醇羧基化学试剂简介;RhodamineB-PEG-acid

RB-PG-COOH, 罗丹明聚乙二醇羧基 中文名称:罗丹明-聚乙二醇-羧基 英文名称:RhodamineB-PEG-acid RB-PEG-COOH 性状:固体或粘性液体,取决于分子量 溶剂:溶于水和DCM、DMF、DMSO等常规性有机溶剂 分子量&#xff1…

归排、计排深度理解

归并排序:是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法&#…

ICMP隧道技术实现防火墙穿透

1.在mac os的虚拟机里准备三台kali 三台主机ip地址分别是 192.168.1.15,192.168.1.16,192.168.1.17, 为方便描述 依次把他们暂且命名为主机A,主机B,主机C 2.在主机C 上打开终端,输入 cd /usr/local/src 然后新建一个hello.txt 文…

最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到

技术选型 1,前端 小程序原生MINA框架 css JavaScript Wxml 2,管理后台 云开发Cms内容管理系统 web网页 3,数据后台 小程序云开发 云函数 云开发数据库(基于MongoDB) 云存储 4,人脸识别算法 基于百度…

xxl-job定时任务调度中心的配置以及整合到自己的项目中实现远程调用

目录 前言: xxl-job配置与启动: xxl-job-admin: xxl-job-execultor--sample-springboot: 启动任务调度中心: ​编辑 调用定时任务: ​编辑 在自己的项目中配置xxl-job: 项目结构: ​编辑 AdUp…

【CSS】更改用户界面样式 ② ( 取消轮廓线 outline | 取消轮廓线设置方式 outline: 0; | 代码示例 )

文章目录一、更改轮廓线 outline二、轮廓线代码示例三、取消轮廓线代码示例一、更改轮廓线 outline 轮廓线 是 元素 边框 外面 的一条线 , 其作用是 选中后突出元素 ; 一般情况下都会去掉 轮廓线 显示 ; outline 样式后可设置 1 ~ 3 个参数 , 按照顺序分别是 : outline-color…

JavaScript-DOM基础

DOM介绍 事件介绍 文档加载 DOM查询 DOM介绍 DOM&#xff0c;全称Document Object Model文档对象模型。浏览器已经提供了文档节点对象 时window属性&#xff0c;可以在页面中直接使用&#xff08;document文档节点代表整个网页&#xff09; <button id "btn&qu…