การจัดการทรัพยากรและกระบวนการโดยระบบปฏิบัติการ
| English | ไทย |
|---|---|
| process/ˈprəʊses/ | โปรเซส (process) |
| scheduler/ˈʃedjʊlə/ | ตัวจัดตาราง |
| multi-tasking/ˈmʌlti ˈtæskɪŋ/ | มัลติทาสกิ้ง |
| spooling/ˈspuːlɪŋ/ | Spooling |
| caching/ˈkæʃɪŋ/ | การแคช |
| round robin/raʊnd ˈrɒbɪn/ | โรบินหมุนเวียน |
| context switch/ˈkɒntekst swɪtʃ/ | การสลับบริบท |
| process control block/ˈprəʊses kənˈtrəʊl blɒk/ | 进程控制块 (process control block) |
ทำไมเมาส์ยังเคลื่อนที่ได้แม้ทุกอย่างจะหยุดนิ่ง
- โปรแกรมติดขัด หน้าต่างจะไม่ redraw,spinner จะหยุด, ไม่มีการตอบสนองอะไรเลย แต่เคอร์เซอร์เมาส์ยังคงเลื่อนผ่านหน้าจอเหมือนเดิม
- นั่นคือระบบปฏิบัติการกำลังบอกคุณ something: เครื่องไม่ติดขัด, มีเพียง process หนึ่งเท่านั้นที่ติดขัด. Scheduler ยังคงแบ่งSlice ของโปรเซสเซอร์ให้, และโปรแกรมที่ค้างก็ простоไม่ได้ทำอะไรที่มีประโยชน์กับSlice นั้น
- ทรัพยากรทุกอย่างในเครื่องถูกแชร์ด้วยวิธีนี้: โปรเซสเซอร์โดยเวลา, หน่วยความจำโดยพื้นที่, โพรินเตอร์โดยคิว
- บทเรียนนี้จะอธิบายว่าระบบปฏิบัติการ (OS) ใช้ทรัพยากรเหล่านี้ให้เกิดประโยชน์สูงสุดได้อย่างไร และจัดการกระบวนการตั้งแต่การเริ่มต้นจนสิ้นสุดอย่างไร
การใช้ทรัพยากรให้คุ้มค่าที่สุด
- มัลติทาสกิ้ง (Multi-tasking): ตัวประมวลผลสลับไปมาระหว่างกระบวนการอย่างรวดเร็ว ทำให้หลายกระบวนการดูเหมือนทำงานพร้อมกัน ทั้งที่ในความเป็นจริงมีเพียงกระบวนการเดียวที่กำลังทำงานอยู่ในแต่ละวินาที
- เพจจิ้ง (Paging): ข้อมูลถูกย้ายระหว่างหน่วยความจำ RAM และดิสก์ เพื่อให้สามารถเปิดโปรแกรมได้มากกว่าขนาดของหน่วยความจำทางกายภาพที่มีอยู่
- สปูลลิ่ง (Spooling): ผลลัพธ์จากอุปกรณ์ที่ทำงานช้าจะถูกจัดคิวไว้บนดิสก์ ทำให้ตัวประมวลผลไม่ต้องรอเครื่องพิมพ์ แคชชิ่ง (Caching) เก็บข้อมูลที่เพิ่งใช้งานไว้ในหน่วยความจำความเร็วสูง เพื่อไม่ให้ต้องดึงข้อมูลออกมาอีกครั้ง
- ระบบปฏิบัติการยังซ่อนทุกสิ่งเหล่านี้ไว้ภายใต้ อินเทอร์เฟซผู้ใช้ (User Interface) ซึ่งอาจเป็นบรรทัดคำสั่งหรือกราฟิก (GUI)
Multitasking ทำให้หลายโปรแกรมดูเหมือนทำงานพร้อมกันโดย:
OS สลับ CPU ระหว่างกระบวนการอย่างรวดเร็วเพื่อให้ดูเหมือนว่าทั้งหมดกำลังพัฒนาไปพร้อมกัน
ตัวอย่างฝึกทำ: ทำไมสปูลลิ่งถึงช่วยได้
- อธิบายวิธีที่สปูลลิ่งช่วยเพิ่มประสิทธิภาพการใช้ทรัพยากรคอมพิวเตอร์ [3]
- เครื่องพิมพ์ช้ากว่าตัวประมวลผลหลายพันเท่า หากโปรแกรมส่งผลลัพธ์โดยตรงจะต้องรอทำให้ตัวประมวลผลว่างเปล่า
- ด้วยวิธีสปูลลิ่ง ผลลัพธ์จะถูกเขียนลงคิวบนดิสก์อย่างรวดเร็ว แล้วโปรแกรมจะดำเนินการต่อทันที
- กระบวนการแยกต่างหากจะนำข้อมูลไปพิมพ์ด้วยความเร็วของตัวเอง ในขณะที่มีหลายงานรออยู่ และตัวประมวลผลสามารถไปทำงานอื่นต่อได้ ชื่ออุปกรณ์ที่ช้า คิว และสิ่งที่ตัวประมวลผลทำแทน
Spooling ช่วยระบบเพราะ:
Spooling เก็บงานพิมพ์ใน缓冲区บนดิสก์เพื่อให้ CPU ที่เร็วไม่ถูกเครื่องพิมพ์ที่ช้ามาขัดขวาง
เทคนิคใดช่วยให้อุปกรณ์ OS ใช้ทรัพยากรได้อย่างสูงสุด? เลือก ทั้งหมด ที่ถูกต้อง
การแบ่งเวลา, การเข้าคิวสำหรับอุปกรณ์ช้า และการเก็บข้อมูลร้อนไว้ใกล้ๆ การฆ่ากระบวนการที่รอนั้นจะทำให้สูญเสียข้อมูลของผู้ใช้ ไม่ใช่เพิ่มประสิทธิภาพการใช้งาน
กระบวนการและตัวจัดตารางเวลา
- กระบวนการ (Process) คือโปรแกรมที่กำลัง被执行: โค้ด, สถานะปัจจุบัน, หน่วยความจำ และไฟล์ที่เปิดอยู่ โปรแกรมบนดิสก์ไม่ใช่กระบวนการ แต่โปรแกรมที่กำลังรันคือกระบวนการ
- ตัวจัดตารางเวลา (Scheduler) ตัดสินใจว่ากระบวนการที่พร้อมจะทำงานต่อไปใคร และนานเท่าใด เป้าหมายคือการทำให้ตัวประมวลผลทำงานตลอดเวลา ตอบสนองผู้ใช้งานแบบอินเทอracitive ได้รวดเร็ว และเป็นธรรม
- เรานด์โรบิน (Round robin) ให้แต่ละกระบวนการที่พร้อมมี Slice เวลา ที่กำหนดไว้ แล้วส่งกลับไปที่ท้ายคิว: ง่าย เป็นธรรม และตอบสนองดี นโยบายอื่นๆ ได้แก่ First come first served, Shortest job first และ Shortest remaining time

ทุกคนได้รับ turno และไม่มีใคร佔ใช้ตัวประมวลผล
การจัดตารางแบบ Round-robin ให้เวลาจำกัดแก่แต่ละกระบวนการ Ready แล้วย้ายไปท้ายคิว —使其公平และตอบสนองไว
การแบ่งเวลาเท่าๆ กันหมุนเวียนป้องกันไม่ให้กระบวนการใดหนึ่งครอง CPU ทำให้โปรแกรมเชิงโต้ตอบยังคงตอบสนองได้
什么是进程?
磁盘上的文件是程序;一旦加载并运行,拥有自己的状态,它就是一个进程。
สถานะของกระบวนการ
- ใหม่ (New): กำลังถูกสร้าง พร้อม (Ready): สามารถทำงานได้ รอแค่ตัวประมวลผล กำลังทำงาน (Running): กำลัง被执行อยู่ ติดขัด (Blocked): รอสomething else อยู่ ส่วนใหญ่เป็นการ input หรือ output สิ้นสุด (Terminated): ทำงานเสร็จแล้ว
- การเปลี่ยนสถานะคือสิ่งที่ข้อสอบถามมา เปลี่ยนจาก Running เป็น Ready เมื่อ Slice เสร็จสิ้น เปลี่ยนจาก Running เป็น Blocked เมื่อกระบวนการขอ I/O เปลี่ยนจาก Blocked เป็น Ready เมื่อ I/O เสร็จสิ้น เปลี่ยนจาก Ready เป็น Running เมื่อ Scheduler เลือกมัน
- ระวังความไม่สมมาตร: กระบวนการที่_blocked จะไม่กลับไปยัง Running โดยตรง มันจะกลับเข้า Ready Queue และรอ turno ของมันเอง

ห้าสถานะ และเหตุผลของแต่ละลูกศร
将每个进程状态与其含义匹配。
进程循环经历 ready → running → (blocked) → ready,直到终止。
ตัวอย่างฝึกทำ: ติดตามกระบวนการ
- กระบวนการหนึ่งกำลังทำงานอยู่เมื่อมันขออ่านไฟล์ อธิบาย会发生อะไรกับมัน
- มันเปลี่ยนจาก Running เป็น Blocked เพราะไม่สามารถดำเนินต่อได้จนกว่าข้อมูลจะมา และ Scheduler จะมอบตัวประมวลผลให้กับกระบวนการ Ready อื่นทันทีโดยไม่รอ
- เมื่อดิสก์ทำงานเสร็จ กระบวนการจะเปลี่ยนจาก Blocked เป็น Ready มันจะไม่ resumes ทันที แต่จะเข้าไปอยู่ใน Ready Queue
- Scheduler เลือกมันในภายหลัง และมันจะเปลี่ยนจาก Ready เป็น Running ดำเนินต่อจากจุดที่หยุดไว้พอดี
วงจรชีวิตของกระบวนการ
ดูรอบๆ วงจรที่กระบวนการเดินทาง มันจะทำงานก็ต่อเมื่อตัวจัดสรร (Scheduler) เลือกมัน; หากต้องการ I/O จะถูกส่งไป_blocked และหากหมดเวลาที่ใช้ CPU จะกลับไปที่_ready —วนลูปไปเรื่อยๆ จนกว่าจะเสร็จสิ้น
一个正在运行的进程请求读取文件。按顺序说明接下来会发生什么。
被阻塞的进程永远不会直接返回到运行状态:它会重新加入 ready 队列并等待轮到自己。
Context Switching
- เพื่อเปลี่ยนว่ากระบวนการไหนกำลัง被执行 ระบบปฏิบัติการจะบันทึกสถานะปัจจุบัน, registers, program counter และ status ของกระบวนการนั้นลงใน Process Control Block (PCB) แล้วโหลดสถานะของกระบวนการถัดไปจาก PCB ของมันเอง
- นั่นคือ Context Switch ซึ่งมีต้นทุนจริง: ระหว่างนั้นตัวประมวลผลกำลังทำงานบ้าน ไม่ใช่งานของผู้ใช้
- ดังนั้น Slice เวลาจึงเป็นการแลกเปลี่ยน: ยาวเกินไปโปรแกรมอินเทอracitive จะรู้สึกหน่วง; สั้นเกินไปเครื่องจะใช้เวลาสลับมากเกินคำนวณ
上下文切换涉及:
OS 保存运行进程的寄存器/PC 到其 PCB 并加载下一个进程的——每次切换都有少量开销。
在上下文切换期间,进程的寄存器和程序计数器被保存到其 ____ 中。
然后从下一个进程自身的块中加载其状态。保存和加载是实际的工作,这也是切换需要时间的原因。
Interrupts และ Kernel
- Kernel ซึ่งเป็นหัวใจของ OS คือสิ่งที่ปฏิบัติจริง: มันตอบสนองต่อ Interrupts จากอุปกรณ์และโปรแกรม และ Interrupt คือสิ่งที่ส่ง控制权กลับไปยัง OS จากกระบวนการที่กำลัง被执行
- Timer interrupt ในตอนจบของ Slice คือสิ่งที่ทำให้ Pre-emptive scheduling เป็นไปได้ทั้งหมด;若无มัน โปรแกรมที่ไม่เคยyield จะครองตัวประมวลผลตลอดไป
- นี่คือคำตอบสำหรับปริศนาต้นบท: โปรแกรมที่冻结 ไม่ครองตัวประมวลผลมากกว่า Slice ของมัน ดังนั้นเมาส์ก็ยังคงขยับได้
คะแนนที่หลุดหายไป
- กระบวนการคือโปรแกรมที่กำลัง被执行 ไม่ใช่ไฟล์บนดิสก์
- จาก Blocked ไป Ready โดยไม่ blocked ไป Running โดยตรง Scheduler เลือกเมื่อไหร่它就会运行
- Context switch บันทึกและกู้คืนสถานะผ่าน PCB และมีต้นทุนด้านเวลา
- Multi-tasking หมายถึงกระบวนการสลับกันอย่างรวดเร็วจนดูperfom simultaneously ไม่ใช่執行จริงพร้อมกันบน core เดียว
คุณเข้าใจแล้ว
- OS เพิ่มประสิทธิภาพการใช้ทรัพยากรโดย multi-tasking, paging, spooling ไปยัง disk queue และ caching
- Process คือโปรแกรมที่กำลัง被执行; Scheduler เลือกกระบวนการ Ready ถัดไป โดย Round robin ให้แต่ละคนมี Slice เวลาที่กำหนด
- สถานะ new, ready, running, blocked, terminated: slice expiry ส่ง running เป็น ready, request I/O ส่งไป blocked, I/O completion ส่งกลับเป็น ready
- Context switch บันทึกและกู้คืนสถานะผ่าน PCB และมีต้นทุนเวลา นี่คือเหตุผลที่ความยาวของ slice เป็นการแลกเปลี่ยน