2.6 KiB
2.6 KiB
📘 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()andsched_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}.
- CPU usage (
- 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 :contentReference[oaicite:8]{index=8}