# High memory

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/High_memory
> Markdown URL: https://mediated.wiki/source/High_memory.md
> Source: https://en.wikipedia.org/wiki/High_memory
> Source revision: 1066530228
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Part of physical memory in a computer

Not to be confused with [High Memory Area](/source/High_Memory_Area).

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "High memory" – news · newspapers · books · scholar · JSTOR (October 2012) (Learn how and when to remove this message)

**High memory** is the part of [physical memory](/source/Computer_memory) in a [computer](/source/Computer) which is not directly mapped by the [page tables](/source/Page_table) of its [operating system](/source/Operating_system) [kernel](/source/Kernel_(operating_system)). The phrase is also sometimes used as shorthand for the [High Memory Area](/source/High_Memory_Area), which is a different concept entirely.

Some operating system kernels, such as [Linux](/source/Linux), divide their [virtual address space](/source/Virtual_address_space) into two regions, devoting the larger to [user space](/source/User_space) and the smaller to the kernel. In current [32-bit](/source/32-bit) [x86](/source/X86) computers, this commonly (although does not have to, as this is a configurable option) takes the form of a 3GB/1GB split of the 4 GB address space, so kernel virtual addresses start at 0xC0000000 and go to 0xFFFFFFFF. The lower 896 MB, from 0xC0000000 to 0xF7FFFFFF, is directly mapped to the kernel physical address space, and the remaining 128 MB, from 0xF8000000 to 0xFFFFFFFF, is used on demand by the kernel to be mapped to high memory. When in [user mode](/source/User_mode), translations are only effective for the first region, thus protecting the kernel from user [programs](/source/Computer_program), but when in [kernel mode](/source/Kernel_mode), translations are effective for both regions, thus giving the kernel an easy way to refer to the [buffers](/source/Data_buffer) of processes—it just uses the process' own mappings.[1]

However, if the kernel needs to refer to physical memory for which a userspace translation has not already been provided, it has only 1 GB (for example) of virtual memory to use. On computers with a lot of physical memory, this can mean that there exists memory that the kernel cannot refer to directly—this is called high memory. When the kernel wishes to address high memory, it creates a mapping on the fly and destroys the mapping when done, which incurs a performance penalty.

## See also

- [Physical Address Extension](/source/Physical_Address_Extension) (PAE)

## References

1. **[^](#cite_ref-1)** [Virtual Memory I: the problem](https://lwn.net/Articles/75174/)

## External links

- [High Memory](http://linux-mm.org/HighMemory)

- [Virtual Memory I: the problem](https://lwn.net/Articles/75174/)

---
Adapted from the Wikipedia article [High memory](https://en.wikipedia.org/wiki/High_memory) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/High_memory?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
