赞
踩
VIRT
(虚拟内存)、RES
(常驻内存)和SHR
(共享内存)VIRT
(虚拟内存)malloc
、new
分配的堆空间和分配的栈空间等;10MB
的内存,但实际只使用了1MB
,那么它会增长10MB
,而不是实际的1MB
使用量。VIRT
= SWAP
(交换分区) + RES
(常驻内存)RES
(常驻内存)malloc
、new
分配的堆空间和分配的栈空间,但不包括swap out
量;10MB
的内存,实际使用1MB
,它只增长1MB
,与VIRT
相反;RES
= CODE
+ DATA
SHR
(共享内存)RES
– SHR
;swap out
后,它将会降下来。答:操作系统的内存管理主要负责内存的分配与回收(malloc
函数:申请内存,free
函数:释放内存),另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情。
答:最主要的就是提高内存的利用率,所谓的提高内存利用率,就是尽可能的在内存中多存储进程,这就涉及到为进程分配内存空间了。分配的方式主要是有两种——连续分配和离散分配。
答:内存管理单元(MMU
)管理着地址空间和物理内存的转换,其中的页表(Page table
)存储着页(程序地址空间)和页框(物理内存空间)的映射表。一个虚拟地址分成两个部分,一部分存储页面号,一部分存储偏移量。
答:内存管理机制可以简单分为连续分配管理方式和非连续分配管理方式这两种。连续分配管理方式是指为一个用户程序分配一个连续的内存空间,常见的如 块式管理 。同样地,非连续分配管理方式允许一个程序使用的内存分布在离散或者说不相邻的内存中,常见的如页式管理 和 段式管理。
MAIN
、子程序段 X
、数据段 D
及栈段 S
等。 段式管理通过段表对应逻辑地址和物理地址。答:把内存空间划分为大小相等且固定的块,作为主存的基本单位。因为程序数据存储在不同的页面中,而页面又离散的分布在内存中,因此需要一个页表来记录映射关系,以实现从页号到物理块号的映射。
访问分页系统中内存数据需要两次的内存访问 (一次是从内存中访问页表,从中找到指定的物理块号,加上页内偏移得到实际物理地址;第二次就是根据第一次得到的物理地址访问内存取出数据)。
答:分页是为了提高内存利用率,而分段是为了满足程序员在编写代码的时候的一些逻辑需求(比如数据共享,数据保护,动态链接等)。
分段内存管理当中,地址是二维的,一维是段号,二维是段内地址;其中每个段的长度是不一样的,而且每个段内部都是从0开始编址的。由于分段管理中,每个段内部是连续内存分配,但是段和段之间是离散分配的,因此也存在一个逻辑地址到物理地址的映射关系,相应的就是段表机制。
答:为了解决虚拟地址到物理地址的转换速度,操作系统在 页表方案(是一种特殊的数据结构,记录着页面和页框的对应关系)的基础之上引入了 快表 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache
),其中的内容是页表的一部分或者全部内容。作为页表的 Cache
,它的作用与页表相似,但是提高了访问速率。由于采用页表做地址转换,读写内存数据时 CPU
要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度。
答:引入多级页表的主要目的是为了避免把全部页表一直放在内存中占用过多空间,特别是那些根本就不需要的页表就不需要保留在内存中。多级页表属于时间换空间的典型场景。
为了提高内存的空间性能,提出了多级页表的概念;但是提到空间性能是以浪费时间性能为基础的,因此为了补充损失的时间性能,提出了快表(即
TLB
)的概念。 不论是快表还是多级页表实际上都利用到了程序的局部性原理,局部性原理在后面的虚拟内存这部分会介绍到。
答:我们编程一般只有可能和逻辑地址打交道,比如在 C 语言中,指针里面存储的数值就可以理解成为内存里的一个地址,这个地址也就是我们说的逻辑地址,逻辑地址由操作系统决定。物理地址指的是真实物理内存中地址,更具体一点来说就是内存地址寄存器中的地址。物理地址是内存单元真正的地址。
CPU
寻址答:现代处理器使用的是一种称为 虚拟寻址(Virtual Addressing
) 的寻址方式。使用虚拟寻址,CPU
需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。 实际上完成虚拟地址转换为物理地址转换的硬件是 CPU
中含有一个被称为 内存管理单元(Memory Management Unit, MMU
) 的硬件。如下图所示:
答:没有虚拟地址空间的时候,程序都是直接访问和操作的都是物理内存会存在以下的问题:
QQ
音乐都不行。为什么呢?举个简单的例子:微信在运行的时候给内存地址 1xxx
赋值后,QQ
音乐也同样给内存地址 1xxx
赋值,那么 QQ
音乐对内存的赋值就会覆盖微信之前所赋的值,这就造成了微信这个程序就会崩溃。如果直接把物理地址暴露出来的话会带来严重问题,比如可能对操作系统造成伤害以及给同时运行多个程序造成困难。
4 KB
)保存到磁盘文件。数据或代码页会根据需要在物理内存与磁盘之间移动。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。