Daily Archive: 1 11 月, 2011

Mac OS X / iOS 内存管理简要说明

原创文章,禁止转载,否则追究法律责任

最近身边用苹果的人越来越多,这是一件好事,我很高兴身边的朋友们都能用上世界上最先进的计算机和操作系统,但是大部分朋友都是从Windows过度过来的,从系统使用和原理理解上都有一些Windows的观念,最近很多朋友问我一个问题:“为什么我的系统一开机还没运行什么程序,空余内存就没多少了,我可是4GB内存啊,是不是有什么问题?”针对这一问题,特写此文,让大家理解基于UNIX的Mac OS X是如何管理内存的。
之前转载了一篇文章介绍Unix/Linux的内存管理,但是很多朋友说看不懂,那今天我就通俗的跟大家分享一下,Mac是如何管理内存的。

首先,我们要来了解一下,Mac OS X的内存四种状态,打开你的“应用程序-实用工具-系统监视器”程序,切换到“系统内存”标签,你会看到你的内存有联动活跃非活跃可用空间四种状态:

见下图:

联动是系统核心占用的,永远不会从系统物理[内存]种清除,

活跃表示这些[内存]数据正在使用种,或者刚被使用过,

非活跃表示这些[内存]中的数据是有效的,但是最近没有被使用,

可用空间表示这些[内存]中的数据是无效的,这些空间可以随时被程序使用。

可用空间的[内存]低于某个值(这个值是由你的物理[内存]大小决定的),系统则会按照以下顺序使用非活跃的资源。首先如果非活跃的数据最近被调用了,系统会把它们的状态改变成活跃,并接在原有活跃[内存]逻辑地址的后面, 如果非活跃的[内存]数据最近没有被使用过,但是曾经被更改过而还没有在硬盘的相应虚拟[内存]中做修改,系统会对相应硬盘的虚拟[内存]做修改,并把这部分物理[内存]释放为可用空间供程序使用。如果非活跃[内存]中得数据被在映射到硬盘后再没有被更改过,则直接释放成可用空间。最后如果活跃的[内存]一段时间没有被使用,会被暂时改变状态为非活跃

Read more

Unix/Linux 系统自动化管理之内存管理

Mac OS X是基于Unix底层的操作系统,内存管理机制于Unix相同,这篇文章有助于理解Unix内存管理方式

文章转载至:IBM DeveloperWorks 原文地址

内存是 Unix/Linux 内核所管理的最为重要的资源之一,内存管理是系统管理中非常重要也是最复杂的的部分。系统管理员需要掌握内存管理的基本工作原理以及使用合适的工具与策略监控内存的工作状态。 本文将分别阐述 AIX 和 Linux 系统中所涉及到的内存监控的方法,并对其中涉及到的内核内存管理的原理做初步的说明

AIX 内存管理与监控

内存管理概述

内存管理在不同的操作系统中会有不同的实现。AIX 系统使用 VMM(Virtual Memory Manager) 实现物理内存的管理,处理应用程序的内存分配请求与内存回收。

内存和交换空间一般都是通过页面来进行分配和管理,VMM 将所有的内存段划分为若干个页面,Power4 芯片支持 4K,64K,和 16M 大小的虚拟内存页, Power5 芯片支持 4K,64K,16M,16G 大小的虚拟内存页,每个页面的缺省大小是 4KB。虚拟内存页面越大,对需要大内存块的应用程序可以起到优化作用,主要是提高 TLB 的命中率。

当我们执行应用程序的时候,内存中的页面会被逐渐的占用,这里我们设计两个重要的参数: Minfree( 最小空闲页面的大小 ) 和 Maxfree( 最大空闲页面的大小 )。当空闲的内存达到 Minfree 大小的时候, VMM 的调页算法将被唤醒,将内存中的页面转移到交换空间中, 知道空闲内存达到 Maxfree,才停止调页。

上面主要是对 AIX 内存管理中所涉及到的的基本概念做了简单的介绍说明,对于任何与内存相关的操作,了解这些概念都是非常必要的。

系统管理员在进行正确的优化或者问题发生之前,必须首先监视系统,使用合适的工具捕获基准数据,并且知道如何进行分析工作。下面笔者将介绍 AIX 系统所提供的工具来监控系统内存的使用情况。

内存调整命令

与其他的子系统相比,内存调整更为困难,但同时收到的效果往往更加显著,特别是在那些尚未对各种内存参数进行优化的运行环境中。系统管理员可以通过 vmo 命令动态的调整内存参数,进行内存性能优化方面的各种实践。

Read more