


Linux Memory Management: Understanding Page Tables, Swapping, and Memory Allocation
Mar 22, 2025 am 09:02 AMIntroduction
Memory management is a key aspect in modern operating systems, ensuring efficient allocation and release of system memory. As a powerful and widely used operating system, Linux uses sophisticated techniques to efficiently manage memory. Understanding key concepts such as page tables, swaps, and memory allocation is critical to system administrators, developers, and anyone using Linux at the bottom.
This article discusses Linux memory management in depth, explores the complexity of page tables, the role of exchange, and different memory allocation mechanisms. After reading, readers will gain insight into how Linux handles memory and how to optimize memory for better performance.
Understand Linux page tables
What is virtual memory? Like most modern operating systems, Linux implements virtual memory, providing the process with an illusion of a huge continuous memory space. Virtual memory is able to multitask efficiently, isolate processes, and access more memory than physically available memory. The core mechanism of virtual memory is the page table , which maps virtual addresses to physical memory locations.
How page tables Work Page tables are data structures used by the Linux kernel to convert virtual addresses into physical addresses. Since memory is managed in fixed-size blocks called pages (usually 4KB in size), each process maintains a page table that tracks which virtual pages correspond to which physical pages.
Multi-level page table
Due to the large address space in modern computing (for example, a 64-bit architecture), single-level page tables are inefficient and consume too much memory. Therefore, Linux uses a hierarchical multi-level page table method:
- Single-level page table (used in old 32-bit systems with a small amount of memory)
- Two-level page table (improving efficiency by breaking page tables into smaller chunks)
- Level 3 page table (for better scalability in some architectures)
- Level 4 page table (standard in modern 64-bit Linux systems that break the address into smaller parts)
Each level helps to find the next part of the page table until the last entry, which contains the actual physical address.
Page table entry (PTE) and its components* Page table entry (PTE)**Contains basic information, such as:
- Physical page frame number.
- Access control bit (read/write/execute permission).
- A bit exists (indicates whether the page is in RAM or has been swapped to disk).
- Dirty (indicates whether the page has been modified).
- Reference bits (for page permutation algorithm).
Performance Note: Convert Bypass Buffer (TLB) Because it is slow to traverse multi-level page tables every memory access, modern CPUs use hardware caches called Convert Bypass Buffer (TLB) . TLB stores recent virtual to physical address translations, greatly improving performance by reducing the number of memory accesses required.
Swap in Linux: Extend memory beyond physical limitations
What is exchange? Swap is a mechanism in which Linux moves infrequently used memory pages from RAM to disk (swap space) when memory is insufficient. This process allows the system to handle workloads that exceed the available physical memory.
How swap works Linux reserves dedicated swap space, which can be:
- Swap partition (a separate disk partition dedicated to swap).
- Swap files (files on file systems used as swap space).
When the process requires more memory than available, the kernel uses the page permutation algorithm to decide which pages to swap out.
Page Permutation Algorithm Linux uses different algorithms to decide which pages to swap out:
- Least recently used (LRU) : The longest unused page is first exchanged.
- Recently Not Used (NRU) : Classify pages based on page access and modification bits.
- Clock Algorithm : A simplified version of LRU that can effectively approximate usage.
Manage exchange usage** swappiness parameter controls the positiveness of Linux exchange pages. This value ranges from 0 to 100**:
- Low value (for example, 10-20): Keep the page in RAM as long as possible.
- High values ??(e.g., 60-100): More aggressively exchange to release RAM.
To check and adjust swappiness:
<code>cat /proc/sys/vm/swappiness sudo sysctl vm.swappiness=30</code>
To monitor exchange usage:
<code>free -m vmstat 2 swapon -s</code>
Optimize Switching Performance - Use fast SSDs for swap storage to reduce performance degradation.
- Make sure there is enough RAM to minimize swaps.
- Adjust swappiness according to workload requirements.
Memory allocation in Linux
Physical memory and virtual memory allocation Linux divides memory into three areas:
- DMA (Direct Memory Access) : Reserved for hardware that requires direct memory access.
- Normal area : memory available to the kernel and user processes.
- High memory : Used when physical memory exceeds the direct addressable range.
Kernel Memory Allocation Mechanism 1. Partner System : Allocate memory in power of 2 blocks to reduce fragmentation. 2. Slab allocator : Effectively manage small objects that are frequently allocated/released. 3. SLOB and SLUB allocators : Alternative allocation strategies optimized for different workloads.
Userspace memory allocation - malloc(): Allocate memory in userspace.
- brk() & sbrk(): Resize the process heap.
- mmap(): Allocate large memory areas directly from the kernel.
Handling Out of Memory (OOM) Situation When memory is exhausted, Linux OOM Killer selects and terminates the process to free up RAM. The logs can be checked by:
<code>dmesg | grep -i 'oom'</code>
Practical insights and best practices
Monitor memory usage - use top and htop for real-time monitoring.
- Use free -m to get memory statistics.
- Use /proc/meminfo to get detailed information.
- Use pmap to get the memory map for a specific process.
Optimize memory performance - Tune swappiness to balance RAM and swap usage.
- Use memory cgroups to limit the memory consumption of processes.
- Use huge pages for large memory allocation.
- Optimize application memory footprint to prevent overswap.
in conclusion
Understanding Linux memory management—page tables, swaps, and memory allocation—enables system administrators and developers to effectively optimize performance and troubleshoot problems. Through tools and technologies to monitor, tune, and enhance memory processing, Linux remains a powerful and flexible operating system for a variety of workloads.
By mastering these concepts, you can ensure that your system runs efficiently and responds well under memory constraints, improving overall performance and reliability.
The above is the detailed content of Linux Memory Management: Understanding Page Tables, Swapping, and Memory Allocation. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











LXD is described as the next-generation container and virtual machine manager that offers an immersive for Linux systems running inside containers or as virtual machines. It provides images for an inordinate number of Linux distributions with support

Clear Linux OS is the ideal operating system for people – ahem system admins – who want to have a minimal, secure, and reliable Linux distribution. It is optimized for the Intel architecture, which means that running Clear Linux OS on AMD sys

The key steps for creating a self-signed SSL certificate are as follows: 1. Generate the private key, use the command opensslgenrsa-outselfsigned.key2048 to generate a 2048-bit RSA private key file, optional parameter -aes256 to achieve password protection; 2. Create a certificate request (CSR), run opensslreq-new-keyselfsigned.key-outselfsigned.csr and fill in the relevant information, especially the "CommonName" field; 3. Generate the certificate by self-signed, and use opensslx509-req-days365-inselfsigned.csr-signk

Firefox browser is the default browser for most modern Linux distributions such as Ubuntu, Mint, and Fedora. Initially, its performance might be impressive, however, with the passage of time, you might notice that your browser is not as fast and resp

Decompress the .zip file on Windows, you can right-click to select "Extract All", while the .tar.gz file needs to use tools such as 7-Zip or WinRAR; on macOS and Linux, the .zip file can be double-clicked or unzip commanded, and the .tar.gz file can be decompressed by tar command or double-clicked directly. The specific steps are: 1. Windows processing.zip file: right-click → "Extract All"; 2. Windows processing.tar.gz file: Install third-party tools → right-click to decompress; 3. macOS/Linux processing.zip file: double-click or run unzipfilename.zip; 4. macOS/Linux processing.tar

If you find that the server is running slowly or the memory usage is too high, you should check the cause before operating. First, you need to check the system resource usage, use top, htop, free-h, iostat, ss-antp and other commands to check CPU, memory, disk I/O and network connections; secondly, analyze specific process problems, and track the behavior of high-occupancy processes through tools such as ps, jstack, strace; then check logs and monitoring data, view OOM records, exception requests, slow queries and other clues; finally, targeted processing is carried out based on common reasons such as memory leaks, connection pool exhaustion, cache failure storms, and timing task conflicts, optimize code logic, set up a timeout retry mechanism, add current limit fuses, and regularly pressure measurement and evaluation resources.

When encountering DNS problems, first check the /etc/resolv.conf file to see if the correct nameserver is configured; secondly, you can manually add public DNS such as 8.8.8.8 for testing; then use nslookup and dig commands to verify whether DNS resolution is normal. If these tools are not installed, you can first install the dnsutils or bind-utils package; then check the systemd-resolved service status and configuration file /etc/systemd/resolved.conf, and set DNS and FallbackDNS as needed and restart the service; finally check the network interface status and firewall rules, confirm that port 53 is not

Frankly speaking, I cannot recall the last time I used a PC with a CD/DVD drive. This is thanks to the ever-evolving tech industry which has seen optical disks replaced by USB drives and other smaller and compact storage media that offer more storage
