


_Concurrency:_
Concurrency refers to the ability of an operating system to execute multiple processes or threads simultaneously, improving system utilization and responsiveness. It involves:
1. _Process scheduling:_ Allocating CPU time to processes.
2. _Context switching:_ Switching between processes quickly.
3. _Synchronization:_ Managing access to shared resources.
Concurrency techniques:
1. _Multitasking:_ Running multiple processes concurrently.
2. _Multithreading:_ Running multiple threads within a process.
3. _Multiprocessing:_ Running multiple processes on multiple CPUs.
_Memory:_
Memory refers to the storage space where data and program instructions are held while a computer is running. The operating system manages memory, ensuring efficient use and preventing conflicts.
Memory Management:
1. _Process isolation:_ Each process has its own memory space.
2. _Memory allocation:_ Assigning memory to processes.
3. _Memory deallocation:_ Reclaiming memory from terminated processes.
4. _Paging and segmentation:_ Dividing memory into smaller units for efficient use.
5. _Virtual memory:_ Using disk space as an extension of physical memory.
Memory Types:
1. _RAM (Random Access Memory):_ Fast, volatile memory for running programs.
2. _ROM (Read-Only Memory):_ Non-volatile memory for storing firmware.
3. _Cache memory:_ Fast, small memory for frequently accessed data.
4. _Virtual memory:_ Combination of physical memory and disk space.
Effective memory management and concurrency enable efficient use of system resources, improving overall performance and user experience.