2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结

【学习内容:第九章——虚拟存储器】

一、课本内容梳理

1.虚拟存储器

  • 作用:

    1. 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据;
    2. 为每个进程提供了一致的地址空间,从而简化了存储器管理;
    3. 保护了每个进程的地址空间不被其它进程破坏
  • 地位:

    1. 虚拟存储器是中心的:它是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的交互中心;
    2. 虚拟存储器是强大的:它可以创建和销毁存储器片、可以映射存储器片映射到磁盘某个部分等等;
    3. 虚拟存储器若操作不当则十分危险

2.虚拟存储器的基本思想

允许每个数据对象有多个独立的地址,其中每个地址都选自不同的地址空间(比如,虚拟地址空间或者是物理地址空间)。

3.虚存如何作为缓存工具?

  • 理念:

    • 首先,VM上被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。每个字节都有一个唯一的虚拟地址,这个虚拟地址是作为到数组的索引的。
    • 其次,VM系统将虚拟存储器分割为大小固定的虚拟页,每个虚拟页的大小为P=2^p字节;类似地,物理存储器被分割为物理页(也叫做页帧),大小也为P字节
  • 虚存页面集合

    • 未分配的:VM系统没有将它们与任何数据关联起来,也不占用任何磁盘空间;
    • 缓存的:当前缓存在物理存储器中的已分配的页;
    • 未缓存的:没有还存在物理存储器中的已分配页

4.页表

  • 作用:将虚拟页映射到物理页。每次地址翻译硬件将一个虚拟地址转换为物理地址时都会读取页表。操作系统负责维护页表中的内容。
  • 结构:页表就是一个页表条目(PTE)数组;虚拟地址空间中的每个页在页表中一个固定偏移量处都有一个PTE。为了我们的目的,我们假设每个PTE是由一个有效位和一个n位的地址字段组成的。有效位表明了该物理页的起始位置,这个物理页中缓存了该虚拟页。

5.缺页

  • DRAM缓存不命中称为缺页。
  • 概念:
    • 在存储器的习惯说法中,块被称为页;
    • 在磁盘和存储器之间传送页的活动叫做交换或者页面调度;
    • 页从磁盘换入DRAM和从DRAM换出磁盘;一直等待到不命中发生的时候才换入页面;这种策略被称为按需页面调度
  • 处理过程:
    • 缺页异常调用内核中的缺页异常处理程序,该程序会选择一个牺牲页,将其换出内存;
    • 内核从磁盘中拷贝需要的条目到牺牲页之前所在的位置,随后返回;
    • 当异常处理程序返回之后,它会再次启动导致缺页的指令,该指令会把导致缺页的虚拟地址重发送到地址翻译硬件;
    • 此时,页面命中

6.地址翻译

  • 形式上说,地址翻译是一个N元素的虚拟地址空间(VAS)中的一个元素和一个M元素的物理地址空间(PAS)之间的映射;
  • 过程:
    • CPU中的一个控制寄存器,页表基址寄存器指向当前页表;
    • n位的虚拟地址包括以下两个部分:一个p位的虚拟页面偏移和一个(n-p)位的虚拟页号;
    • MMU用后者选择适当的PTE,再将物理页号和虚拟地址中的VPO串联起来得到物理地址;
    • 因为物理和虚拟页面都是P字节的,所以物理页面偏移和VPO是相同的

7.linux虚拟存储器系统

  • linux为每个进程维持了一个单独的虚拟地址空间,其中,内核虚拟存储器位于用户栈之上;
  • 内核虚拟存储器包含内核中的代码和数据结构,还有一些被映射到一组连续的物理页面(主要是便捷地访问特定位置,比如执行I/O操作的时候需要的位置)
  • linux将虚拟存储器组织成一些区域(也叫做段)的集合。一个区域就是已经存在的(已分配的)虚拟存储器的连续片;
    • 意义:允许虚拟地址空间有间隙;内核不用记录那些不存在的页,这样的页也不用占用存储器;
    • 区域结构
      • vm_start:指向这个区域的起始处;
      • vm_end:指向这个区域的结束处;
      • vm_prot:描述这个区域内所包含的所有页的读写许可权限;
      • vm_fags:描述这个区域内的页面是与其他进程共享的,还是这个进程私有的,等等;
      • vm_next:指向链表的下一个结构

8.共享对象&私有对象比较研究

  • 引入:一个对象可以被映射到虚拟存储器的一个区域,要么作为共享对象,要么作为私有对象。

    • 如果一个进程将一个共享对象映射到它的虚拟地址空间的一个区域内,那么进程对这个区域的任何写操作,对其他也把这个共享对象映射到自己的虚拟地址空间的进程来说也是可见的【无论对象被映射到多少个共享区域中,在物理存储器中也只需要该对象的一个拷贝】;
    • 对于一个映射到私有对象的区域所做的改变,对于其他进程来说是不可见的,并且进程对这个区域所做的任何写操作都不会反映在磁盘上的对象中
  • 深入:

    • 私有对象通过写时拷贝的巧妙技术被映射到虚拟存储器中,对于每个映射私有对象的进程,相应私有区域的页表条目都被标记为只读,并且区域结构被标记为私有对象的写时拷贝;
    • 只要没有进程试图写它自己的私有区域,它们就可以继续共享;
    • 只要有一个进程试图去写私有区域内的某个页面,那么这个写操作就会触发一个保护故障,当故障处理程序注意到保护异常是由于进程试图写私有的写时拷贝区域中的一个页面而引起的时候,它就会在物理存储区域中创建这个页面的一个新的拷贝,更新页表条目指向这个新的拷贝,然后恢复其可写权限

9.垃圾收集

  • 概念:垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配块。这些块称为垃圾。自动回收的过程就叫做垃圾收集。垃圾收集器定期地识别垃圾块,并相应地调用free,将这些块放回到空闲链表中
  • 过程:
    • 垃圾收集器将整个存储器视为一张有向可达的图,图的节点被分为一组根节点和一组堆节点;每个节点对应于堆中的一个已分配的块。
    • 当存在任意一条从根节点除法并到达p的有向路径的时候,我们说p是可达的;在任何时刻,不可达节点对应于垃圾,是不可再被回收利用的。
    • 垃圾回收器的角色是维护可达图的某种表示,并通过释放不可达节点将它们返回给空闲链表,来定期回收它们。
    • 无论何时需哟堆空间,应用会用通常的方式调用malloc函数;如果malloc找不到一个合适的空闲块,那么就会调用垃圾收集器,希望能够回收一些垃圾到空闲链表

二、课后练习题

1.练习题9.3

给定一个32位的虚拟地址空间和一个24位的物理地址,对于下面的页面大小P,确定VPN,VPO,PPN,PPO的位数

【补充:VPN——虚拟页号;VPO——虚拟页面偏移量;PPN——物理页号;PPO——物理页面偏移量】

【理解:我们有32个虚拟地址位和24个物理地址位;页面大小是1KB,这意味着对于VPO和PPO,都需要10位(去区分每个页面内这2^10个具体的单位);那么剩下的位分别是VPN,PPN】

P = 1KB——>VPN = 22,VPO = 10,PPN = 14,PPO = 10

P = 4KB——>VPN = 20,VPO = 12,PPN = 12,PPO = 12

2.练习题9.5

编写一个C语言程序mmapcopy.c,使用mmap将任意一个大小的磁盘文件拷贝到stdout,输入文件的名字必需作为一个命令行参数来传递

【答案:】

#include "csapp.h"
void mmapcopy(int fd,int size)
{char *bufp;bufp = Mmap(NULL,size,PROT_READ,MAP_PRIVATE,fd,0);Write(1,bufp,size);return;
}
int main(int argc,char **argv)
{struct stat stat;int fd;if(argc !=2)//因为传进来的参数应该有两个,一个是文件名(题目要求用命令行传递);第二个是{printf("usage:%s ,<filename>\n",argv[0]);exit(0);}fd = Open(argv[0],O_RDONLY,0);fstat(fd,&stat);mmapcopy(fd,stat.st_size);exit(0);
}

代码托管

1071611-20171203190204616-251580860.jpg

结对及互评

结对队友20155303

其他(感悟、思考等,可选)

这周学习了新的处理器环境,挺受用的,也理解了ISA是处理器设计者和编译器编写者的抽象层。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行15篇400小时
第一周177/1771/110/10
第三周308/4852/212/22
第五周277/7622/410/32
第六周567/13291/515/47
第七周22/13511/610/57
第九周1645/29963/920/77
第十一周689/36852/1120/97

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难,软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表)

参考资料

  • 《深入理解计算机系统V3》学习指导
  • ...

转载于:https://www.cnblogs.com/elevator/p/7966761.html

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

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

相关文章

vscode弹出cmd_先看看 VS Code Extension 知识点,再写个 VS Code 扩展玩玩

TL;DR文章篇幅有点长 ,可以先收藏再看 。要是想直接看看怎么写一个扩展,直接去第二部分 ,或者直接去github看源码 。第一部分 --- Extension 知识点一、扩展的启动如何保证性能 --- 扩展激活(Extension Activation) 我…

webp转换gif_用 WebP 创建尺寸更小、细节更丰富的图片,以此来提高网站的速度...

WebP 文件格式是一种基于 RIFF(资源互换文件格式)的文档格式。WebP 是 2010 年 Google 开发的一种图片格式,它为网页上的图片提供了卓越的无损和有损压缩。网站开发者们可以使用 WebP 来创建尺寸更小、细节更丰富的图片,以此来提高网站的速度。更快的加载…

python 如何判断excel单元格为空_如何用python处理excel(二)

读取excelimport xlrdworkbookxlrd.open_workbook(rC:\Users\Desktop\hebing\学生登记表.xls)sheetworkbook.sheet_by_index(0)#根据序列号来打开某一个sheetrowsheet.nrows#将excel的行数赋值给变量colsheet.ncols#将excel的列数赋值给变量print(sheet.cell_value(1,0))#打印出…

web前端到底是什么?有前途吗

web前端到底是什么? 某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> …

此加载项为此计算机的所有用户安装_MDI Jade 6.5软件安装教程

软件下载▼关注微信公众号:贵州永航科技回复Jade即可获得软件安装包下载地址以及详细安装教程更多软件安装教程可点击菜单栏获取软件介绍MDI Jade是一款专门用于XRD分析的软件,XRD分析就是X射线衍射分析,MDI Jade通过对材料进行X射线衍射&…

java 线程定时器_Java线程之Timer定时器

定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联。Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。执行任务的时间晚于当前时间…

vscode 写vue 没有js提示_如何用VSCode实现一个vue.js项目?

1,新建项目打开Visual studio code打开一个你想要创建项目的文件夹打开集成终端:查看 –> 集成终端 或者直接按 ctrl\ 如果没有安装vue-cli,在终端输入:npm install \-g vue-cli全局安装vue-cli然后新建项目vue init webpack projectNamep…

python有没有类似unity3d_像web一样使用python

使用传统的web开发技术,也就是htmljs,然后搭配一个后端语言,已经成为当今web开发的固定模式了,为此也形成了众多的toolkit,譬如ror,django,各种js图形库更是玲琅满目,从非常大程度上也加速了开发过程.但传统web应用也非常自然地有一些诟病,有些特殊效果,c端能够轻而易举地完毕,…

邓白氏编码查询_外贸人常用查询工具汇总

外贸工具类网站FOB价格计算器http://bbs.fobshanghai.com/fobprice.htmCIF价格计算器http://www.easiertrade.com/public/cif.html?_1487894720000海关原产地证真伪查询https://dwz.cn/f3O8YGK6出口退税查询https://dwz.cn/kGWsBclu国家已正式于2018年11月1日起调整产品的出口…

winscp

简介:是linux的一个连接工具 1.winscp的下载:就会自动下载的了 2.安装配置: https://jingyan.baidu.com/article/6525d4b15bae6fac7d2e94a0.html 3.生成密钥: https://jingyan.baidu.com/article/ed2a5d1f377ccb09f6be178b.html 4…

gitlab-ee使用mysql_在 GitLab 我们是如何扩展数据库的

很长时间以来 GitLab.com 使用了一个单个的 PostgreSQL 数据库服务器和一个用于灾难恢复的单个复制。在 GitLab.com 最初的几年,它工作的还是很好的,但是随着时间的推移,我们看到这种设置的很多问题,例如,数据库长久处…

哈希表数据结构_Java数据结构哈希表如何避免冲突

前言一、哈希表是what?这是百度上给出的回答:简而言之,为什么要有这种数据结构呢?因为我们想不经过任何比较,一次从表中得到想要搜索的元素。所以就构造出来了哈希表,通过某种函数(哈希函数)使元素的存储位…

10 3 java_10.3 UiPath如何调用Java

调用Java方法(Invoke Java Method)的介绍从Java Scope中的.jar加载的方法中调用指定的Java方法。并结果存储在变量中二、Invoke Java Method 在UiPath中的使用打开设计器, 在设计库中新建一个Sequence,为序列命名及设置Sequence存放的路径, 在Activities中搜索Java …

台达伺服电机选型手册_机械加工工艺师手册_打包下载

如何【设为星标★】,优先推送资料信息?Ta们都在看咱们:机械大佬群注意及时保存和下载,资料若失效请拉到本页底部留言,我们将不定时补发!免责声明:该资料系网络转载,版权归原作者所有…

团队作业7——Beta版本冲刺计划及安排

需要改进的工具流程(如版本控制、测试工具等) 首先把之前项目的BUG进行修复 然后完成如下的功能 冲刺的时间计划安排 (冲刺时间为期七天,安排在2017.12.4——2017.12.10之间) 组员任务陈福鹏实现博客.多语言、倒计…

开发黑名单功能demo_中台实践:通用化黑名单平台

业务中台的价值主要体现在对通用化业务能力的沉淀、整合,通过对可复用业务流程和业务功能的设计,向不同业务方提供标准化且可扩展的服务能力。本文来聊一聊笔者工作过程中设计的通用化黑名单平台,通过将用户管控能力的下沉,为各业…

Java旅游动吧项目讲解_springboot动吧项目

架构分析页面流程业务分析:客户端向服务端发送一个请求,发向了Tomcat,如果Tomcat只有一个线程是不可能处理多个请求的,所以就需要一个多个线程的池资源,然后线程用I/O读取请求中的数据,然后服务器从http协议…

java并发-内存模型与volatile

JMM的关键技术点都是围绕着多线程的原子性、可见性和有序性来建立的。因此,我们首先必须了解这些概念 1,原子性 原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰&#xf…

Notepad++使用教程

Notepad 快捷键 大全CtrlC 复制CtrlX 剪切CtrlV 粘贴CtrlZ 撤消CtrlY 恢复CtrlA 全选CtrlF 键查找对话框启动CtrlH 查找/替换对话框CtrlD 复制并粘贴当行CtrlL 删除当前行CtrlT 当行向上移动一行F3 查找下一个ShiftF3 查找上一个CtrlShiftF 组合在文件中查找CtrlF3 查找&#x…

安卓手机刷软路由_华为路由AX3 Pro上手测评:用过最方便的路由器,没有之一...

都说"科技改变生活",但我总觉着,现如今的人们似乎被数码产品"奴役"了。比如说:之前买过某品牌路由器,设置过程之繁琐,直接让当时是数码小白的我崩溃了。自打那之后,我选购数码产品的标…