Understanding Memory Management in Computing Systems
Overview
The primary goal of memory management is to provide a method for the OS or CPU to access memory efficiently while ensuring that each process operates independently without interfering with others.
Types of Memory Addresses:
Physical Address Space: Refers to the actual addresses in the RAM (Random Access Memory).
Virtual Address: A layer of abstraction over the physical memory, allowing each process to have its own isolated memory.
Important Components:
Memory Management Unit (MMU): Hardware components that translate virtual addresses to physical addresses. This translation is vital for accessing the correct memory locations during process execution.
Page Tables: Data structures the MMU uses to maintain the mapping between virtual and physical addresses, helping ensure that data retrieval and storage are conducted accurately and efficiently.
Process Isolation: Each process is assigned a separate virtual address space providing a safeguard ensuring that one process cannot directly access the memory of another process
Memory Regions In Processes:
- Stack: The memory region where parameters, local variables, and control data for the process are stored
- Heap - Used for dynamic memory allocation, the heap is managed by algorithms like ‘malloc’ in C programming, which allocate and free memory as needed during runtime.
Shared Libraries and Mapped Files
-Shared libraries alow multiple processes to use the same library or file without needing separate copies in memory.
- Memory-mapped files also enable I/O operations through memory manipulations, which can improve performance.
Input/Output (I/O) Operations:
I/O operations transfer data to and from the CPU memory and peripheral device.
Synchronous I/O: The program waits or blocks until the I/O operation is complete.
Asynchronous I/O: The program continues executing while the I/O operation is processed, which helps improve efficiency and responsiveness.
Direct Memory Access (DMA): This technique allows data to be transferred directly between the memory and a device, bypassing the CPU to speed up operations significantly.
Security in Memory Management
- Address Space Layout Randomization (ASLR): ASLR is a security technique that randomly arranges the position of key data areas within the process address space.
- ASLR can be bypassed if an attacker finds a memory leak vulnerability that reveals the address
- ASLR does not protect against non-memory corruption bugs, such as logic errors or side-channel attacks.