寻址空间
寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位 ,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的原因 ,再多的话CPU就找不到了。
页式存储管理
内存的划分:
把整个内存储器划分成大小相等的许多分区,每个分区称为“块” 。比如把内存储器划分成n个分区,编号为0,1,2,…,n-1。块是存储分配的单位。
页:
操作系统按照内存块的尺寸对用户地址空间进行划分,每一个分区被称为“页”,编号从0开始。
页表:
系统为每个进程建立一个页表,页表给出逻辑页号和具体内存块号相应的关系。
逻辑地址转换为物理地址
从逻辑地址算出页号和页内偏移量,从页表中找出页号对应块号,物理地址:块号×页大小+偏移量。
页式存储的优点:
没有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。程序占用空间可动态增长。即随着程序运行而动态生成的数据增多,地址空间可相应增长。
页式存储的缺点:
作业虽然不占据连续的存储区,但每次仍要求一次全部进入内存。因此,如果作业很大,其存储需求大于内存,那么还是存在小内存不能运行大作业的问题。存在内碎片:平均每一个作业要浪费半页大小的存储块。不能实现真正意义上的共享,内存访问速度慢(取一次数据或指令至少要访问内存两次以上)。
段式存储管理
类似于页式存储,逻辑地址被分为两部分:段号S和段内位移d。 物理地址=段始址+d。
页式存储的区别
段页式存储管理
1内存划分成大小相等的块。
2用户的作业地址空间按分段来管理(这与段式管理类同),系统在内部将该空间中的每一段按内存块的尺寸划分成固定大小的页(这与分页式管理类同)。
在这样的管理模式下,任何一个作业有一个段表,作业中的每个段有一个页表。
段表:记录了每一段对应页表在内存中的始址和页表长度。
页表:记录了逻辑页号与内存块号的对应关系(每一段有一个,一个程序可能有多个页表)。
存储管理的页面置换算法
详见:http://blog.youkuaiyun.com/evsqiezi/article/details/8039492。
DMA直接存储方式
在内存与外部设备之间开辟专用数据通道,实现外部设备与内存之间数据的直接传送,而不通过CPU.
优点是:传送效率高,适用于高速传送大批量数据
缺点是:电路结构复杂,硬件开销较大。
为实现这种传送方式而设计的专用控制芯片称为DMA控制器(工作原理见下图)
虚拟内存
电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入分页文件可释放RAM,以便完成工作。 一般而言,计算机的RAM容量越大,程序运行得越快。若计算机的速率由于RAM可用空间匮乏而减缓,则可尝试通过增加虚拟内存来进行补偿。但是,计算机从RAM读取数据的速率要比从硬盘读取数据的速率快,因而扩增RAM容量(可加内存条)是最佳选择。
存储器使用情况
winxp内存使用情况的查询:
内存使用
当前程序占用的内存量
高峰内存使用
该程序占用内存达到的最高量
内存增量
该程序占用内存增加的量,瞬时值,加到内存使用上后就清0,如果内存增量一直有值就是有问题的
页面错误
页面错误指当软件试图读取或写入标记为“不存在”的虚拟内存位置时发生的中断。页面错误记录了一个进程必须从硬盘上恢复的次数。
页面缓冲池
已指派给进程的,以及可以分页的系统分配的虚拟内存。页面调度指将程序工作内存中很少使用的部分从 RAM 转移到另一个存储媒体(通常为硬盘)。
非页面缓冲池
这是一个包含各种系统虚拟地址范围的内存池,这些地址范围可以保证始终驻留在物理内存中,因此从任何地址空间均可进行访问,而不会产生页面输入/输出 (I/O)。非页面缓冲池在系统初始化期间创建,内核模式组件用它来分配系统内存。永远不会页入磁盘的操作系统内存.
页面缓冲池和非页面缓冲池
在用户空间中,所有物理内存页面都可以根据需要进行分页至磁盘文件。在系统空间中,某些物理页面可以分页,而其他页面不能。系统空间具有用于动态分配内存的两个区域:页面缓冲池和非页面缓冲池。在 64 位 Windows 中,页面缓冲池为 128 GB 的虚拟地址,范围从 0xFFFFA800'00000000 至 0xFFFFA81F'FFFFFFFF。非页面缓冲池为 128 GB 的虚拟地址,范围从0xFFFFAC00'00000000 至 0xFFFFAC1F'FFFFFFFF。在页面缓存池中分配的内存可以根据需要分页至磁盘文件。在非页面缓冲池中分配的内存永远无法分页至磁盘文件。