CSAPP--虚拟存储器

虚拟存储器

  虚拟存储器(VM)是对主存的一种抽象概念。是硬件一场,硬件地址翻译,贮存,磁盘文件和内核软件的完美交互。他为每个进程提供了一个大的,一致的和私有的地址空间

  • 它将贮存堪称一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动的区域,并根据需要在磁盘和主存之间来回传送数据,防止其它进程没有主存空间可用。
  • 它为每个进程提供了一致的地址空间,从而简化了存储器的管理。
  • 它保护了每个进程的地址空间不被其他进程破坏。

物理寻址和虚拟寻址

  计算机系统的主存由若干字节组成,每个字节有唯一的物理地址。在数字信号处理器,嵌入式微控制器以及Cray超级计算机仍使用这种物理存执。现代处理器使用虚拟寻址的寻址方式。

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

  虚拟存储器被组织为一个存储在磁盘上的N个连续的字节大小的单元数组,每个数组都有唯一的虚拟地址,磁盘上数组的内容被缓存在贮存中。VM系统将虚拟存储器分割为虚拟页,物理存储器分割为物理页。

  虚拟页面的三个不相交子集:

  • 未分配的:VM系统还没有分配的页,不占磁盘空间。
  • 缓存的:当前缓存在物理存储器中已分配页。
  • 未缓存的:没有缓存在物理存储器中的已分配页。

页表:

  用来判断一个虚拟页是否放在DRAM中的某个地方。利用页表的数据结构,将虚拟页映射到物理页,每次地址翻译硬件将一个虚拟地址转换为物理地址时都会读取页表,操作系统负责维护页表的内容。(PTE表示虚拟地址空间中每个页在页表的固定偏移量)

  

  

页命中:

  表示但CPU读取VPn中的一个字时,VPn被缓存在DRAM中,地址翻译应将将虚拟地址作为一个索引来来定位到PTEn,并读取。

缺页:

  缓存不命中。调用t缺页异常处理程序,选择一个牺牲页PPt,如果VPt已经修改则拷贝回磁盘,然后将VPn调入到PPt,并修改页表条目。

分配页:

  操作系统分配一个新的虚拟存储器页,在磁盘上创建空间并更新PTEn,使他指向磁盘上这个新创建的页面。从而分配VPn。

局部性:

  在任意时刻,程序往往在一个较小的活动页面集合上工作(工作集),在初始开销是,将工作集页面调度到存储器中,接下来对工作集的引用将导致命中,而不会产生额外的磁盘流量。

时间: 2024-08-11 01:35:07

CSAPP--虚拟存储器的相关文章

[CSAPP笔记][第九章虚拟存储器][十分核心]

9.虚拟存储器 为了更加有效地管理存储器且少出错,现代系统提供了对主存的抽象概念,叫做虚拟存储器(VM). 虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互. 为每个进程提供一个大的,一致的和 私有的地址空间. 提供了3个重要能力. 将主存看成磁盘地址空间的高速缓存. 只保留了活动区域,并根据需要在磁盘和主存间来回传送数据,高效使用主存. 为每个进程提供一致的地址空间 简化存储器管理 保护了每个进程的地址空间不被其他进程破坏. 程序员为什么要理解它? 虚拟存储器是中心的.

读完了csapp(中文名:深入理解计算机系统)

上个星期最终把csapp看完了. 我买的是中文版的,由于除了貌似评价不错以外,由于涉及到些自己不了解的底层东西,怕是看英文会云里雾里.如今看来,大概不能算是个长处,可是的确可以加快我的看书速度,否则一星期还真不大可能把这书搞定. 对csapp慕名已久,主要在于据说这本书尽量的做到相对实用,不去讲那些和实际编程没多大关系的计算机原理(毕竟是著名计算机院校里面最偏软件的cmu的作品),重点很得当,像我这样的没有本科科班出生又不想去死读些不知道以后有没实用的东西的人来说,最是适合了.感兴趣的东西就行再

CSAPP Tiny web server源代码分析及搭建执行

1. Web基础 webclient和server之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议). 一个webclient(即浏览器)打开一个到server的因特网连接,而且请求某些内容.server响应所请求的内容,然后关闭连接.浏览器读取这些内容.并把它显示在屏幕上. 对于webclient和server而言.内容是与一个MIME类型相关的字节序列. 常见的MIME类型: MIME类型 描写叙述 text/html HTML页面 text/plain 无格式文本 ima

CSAPP Tiny web 服务器源码分析及搭建运行

1. Web基础 web客户端和服务器之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议).一个web客户端(即浏览器)打开一个到服务器的因特网连接,并且请求某些内容.服务器响应所请求的内容,然后关闭连接.浏览器读取这些内容,并把它显示在屏幕上. 对于web客户端和服务器而言,内容是与一个MIME类型相关的字节序列.常见的MIME类型: MIME类型 描述 text/html HTML页面 text/plain 无格式文本 image/gif GIF格式编码的二进制图像 imag

OSOS存储器管理(三) 虚拟存储器

基本概念与实现 1)局部性原理 在一段时间内,运行的作业程序仅访问(涉及到)一部分作业代码,即不会涉及整个地址空间.即在一段时间间隔内,仅装入一部分代码,作业照样能正常运行 2)虚拟存储器的引入 作业(进程)运行时,仅装入其代码的一部分到物理内存,待需要时再装入其余部分,同时还可将不再运行的部分调出物理内存.变相地扩充了内存容量,即实现了虚拟存储器. 虚拟内存 ①虚拟内存将内存抽象成一个巨大的.统一的存储数组,进而将用户看到的逻辑内存与物理内存分开 ②只要部分程序需要放在内存中就能使程序执行 ③

操作系统之虚拟存储器

虚拟存储器概述 1. 常规存储器管理方式的特征和局部性原理 常规存储器管理方式的特征: 一次性.要求将作业全部装入内存才能运行,当程序大于内存时,作业无法运行. 驻留性.装入内存中用的作业一直驻留内存,直到运行结束(处于等待状态的进程也占用内存). 局部性原理: 时间局限性.如果程序中的某条指令一旦执行, 则不久以后该指令可能再次执行:如果某数据被访问过, 则不久以后该数据可能再次被访问.产生时间局限性的典型原因,是由于在程序中存在着大量的循环操作. 空间局限性.一旦程序访问了某个存储单元,在不

[CSAPP]并发与并行

学了这么久的计算机,并发与并行的概念理解的一直不够透彻.考研复习那会儿,以为自己懂了,然而直到看了CSAPP才算是真正明白了这俩个概念. 并发(concurrency) 流X和流Y并发运行是指,流X在流Y开始之后结束之前开始运行,或者流Y在流X开始之后结束之前开始运行. 如图,进程A与进程B并发,进程A与进程C并发,进程B与进程C非并发. 并行(parallel) 并行是并发的真子集. 并发有可能发生在单处理器上,也可能在多处理器上.流A和流B并行,则流A和流B并发地运行在不同的处理器上. 来自

关于CSAPP lab3中压栈问题引发的思考

之前有个问题也没特别注意,今天回来看邮件发现有同学和我讨论关于函数调用压栈的问题. 废话少说,直接上对比测试图: 图一:CSAPP lab3的getbuf反汇编结果截图 图二: 我测试,节选了部分的getbuf实现,然后很简单的去测试getbuf的反汇编结果,反汇编结果如下图 我究竟是怎么测试的: unsigned long long getbuf() { char buf[36]; volatile char* variable_length; int i; unsigned long lon

《深入理解计算机系统》关于csapp.h和csapp.c的编译问题

编译步骤如下: 1.我的当前工作目录为/home/sxh2/clinux,目录下有3个文件inet_aton.c csapp.h csapp.c. 2.编译csapp.c文件,命令为gcc -c csapp.c,生成目标文件csapp.o. 3.编译inet_aton.c文件,命令为gcc -c inet_aton.c,生成目标文件inet_aton.o. 4.链接目标文件csapp.o.inet_aton.o(由于csapp.c文件中有关于线程中部分,gcc编译的时候必须带 -lpthread

CSAPP读书随笔之一:为什么汇编器会将call指令中的引用的初始值设置为-4

CSAPP,即<深入理解计算机系统:程序员视角>第三版,是一本好书,但读起来确需要具备相当的基本功.而且,有的表述(中译文)还不太直白. 比如,第463页提到,(对于32位系统)为什么汇编器会将call指令中的引用的初始值设置为-4.其后解释语焉不详.结合文中对代码计算公式的展开: *refptr = (unsigned) (ADDR(r.symbol) + *refptr - refaddr) = (unsigned) (0x80483c8        + (-4)     - 0x804