Added README files

This commit is contained in:
Fabio Scotto di Santolo
2025-07-01 10:56:08 +02:00
parent 7a2535268b
commit 883456d095
2 changed files with 75 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ Welcome! This is a collection of chapter summaries from the book **Linux System
- [Chapter 2 File I/O](chp2/README.md)
- [Chapter 3 Buffered I/O](chp3/README.md)
- [Chapter 4 Advanced File I/O](chp4/README.md)
- [Chapter 5 - Process Management](chp5/README.md)
> Each file contains an English summary of the chapter's key concepts.

73
chp5/README.md Normal file
View File

@@ -0,0 +1,73 @@
# 📘 Chapter 5 Process Management (Summary)
**Based on _Linux System Programming_ by Robert Love**
This chapter covers how Linux manages processes, including their creation, execution, and termination. It introduces key system calls and concepts that underpin multitasking and process control in Unix-like systems.
---
## 🧠 Core Concepts
- A **process** is an independent program with its own memory and execution context.
- The kernel provides **process abstraction** to manage concurrency.
- Processes are scheduled and isolated using virtual memory and process control blocks (PCBs).
---
## 🛠️ Process Creation & Termination
- `fork()` creates a new process (child) by duplicating the calling (parent) process using **copy-on-write**.
- `exec()` replaces the current process image with a new program.
- `wait()` and `waitpid()` allow the parent to wait for and collect the childs exit status.
- `exit()` performs cleanup and exits the process gracefully.
- `_exit()` exits immediately without flushing stdio buffers.
---
## 🔍 Signals & Zombies
- **Zombie processes** occur when a child exits but the parent doesnt read its status with `wait()`.
- `SIGCHLD` is sent to the parent when a child terminates.
- The `init` process (PID 1) will adopt and clean up orphaned children.
---
## 👥 Process Hierarchies
- Every process has a unique **PID** and a **PPID** (parent PID).
- Together they form a **process tree**, starting from `init`.
- Tools like `ps`, `pstree`, and `/proc` are useful for visualizing process hierarchies.
---
## 🎯 Process Identifiers & Groups
- `getpid()` returns the processs ID.
- `getppid()` returns the parents ID.
- **Process groups** and **sessions** enable job control, allowing signals to be sent to multiple related processes.
---
## 🧩 Resource Cleanup
- On termination, the kernel reclaims:
- Memory
- Open file descriptors
- IPC resources
- `exit()` also triggers:
- `atexit()` handlers
- Standard I/O flushes
- Potential creation of core dumps (if enabled)
---
## ✅ Why This Matters
A strong understanding of process control is essential for:
- Writing daemons
- Managing background jobs
- Building shells or supervisors
- Avoiding resource leaks and zombie processes
---
## 📚 References
- _Linux System Programming_, 2nd Edition by Robert Love (O'Reilly)
- `man 2 fork`, `man 2 execve`, `man 2 wait`, `man 2 exit`, `man 7 signal`
---
*This summary is for educational purposes.*