国产网站开发工具公司,软件定做定制开发,做特产的网站,网站里面嵌入的地图是怎么做的第十五讲 基础篇#xff1a;Linux内存是怎么工作的(2020.6.8)这一讲相关的内容正好之前看csapp的时候总结了一下#xff0c;可以直接贴出来作为总结了。Linux的内存工作原理#xff0c;这又是一个特别大的话题。一切向着尽量利用物理资源的方向在发展#xff0c;在没有虚拟…第十五讲 基础篇Linux内存是怎么工作的(2020.6.8)这一讲相关的内容正好之前看csapp的时候总结了一下可以直接贴出来作为总结了。Linux的内存工作原理这又是一个特别大的话题。一切向着尽量利用物理资源的方向在发展在没有虚拟内存的世界里所以的进程都能看到同一个物理内存在这种模式下如果有多个进程那么这个内存管理就很复杂了(在DSP嵌入时系统中可能总共就一个程序这时候完全可以直接使用物理内存)。针对Unix这种多进程的系统后来就有了虚拟内存的概念。虚拟内存 是硬件异常硬件地址翻译主存磁盘和内核软件的完美交互他为没有进程提供一个很大的一致的地址空间。它将内存看成一个存储在磁盘上很大的连续的空间在主存中只保存活动区域并根据需要在磁盘和主存之间来回传递数据通过这种方式很好的使用了内存。为每个进程提供了一致的地址空间从而简化了内存管理每个进程的地址空间是独立的避免了进程之间在地址空间上的破坏物理地址和虚拟地址物理寻址(嵌入式设备/DSP设备):虚拟寻址系统(现代处理器):虚拟内存作为磁盘的高速缓存工具DRAM 作为磁盘的缓存通过虚拟内存来管理磁盘上的那个块缓存到内存中来。VP(virtual page)将虚拟内存分割成大小固定的块PP(physical page)物理页(叶帧)VP----PP 关系通过页表(page table) 来判定一个虚拟页是否缓存在DRAM中。如果命中就指向一个物理页中 如果不命中系统必须判断这个虚拟页存放在磁盘的那个位置在物理内存中选择牺牲一个页将虚拟页从磁盘复制到DRAM中替换掉牺牲页。页命中:缺页:虚拟内存作为内存管理工具虚拟内存除了作为磁盘的高速缓存之外还作为Linux的内存管理工具这样Linux中的每个进程都有相同的的地址空间格式两个进程通过将虚拟页面映射到相同的物理页帧上是实现了共享内存。虚拟内存作为内存保护的工具地址翻译多级页表:linux 内存系统内存分配与回收标准库中的malloc有两种实现方式:小块内存(小于128k) 使用sbrk分配(释放并不返还给系统容易造成系统碎片(详细见参考2))大块内存(大于128k) 使用mmap内存映射的方式分配(每次unmap之后都会返还给系统所以每次mallo都会导致缺页异常内核的管理负担增大)系统回收内存三种方式LRU回收不常访问的内存把不常访问的内存通过交换分区直接写入磁盘OOM参考资料