การจัดการโพรเซสและการกำหนดเวลาซีพียู (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: รอ CPU อยู่
- Running: กำลังใช้ CPU
- Waiting: รอ I/O (เช่น รอโหลดหน้าเว็บ)
- Terminated: ทำงานเสร็จหรือถูกฆ่า
## PCB (Process Control Block)
OS เก็บข้อมูลโพรเซสทั้งหมดไว้ใน PCB หรือตารางควบคุมโพรเซส:
PCB มีข้อมูลครบ: ID, สถานะ, หน่วยความจำ, CPU ที่ใช้
## CPU Scheduling คืออะไร?
CPU Scheduling = การตัดสินใจว่า "โพรเซสไหนได้ใช้ CPU ก่อน"
เปรียบเทียบ:
(see the generated image above)
## อัลกอริทึมการกำหนดเวลา CPU (Scheduling Algorithms)
### 1. First Come First Served (FCFS)
ข้อดี: ยุติธรรม
ข้อเสีย: โพรเซสยาว ๆ ทำให้คนอื่นรอนาน
### 2. Shortest Job First (SJF)
ข้อดี: เวลารอรวมน้อยที่สุด
ข้อเสีย: ไม่รู้ล่วงหน้าว่างานจะนานเท่าไหร่
### 3. Round Robin (RR)