Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week7: 虚拟内存 #7

Open
OhBonsai opened this issue Nov 8, 2020 · 0 comments
Open

Week7: 虚拟内存 #7

OhBonsai opened this issue Nov 8, 2020 · 0 comments
Labels
CSAPP 深入理解计算机系统

Comments

@OhBonsai
Copy link
Owner

OhBonsai commented Nov 8, 2020

虚拟内存

虚拟内存是硬件内存,硬件地址翻译,主存,磁盘文件和内核文件的完美交互.他为每个进程提供了一个大的,一致的和私有的地址空间.通过一个很清晰的机制,虚拟
内存提供了三个重要的能力:

  • 它将主存看成一个存储在磁盘上的地址空间的高速缓存,在主存只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它搞笑的使用了主存- 它为每个进程提供一致的地址控件,从而简化内存管理
  • 它保护了每个进程的地址空间不被其他进程破坏

物理和虚拟寻址

有时候直接寻址,有时候虚拟寻址,有个MMU的东西

地址空间

线性地址空间(linear address space).地址空间的概念非常重要.它非常清楚的区分了数据对象(数据对象)和它们的属性(地址).

虚拟内存作为缓存的工具

磁盘上的数据被分割成块,这些块作为磁盘和主存之间的传输单元.VM系统通过将虚拟内存分割为虚拟页.在任意时刻,虚拟页面的集合都分为三个不相交的子集

  • 未分配的: VM系统还未分配的页
  • 缓存的: 当前已缓存在物理内存中的已分配的页
  • 未缓存的: 未缓存在物理内存中的已分配的页

基于两个原因

  • 磁盘比DRAM慢100 000多被, DRAM比SRAM慢10被
  • 磁盘从一个扇区读道第一个字节,读取连续字节要慢大约100 000多倍.
    所以每个虚拟页往往都很大4KB-2MB

面试题目

  • redis rdbdump要消耗多少内存
    rdbdump使用的fork。由于linux copy on write的机制,仅需要拷贝进程的状态,这里消耗最大的其实是页表的内存,一个地址位(64)可以表示4kb的内存。
@OhBonsai OhBonsai added the CSAPP 深入理解计算机系统 label Nov 8, 2020
@OhBonsai OhBonsai added this to the 读书会:CSAPP milestone Nov 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CSAPP 深入理解计算机系统
Projects
None yet
Development

No branches or pull requests

1 participant