计算机系统(八)虚拟存储器(虚拟内存地址空间)
2015-08-13 17:15
555 查看
虚拟存储器:是一个抽象概念,抽象内存地址。它为每个process提供了一个假象,即每个process都在独占的使用主存。 每个process 看到的是一致的存储器,称为虚拟地址空间。 linux/unix process的虚拟地址空间;
地址空间的最上面的区域是位OS的内核代码和数据保留的,这对所有的process都是一样的。
底部区域存放 用户process定义的代码和数据。 在linux/unix中地址空间的增长是向上的。
每个process看到的虚拟地址空间 由大量准确定义的区构成。每个区都有专门的功能。
A: 程序代码和数据: 对于所有的进程来说,代码是从同一固定地址开始,紧挨着的是和C全局变量 相对应的数据位置。 代码和数据区 是直接按照可执行文件的内容初始化的,就是hello(链接 + 加载)
B: 堆:代码和数据区后紧随着的是运行时堆。代码和数据区是process一开始运行时就被规定了大小, 由此不同,当调用如malloc 和 free这样的C 标准库函数时,堆可以在运行时动态地扩展和收缩。
C: 共享库/动态库 :大约在地址空间的中间部分是一块用来存放 像C标准库和数学库 这样共享库的代码和数据的 区域。 共享库概念非常强大,相当难懂
D:栈(用户栈)位于用户虚拟地址空间顶部,这块区域是提供给 编译器用来实现函数调用。和堆一样,用户栈在程序执行期间可以动态的扩展和收缩,特别是每次我们调用一个函数时,栈就会增长;从一个函数返回时,栈就会收缩。
E:内核虚拟存储器: 内核总是驻留在内存中的,是OS的一部分。 地址空间顶部的区域是为内核保留的,不允许应用程序读、写这个区域的内容或者直接调用哪个内核代码定义的函数。
总结:虚拟存储器的运作需要hardware和OS之间精密复杂的交互,包括处理器生成的每个地址的硬件翻译。
基本思想:把一个process 虚拟存储器的内容存储在磁盘上,然后用主存作为磁盘的高速缓存
地址空间的最上面的区域是位OS的内核代码和数据保留的,这对所有的process都是一样的。
底部区域存放 用户process定义的代码和数据。 在linux/unix中地址空间的增长是向上的。
每个process看到的虚拟地址空间 由大量准确定义的区构成。每个区都有专门的功能。
A: 程序代码和数据: 对于所有的进程来说,代码是从同一固定地址开始,紧挨着的是和C全局变量 相对应的数据位置。 代码和数据区 是直接按照可执行文件的内容初始化的,就是hello(链接 + 加载)
B: 堆:代码和数据区后紧随着的是运行时堆。代码和数据区是process一开始运行时就被规定了大小, 由此不同,当调用如malloc 和 free这样的C 标准库函数时,堆可以在运行时动态地扩展和收缩。
C: 共享库/动态库 :大约在地址空间的中间部分是一块用来存放 像C标准库和数学库 这样共享库的代码和数据的 区域。 共享库概念非常强大,相当难懂
D:栈(用户栈)位于用户虚拟地址空间顶部,这块区域是提供给 编译器用来实现函数调用。和堆一样,用户栈在程序执行期间可以动态的扩展和收缩,特别是每次我们调用一个函数时,栈就会增长;从一个函数返回时,栈就会收缩。
E:内核虚拟存储器: 内核总是驻留在内存中的,是OS的一部分。 地址空间顶部的区域是为内核保留的,不允许应用程序读、写这个区域的内容或者直接调用哪个内核代码定义的函数。
总结:虚拟存储器的运作需要hardware和OS之间精密复杂的交互,包括处理器生成的每个地址的硬件翻译。
基本思想:把一个process 虚拟存储器的内容存储在磁盘上,然后用主存作为磁盘的高速缓存
相关文章推荐
- 计算机系统(七) 操作系统之process /thread
- 拓扑排序之NOIP2003神经网络
- HttpUtil
- 计算机系统(六)OS 管理 硬件
- HttpURLConnection请求图片
- 计算机系统 (五)存储设备层次结构
- 计算机系统(四)运行hello
- 数据结构实验之栈四:括号匹配
- 备忘----创建套接字进行地址和端口进行网络序转换时使用ipv4和ipv6都通用的函数
- python下的复杂网络编程包networkx、matplotlib、numpy安装及报错解决方案
- 计算机系统(三)CPU读并解释存储在存储器中的指令
- 网络篇----NSURLConnection断点下载
- 计算机系统(二)程序被其他程序翻译成不同的格式 Compiler
- 使用HttpClientdopost编写 客户端、服务器与数据库Demo
- 数据结构实验之栈三:后缀式求值
- 计算机系统(一)信息就是(位+上下文)
- TCP与UDP区别
- 数据结构
- 基于TCP/IP协议的网络编程
- 【Ex2013】【跨站点DAG】启用DAC模式,防止数据库级别上出现网络分区