Wired Memory vs. Active Memory in OS X
Solution 1:
Gentle reminder: To provide a better answer for the rest of the community, please don’t say something like “Do not talk about the four types of memory”. Even if you know it well, there may be a thousand and one citizens of the Internet arriving here hoping for a collateral answer. :)
“Paging” is the accurate term for the following action. “Swapping” is used colloquially for “paging”, quite interchangeably these days, though. “Swapping” originally referred to the moving of a program’s memory space completely onto “secondary storage” (as opposed to “main storage”, which is an archaic term for... RAM, in a way). The boundary between paging and swapping is considerably blurred by Windows and Unix systems calling the paging space swaps.
And then, one must know about paging in order to understand the concept of active, wired and inactive memory. Paging means that the memory page is moved out of random access memory (i.e., the RAM) and onto the hard disk or other secondary storage device. This allows the running application to request more memory than the total amount of system RAM available.
Note that although paging out means a huge performance penalty to access that particular bit of information again, paging can occur in two different cases: (Quoting myself: Disadvantages of not having a swap partition)
- When there is not ENOUGH memory for all applications – in the case where this happens to a system without swap space, it will cause a failure to allocate memory for new applications requesting new memory pages – and this usually results in termination of the program.
- When some memory pages (memory is divided into “pages”) is used some time ago, but is no longer used now, it would be transferred to the swap file and the remaining memory can be used to do something else which could be more useful (e.g., even caching!) – when this happens in a system without swap space, this will result in idle pages staying in memory. This is nothing too serious though, as we have a pretty large amount of memory these days.
The four types of memory are classified as follows:
Wired: Used by an application that claims that the chunk of allocated memory must stay physically in RAM, and not be swapped onto disk, no matter whether it is recently used or not, i.e., another application may NOT request that particular chunk of memory. Examples are part of the memory utilized by the system, and that used by virtual machines.
Active & Inactive: These are memory used usually by user-mode applications, in which they are swappable onto disks. “Active” means that it was recently used, and “Inactive” means that it was not recently used. The operating system thus would swap out inactive pages first, and then active pages later if necessary.
Free memory: Memory that isn’t used. This is used for other purposes such as caching of the hard disk.
If your question is, “In a dire situation where memory is inadequate, in what order would the system try to allocate memory to a new application?”, then the sequence would be to allocate
free memory → inactive memory → active memory
In a sense, even recently used memory could be paged. The “wired” part is what would not be paged out at all costs.
In modern systems, though, it is rather unlikely that active memory gets paged out as we have plenty of RAM available.