การจัดการโพรเซสและการกำหนดเวลาซีพียู (Process Management & CPU Scheduling)

หลังจากเข้าใจสถาปัตยกรรม OS แล้ว สิ่งต่อไปที่ต้องรู้คือ OS จัดการ "โปรแกรมที่กำลังทำงาน" อย่างไร เมื่อเปิด Chrome, VS Code, Spotify พร้อมกัน 3 ตัว แล้วทำไมมันไม่แย่งกันจนค้าง?
คำตอบคือ Process Management และ CPU Scheduling – กลไกสำคัญที่ทำให้คอมพิวเตอร์ทำ Multitasking ได้
## โพรเซสคืออะไร?
Process = โปรแกรมที่กำลังทำงาน
Program = ไฟล์นิ่ง (.exe, .app)
Process = ไฟล์นั้น + สถานะการทำงานปัจจุบัน
ตัวอย่าง: Chrome.exe ยังไม่ได้เปิด = Program
Chrome.exe ที่เปิดค้างไว้ = Process
(see the generated image above)
## สถานะของโพรเซส (Process States)
โพรเซสแต่ละตัวมี "สถานะ" ที่เปลี่ยนไปตามการทำงาน:
New → Ready → Running → Waiting → Terminated- New: เพิ่งสร้าง รอเข้าแถว
- Ready: รอ CPU อยู่
- Running: กำลังใช้ CPU
- Waiting: รอ I/O (เช่น รอโหลดหน้าเว็บ)
- Terminated: ทำงานเสร็จหรือถูกฆ่า
## PCB (Process Control Block)
OS เก็บข้อมูลโพรเซสทั้งหมดไว้ใน PCB หรือตารางควบคุมโพรเซส:
PID: 1234 State: Running CPU: 15%
Memory: 256MB Priority: High Parent: 1PCB มีข้อมูลครบ: ID, สถานะ, หน่วยความจำ, CPU ที่ใช้
## CPU Scheduling คืออะไร?
CPU Scheduling = การตัดสินใจว่า "โพรเซสไหนได้ใช้ CPU ก่อน"
เปรียบเทียบ:
ร้านก๋วยเตี๊ยว 1 พ่อครัว → ลูกค้าหลายคน
พ่อครัวต้องตัดสินใจเสิร์ฟใครก่อน(see the generated image above)
## อัลกอริทึมการกำหนดเวลา CPU (Scheduling Algorithms)
### 1. First Come First Served (FCFS)
ใครมาก่อน ได้ก่อน (แบบแถวร้านก๋วยเตี๊ยว)ข้อดี: ยุติธรรม
ข้อเสีย: โพรเซสยาว ๆ ทำให้คนอื่นรอนาน
### 2. Shortest Job First (SJF)
งานสั้นสุดก่อน (เสิร์ฟน้ำเปล่าก่อนต้มก๋วยเตี๊ยว)ข้อดี: เวลารอรวมน้อยที่สุด
ข้อเสีย: ไม่รู้ล่วงหน้าว่างานจะนานเท่าไหร่
### 3. Round Robin (RR)
วนกันคนละ 10ms (แบบตีลังกา)ข้อดี: รับประกันความยุติธรรม
ข้อเสีย: อาจมี Context Switch บ่อย
### 4. Priority Scheduling
VIP ก่อน (คนจ่ายทิปเยอะ)ข้อดี: สำคัญก่อน
ข้อเสีย: อาจอดตายได้ (Starvation)
## Context Switching คืออะไร?
การสลับโพรเซส ที่ CPU ทำงาน
ขั้นตอน:
1. Save สถานะ Process A (Register, PC)
2. Load สถานะ Process B
3. เริ่ม Process B
ใช้เวลา ~1-10 microseconds
## ตัวชี้วัดประสิทธิภาพ (Performance Metrics)
OS วัดการทำงานด้วยตัวชี้วัดหลัก:
CPU Utilization: %CPU ที่ใช้งาน (เป้าหมาย 40-90%)
Throughput: โพรเซสเสร็จ/หน่วยเวลา
Turnaround Time: เวลารวมตั้งแต่เริ่มจนเสร็จ
Waiting Time: เวลารอ CPU
Response Time: เวลาจนกว่าจะตอบสนอง## ตัวอย่างการคำนวณ (แบบง่าย)
3 โพรเซส: A(4ms), B(2ms), C(3ms)
ใช้ Round Robin (Time Quantum = 2ms)
A1(2) → B(2) → C1(2) → A2(2) → C2(1)ผลลัพธ์:
- A: Turnaround = 10ms
- B: Turnaround = 4ms
- C: Turnaround = 7ms
## Multilevel Queue Scheduling
Queue สูง: System Process (Priority สูงสุด)
Queue กลาง: Interactive (User App)
Queue ต่ำ: Batch Job (Print, Backup)## Thread vs Process
Process = หน่วยงานใหญ่ (มีทรัพยากรเอง)
Thread = พนักงานในหน่วยงาน (แชร์ทรัพยากร)Multithreading = 1 Process มีหลาย Thread ทำงานพร้อมกัน
ตัวอย่าง: Chrome = 1 Process, แต่มี Thread หลายตัว (Tab แต่ละตัว)
## ปัญหาที่พบบ่อย
### 1. Starvation
โพรเซส Priority ต่ำ รอไม่เคยได้
### 2. Thrashing
สลับโพรเซสบ่อยเกิน RAM รับไม่ไหว
### 3. Deadlock (ติดอยู่ในอนาคต)
โพรเซส A รอ B, B รอ A
## ตัวอย่างในชีวิตจริง
เปิด Discord + Spotify + Chrome (10 Tabs)
→ OS สร้าง Process 3 ตัว
→ แต่ละตัวมี Thread หลายตัว
→ CPU Scheduling วนสลับงาน
→ คุณรู้สึก "ลื่น" เพราะ Response Time < 100ms## สรุปแนวคิดสำคัญ
✅ Process = Program + Execution Context
✅ PCB เก็บข้อมูลทุกอย่าง
✅ Scheduling ตัดสินใจว่าใครได้ CPU
✅ Context Switching ทำให้ multitasking ได้
✅ Round Robin เหมาะกับ Interactive System
บทความถัดไป "การจัดการหน่วยความจำหลัก" จะอธิบายว่า OS แบ่ง RAM ให้แต่ละ Process อย่างไร!
หมายเหตุ: เนื่องจากระบบสร้างภาพไม่พร้อมใช้งานในโซนนี้ แนะนำใช้ไดอะแกรมจาก [Draw.io](https://app.diagrams.net) หรือ Canva สร้างตามโครงที่กำหนดไว้ครับ