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

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

第9章教材学习内容总结

9.1 物理和虚拟寻址

  1. 物理地址:计算机系统的主存被组织成一个人由M个连续的字节到校的单元组成的数组。每字节都有一个唯一的物理地址。第一个字节的地CPU生成址为0,接下来的字节地址为1,再下一个是2,依次类推。给定这种简单的结构,CPU访问存储器的最自然的方式就是使用物理地址。
  2. 虚拟地址:早期的PC使用物理寻址,而且诸如数字信号处理器,嵌入式微控制器以及Cray超级计算机这样的系统仍然继续使用这种寻址方式。而为通用计算机设计师的现代处理器使用的是虚拟寻址。使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址(这个过程叫做地址翻译,相关硬件为存储器管理单元MMU)

9.2 地址空间

地址空间 (address space) 是一个非负整数地址的有序集合

如果地址空间中的整数是连续的,那么我们说它是一个线性地址空间 (linear address space)。

在一个带虚拟存储器的系统中, CPU 从一个有N=2n次方个地址的地址空间中生成虚拟地址,这个地址空间称为虚拟地址空间(virtual address space)

一个地址空间的大小是由表示最大地址所需要的位数来描述的。

一个系统还有一个物理地批空间 (physical address space),它与系统中物理存储器的M个字节相对应。

9.3 虚拟存储器作为缓存的工具

虚拟存储器——虚拟页VP,每个虚拟页大小为P=2^平字节

物理存储器——物理页PP,也叫页帧,大小也为P字节。

任意时刻,虚拟页面的集合都被分为三个不相交的子集:

DRAM缓存的组织结构

总是使用写回而不是直写。

页表

页表是一个数据结构,存放在物理存储器中,将虚拟页映射到物理页。有效位+n位地址字段

虚拟存储器中的局部性

局部性原则保证了在任意时刻,程序将往往在一个较小的活动页面集合上工作,这个集合叫做工作集/常驻集。

颠簸:工作集大小超出了物理存储器的大小。

9.4 虚拟存储器作为存储器管理的工具540

  • 按需页面调度和独立的虚拟地址空间的结合,对系统中存储器的使用和管理造成了深远的影响。特别地,VM简化了链接和加载、代码和数据共享,以及应用程序的存储器分配。
  • 简化链接
  • 简化加载
  • 简化共享
  • 简化存储器分配

9.5 虚拟存储器作为存储器保护的工具541

  • 任何现代计算机系统必须为操作系统提供手段来控制对存储器系统的访问。不应该允许一个用户进程修改它的只读文本段。而且也不应该允许它读或修改任何内核中的代码和数据结构。不应该允许它读或者写其他进程的私有存储器,并且不允许它修致任何与其他进程共享的虚拟页面,除非所有的共享者都显式地允许它这么做(通过调用明确的进程间通信系统调用)。
  • 就像我们所看到的,提供独立的地址空间使得分离不同进程的私有存储器变得容易。但是,地址翻译机制可以以一种自然的方式扩展到提供更好的访问控制。因为每次CPU生成一个地址时,地址翻译硬件都会读一个PTE,所以通过在PTE上添加一些额外的许可位来控制对一个虚拟页面内容的访问十分简单。下图展示了大致的思想。在这个示例中,每个PTE中已经添加了三个许可位。SUP位表示进程是否必须运行在内核超级用户)模式下才能访问该页。

9.6地址翻译

形式来说,地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射,

MAP:VAS到PAS和0

P543中图9-13a展示了当页面命中时,CPU硬件执行的步骤

-第一步:处理器生成一个虚拟地址,并把它传送给MMU

-第二步:MMU生成PTE地址,并从高速缓存/主存请求得到它

-第三步:高速缓存/主存向MMU返回PTE

-第四步:MMU构造物理地址,并把它传送给高速缓存/主存

-第五步:高速缓存/主存返回所请求的数据字给处理器

9.6.1结合高速缓存和虚拟存储器

将VM于物理寻址的高速缓存结合起来

1.VA:虚拟地址

2.PTEA:页表条目地址

3.PTE:页表条目

4.PA:物理地址

9.6.2利用TLB加速地址翻译

1.第一步:CPU产生一个虚拟地址

2.第二步和第三步:MMU从TLB中取出相应的PTE

3.第四步:MMU将这个虚拟地址翻译成一个物理地址,并且把它发送到高速缓存/主存

4.第五步:高速缓存/主存将所请求的数据字返回给CPU

9.6.3多级页表

注意:

地址是从上往下增加的

9.6.4综合:端到端的地址翻译

TLB

页表

高速缓存

9.7 core i7地址翻译551

  1. PTE有三个权限位,控制对页的访问。R/W位确定页的内容是可以读写的还是只读的。U/S位确定是否能够在用户模式中访问该页,从而保护操作系统内核中的代码和数据不被用户程序访问。XD(禁止执行)位是在64位系统中引入的,可以用来禁止从某些存储器页取指令。这是一个重要的新特性,通过限制只能执行只读文本段,使得操作系统内核降低了缓冲区溢出攻击的风险。
  2. 当MMU翻译每一个虚拟地址时,它还会更新另外外两个内核缺页处理程序会用到的位。每次访问一个页时,MMU都会设置A位,称为引用位。内核可以用这个引用位来实现它的页替换算法。每次对一个页进行了写之后,MMU都会设置D位,又称脏位。脏位告诉内核在拷贝替换页之前是否必须写回牺牲页。内核可以通过调用一条特殊的内核模式指令来清除引用位或脏位。

9.8 存储器映射

Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容的过程叫做存储器映射。

映射对象:

-1.Unix文件系统中的普通文件

-2.匿名文件(由内核创建,全都是二进制0)

一、共享对象和私有对象

1.共享对象

共享对象对于所有把它映射到自己的虚拟存储器进程来说都是可见的

即使映射到多个共享区域,物理存储器中也只需要存放共享对象的一个拷贝。

2.私有对象

私有对象运用的技术:写时拷贝

在物理存储器中只保存有私有对象的一份拷贝

fork函数就是应用了写时拷贝技术

9.9动态存储器分配

分配器有两种:

        - 显式分配器
        - 隐式分配器

9.9.1malloc和free函数

P563图9-34

a:程序请求一个4字的块

b:程序请求一个5字的块

c:程序请求一个6字的块

d:程序释放b中分配的那个6字的块

e:程序请求一个2字的块

9.9.2为什么使用动态存储器分配

9.9.3分配器的要求和目标

显式分配器必须在一些相当严格的约束条件下工作:

处理任意请求序列

立即响应请求

只使用堆

不修改已分配的块

目标1:最大化吞吐率

目标2:最大化存储器利用率

9.9.4碎片

内部碎片

外部碎片

9.9.5实现问题

需要考虑下面几个问题:

空闲块组织

放置

分割

合并

9.9.6隐式空闲链表

9.9.7放置已分配的块

分配器执行搜素方式是由放置策略确定的。

首次适配

下一个适配

最佳适配

9.9.8分割空闲块

9.9.9获取额外的堆存储器

9.9.10合并空闲块

9.9.11带边界标记的合并

考虑当前分配器释放当前块时所有可能存在的情况:

(1)前面的块和后面的块都是已分配的

(2)前面的块是已分配的,后面的块是空闲的

(3)前面的块是空闲的,而后面的块是已分配的

(4)前面的和后面的块都是空闲的

9.9.12综合:实现一个简单的分配器

-1.一般分配器设计

-2.操作空闲链表的基本常数和宏

-3.创建初始空闲链表

-4.释放和合并块

-5.分配块

9.9.13显式空闲链表

一种方法是后进先出(LIFO)的顺序维护链表

另一种方法是按照地址顺序来维护链表

9.9.14分离的空闲链表

1.简单分离存储

2.分离适配

3.伙伴系统

9.10 垃圾收集

应用通过调用 malloc 和 free 来分配和释放堆块。应用要负责释放所有不再需要的已分配块。

垃圾收集器 (garbage collector) 是一种动态存储分配器,它自动释放程序不再需要的己分配 块。这些块称为垃圾 (garbage) 。

自动回收堆存储的过程叫做垃圾收集 (garbage collection)。在一个支持垃圾收集的系统中,应用显式分配堆块,但是从不显示地释放它们。在 C 程序的上下文中,应用调用 malloc,但是从不调用 free。反之,垃圾收集器定期识别垃圾块,并相应地调用 free,将这些块放回到空闲链表中。

教材学习中的问题和解决过程

Q:什么是虚拟存储器,作用是什么?

A:虚拟存储器:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。

特点:虚拟内存的作用 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。

虚拟存储器和虚拟光驱都是使用现有的硬件设备虚拟出的“软设备”,所不同的是,虚拟存储器只是利用现有的硬盘空间分出一份,做存储;而虚拟光驱则不同,它让操作系统认为它不是一个虚拟的设备,而是一个真实的设备,这样,在安装虚拟光驱的时候,就需要加载虚拟光驱的驱动,这个是有些最新的操作系统不完全兼容的,如WIN7,所以在使用虚拟光驱的时候要注意这点,这个不兼容有使系统崩溃的可能

代码托管

https://gitee.com/bestiisjava2017/yxc20155302/tree/master/src/信息安全系统设计基础20155302

学习总结

虚拟存储器是一个很重要的概念。学习的时候可以把它与虚拟器比较着学,比较它们之间有很多类似的地方,但很多概念又不一样,书上讲的内容有些与操作系统书上的有重叠的地方,但有的地方比操作系统的详细,操作系统侧重将缺页时使用的算法,而《深入理解》书里讲得比较全面,比如一些生成虚拟地址的,以及虚拟地址与物理地址之间相关联的过程。

时间: 2024-12-19 00:04:09

2017-2018-1 20155302 《信息安全系统设计基础》第11周学习总结的相关文章

20145309信息安全系统设计基础第11周学习总结后篇

进程 异常是允许操作系统提供进程的概念所需要的基本构造块. 进程:一个执行中的程序的实例. 上下文是由程序正确运行所需要的状态组成的,这个状态包括存放在存储器中的程序的代码和数据,它的栈.通用目的寄存器的内容.程序计数器.环境变量以及打开文件描述符的集合. 进程提供给应用程序的关键抽象: 一个独立的逻辑控制流,独占地使用处理器: 一个私有的地址空间,独占地使用存储器系统. 并发流:一个逻辑流的执行在时间上与另一个流重叠. 并发:多个流并发地执行的一般现象. 多任务:一个进程和其他进程轮流运行的概

20145309信息安全系统设计基础第11周学习总结前篇

教材学习内容总结 异常 异常:处理器中的变化(事件)触发从应用程序到异常处理程序的突发的控制转移 异常处理程序:在任何情况下,当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表进行一个间接过程调用,到一个专门处理这类时间的操作系统子程序 当 exception handler处理结束之后,会有三种结果: ·处理程序将控制返回给事件发生的时候正在执行的指令 ·处理程序将控制返回给如果没有发生异常将会执行的下一条指令 ·处理程序终止被终端的程序 所有的到Linux系统调用的参数都是通过寄存

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

20145216史婧瑶《信息安全系统设计基础》第九周学习总结

20145216史婧瑶<信息安全系统设计基础>第九周学习总结 教材内容总结 第十章 系统级I/O 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程. 第一节 Unix I/O 这一节涉及到操作系统的基本抽象之一--文件.也就是说,所有的I/O设备都被模型化为文件,而所有的输入输出都被当做对相应文件的读/写.相关的执行动作如下: 1.打开文件: 应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符 文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件.有

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

20145339《信息安全系统设计基础》第一周学习总结

20145339顿珠达杰<信息安全系统设计基础>第一周学习总结 ◆ Linux是一个操作系统.如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 物理机系统上可以通过使用[Ctrl]+[Alt]+[F1]-[F6]进行终端和图形界面切换,在线实验环境中按下[Ctrl]+[Alt]+[F7]来完成切换.普通意义上的 Shell 就是可以接受用户输入命令的程序,Unix/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的

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

2017-2018-1 20155228 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 常见的存储技术 RAM 随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的.静态 RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多.SRAM用来作为高速缓存存储 器,既可以在CPU芯片上,也可以在片下.DRAM用来作为主存以及图形系统的帧缓冲 区.典型地,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆 字节. SRAM将每

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

2017-2018-1 20155332 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 简单模型中,存储器是一个线性的字节数组.真实模型中,是一个具有不同容量,成本,访问时间的存储层次结构(存储器山) 程序的局部性很重要,对程序性能有很重要的影响. 计算机系统一个基本而持久的思想,如果你理解了系统是如何将数据在存储器层级结构中上下移动,你就可以编写程序,让数据存储在层次结构中较高的地方,从而CPU可以更快的访问到他们. 编写程序实现功能是最简单的,如何让编写的程序拥有最高的性能,例

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

2017-2018-1 20155227 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 第六章 随机访问存储器 随机访问存储器分为:静态RAM(SRAM)和动态RAM(DRAM),静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多. (1)静态RAM SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的. 属性:它可以无限制地保持在两个不同的电压配置或状态之一.其他任何状态都是不稳定的. 特点:由于SRAM的双稳态特性,只要有电,它就会永