Renaming all folders
This commit is contained in:
52
06_AdvancedProcessManagement/README.md
Normal file
52
06_AdvancedProcessManagement/README.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 📘 Chapter 6 – Advanced Process Management (Summary)
|
||||
**From _Linux System Programming_ by Robert Love, 2nd Ed.**
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Process Scheduling
|
||||
- The kernel scheduler selects **runnable processes** (those not blocked on I/O, etc.).
|
||||
- Goals: **maximize CPU utilization**, minimize wait time, and ensure fairness :contentReference[oaicite:1]{index=1}.
|
||||
- Covers **preemptive scheduling**, **timeslices**, and the Linux **Completely Fair Scheduler (CFS)**.
|
||||
- Explains **processor affinity** and CPU sets: binding processes to specific CPUs for cache performance :contentReference[oaicite:2]{index=2}.
|
||||
|
||||
## 🧭 Yielding the Processor
|
||||
- `sched_yield()` lets a running process give up the CPU voluntarily.
|
||||
- Useful in busy-wait loops or when expecting immediate CPU from others :contentReference[oaicite:3]{index=3}.
|
||||
|
||||
## 🎚️ Priorities & Nice Values
|
||||
- Processes can adjust their priority using **`nice()`**, where lower nice = higher priority.
|
||||
- Real-time scheduling policies (`SCHED_FIFO`, `SCHED_RR`) grant stronger priority guarantees for time-sensitive tasks :contentReference[oaicite:4]{index=4}.
|
||||
|
||||
## 🧠 Processor Affinity
|
||||
- **Get/set CPU affinity** with `sched_getaffinity()` and `sched_setaffinity()`.
|
||||
- Ensures cache affinity, reducing context-switch overhead :contentReference[oaicite:5]{index=5}.
|
||||
|
||||
## ⏱️ Real-Time Scheduling
|
||||
- Differences between **hard** and **soft real-time** systems.
|
||||
- Configurable policies: `SCHED_FIFO`, `SCHED_RR`, with real-time priority range 0–99 :contentReference[oaicite:6]{index=6}.
|
||||
- Care needed: real-time tasks can lead to starvation of normal tasks.
|
||||
|
||||
## 🔒 Resource Limits
|
||||
- Kernel enforces per-process limits via `setrlimit()`/`getrlimit()`:
|
||||
- CPU usage (`RLIMIT_CPU`)
|
||||
- File sizes (`RLIMIT_FSIZE`)
|
||||
- Number of open files, memory, etc. :contentReference[oaicite:7]{index=7}.
|
||||
- Helps contain rogue or misbehaving processes, essential for robustness.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Why It Matters
|
||||
Advanced control over process scheduling, priorities, affinity, and resource limits is critical for writing:
|
||||
- Real-time or latency-sensitive applications
|
||||
- High-performance servers that benefit from core binding
|
||||
- Robust daemons that avoid resource exhaustion
|
||||
|
||||
This chapter equips systems programmers with the tools to finely tune how tasks interact with the kernel scheduler and manage system impact.
|
||||
|
||||
---
|
||||
|
||||
## 📚 References
|
||||
- *Linux System Programming*, 2nd Ed. — Robert Love
|
||||
- `man 2 sched_setscheduler`, `man 2 setrlimit`, `man 2 sched_getaffinity`
|
||||
- Wikipedia: [Completely Fair Scheduler](https://en.wikipedia.org/wiki/Completely_Fair_Scheduler) :contentReference[oaicite:8]{index=8}
|
||||
|
||||
Reference in New Issue
Block a user