1. Memory Hierarchy
- Registers: Small, fast storage locations within the CPU.
- Cache Memory: A small-sized type of volatile computer memory that provides high-speed data access to the processor.
- Main Memory (RAM): The primary storage that holds data and programs currently in use.
- Secondary Storage: Non-volatile storage (e.g., hard drives, SSDs) used for long-term data storage.
2. Memory Allocation
- Static vs. Dynamic Allocation: Static allocation assigns memory at compile-time, while dynamic allocation assigns it at run-time.
- Contiguous vs. Non-Contiguous Allocation: Contiguous allocation assigns a single block of memory to a process, while non-contiguous allocation allows a process to be allocated memory in multiple blocks.
3. Memory Partitioning
- Fixed Partitioning: Memory is divided into fixed-size partitions. Each process occupies an entire partition.
- Dynamic Partitioning: Memory is divided into partitions dynamically according to the size of the process.
4. Paging
- Concept: Memory is divided into fixed-size blocks called pages. The process is divided into pages, and pages are mapped to physical memory frames.
- Page Table: Maintains the mapping between virtual addresses and physical addresses.
5. Segmentation
- Concept: Memory is divided into segments based on the logical divisions of a program (e.g., code, data, stack).
- Segment Table: Maps the segment's starting address and size.
6. Virtual Memory
- Concept: Extends the available memory by using disk space as an extension of RAM.
- Demand Paging: Loads pages into memory only when they are needed, reducing memory usage.
- Page Replacement Algorithms: Determines which pages to swap out when memory is full (e.g., FIFO, LRU, Optimal).
7. Memory Management Techniques
- Swapping: Moves processes between main memory and disk to free up memory for other processes.
- Compaction: Reduces fragmentation by relocating processes to merge free memory spaces.
- Garbage Collection: Automatically reclaims memory that is no longer in use by the program.
8. Fragmentation
- Internal Fragmentation: Wasted memory within allocated regions due to fixed partition sizes.
- External Fragmentation: Wasted memory outside allocated regions due to scattered free space.
9. Protection and Security
- Memory Protection: Ensures that one process does not interfere with another's memory space.
- Access Control: Defines which processes can access specific memory segments.
10. Examples of Memory Management in Different OS
- Windows: Uses a combination of paging and segmentation with a focus on virtual memory.
- Linux: Uses paging and implements virtual memory through a hierarchical page table structure.
- macOS: Implements advanced memory management with techniques like copy-on-write and shared memory.
Understanding these topics provides a solid foundation in how operating systems manage memory to ensure efficient and secure execution of processes.