หัวข้อ 1 · 12 นาที
ประวัติและบทบาทของ OS
นึกภาพก่อน
เปิดเครื่องแล้วฟังเพลงไปด้วย พิมพ์งานไปด้วย โหลดไฟล์ไปด้วย ทั้งที่เครื่องมี processor ไม่กี่ตัวและ memory จำกัด ไม่มีโปรแกรมไหนต้องรู้ว่ามีโปรแกรมอื่นอยู่ และโปรแกรมหนึ่งพังก็ไม่ลากทั้งเครื่องพังตาม
สิ่งที่อยู่ตรงกลางและทำให้เป็นแบบนี้ได้คือ operating system (OS)
OS คือชุดของซอฟต์แวร์ที่จัดการ resource ของคอมพิวเตอร์ ให้กับผู้ใช้และ application ของผู้ใช้
ผู้ใช้อาจมองเห็น OS หรือไม่เห็นก็ได้ และแบ่งได้เป็นสองชนิดใหญ่:
- General purpose OS ใช้งานได้หลากหลาย
- Specific purpose OS ทำมาเพื่องานเฉพาะอย่าง
ประวัติ: ใครแพงกว่า คนหรือเครื่อง
วิธีจำที่ง่ายที่สุดคือถามว่าแต่ละยุค อะไรแพง เพราะ OS ถูกออกแบบให้ประหยัดสิ่งที่แพง
| ยุค | อะไรแพง | ลักษณะ |
|---|---|---|
| ก่อน 1956 | – | ไม่มี OS |
| 1956 – 1960s Early OS | คอมพิวเตอร์แพงมาก | ทำทีละ application, application คุม hardware ทั้งหมด, OS เป็นแค่ runtime library, ผู้ใช้ต่อแถวรอใช้เครื่อง |
| (ยุคเดียวกัน) Batch system | คอมพิวเตอร์ | เก็บงานเป็นคิวเพื่อให้ CPU ไม่ว่าง, OS โหลดงานถัดไประหว่างงานปัจจุบันทำอยู่, ผู้ใช้ส่งงานแล้วรอ |
| 1960s – 1970s Time-sharing | ทั้งคอมพิวเตอร์และคน | ผู้ใช้หลายคนใช้เครื่องพร้อมกัน, multiprogramming, เน้น interactive performance |
| 1980 – ปัจจุบัน | คอมพิวเตอร์ถูก | smartphone, embedded system, laptop, tablet, virtual machine, data center server |
| อนาคต | – | data center ขนาดยักษ์, processor ต่อเครื่องมากขึ้น, คอมพิวเตอร์ต่อคนมากขึ้น, storage ขนาดใหญ่มาก |
จุดเปลี่ยนสำคัญสองจุด:
- แนวคิดของ OS เริ่มในปี 1956 ที่ห้องวิจัยของ GM
- ราวปี 1959 มี integrated circuit กำลังประมวลผลเพิ่มขึ้น จึงเริ่มให้หลายคนใช้เครื่องพร้อมกันได้
เมื่อคอมพิวเตอร์ถูกลง สิ่งที่ต้อง optimize จึงเปลี่ยนจาก เวลาของเครื่อง เป็น เวลาของผู้ใช้ batch system ทำให้ CPU ไม่ว่าง (ดีต่อเครื่อง) แต่คนต้องรอนาน time-sharing กลับด้าน: พยายามทำงานของทุกคนให้เสร็จเร็ว
บทบาทของ OS
Referee (ผู้ตัดสิน)
หลายโปรแกรมแย่งของชิ้นเดียวกัน ต้องมีคนกลาง
- Resource allocation: แบ่ง resource ระหว่างผู้ใช้และ application
- Isolation: แยกผู้ใช้และ application ออกจากกัน ไม่ให้รบกวนกัน
- Communication: ให้ผู้ใช้และ application สื่อสารกันได้ (อย่างควบคุมได้)
Illusionist (นักมายากล)
ทำให้แต่ละ application รู้สึกว่ามีเครื่องทั้งเครื่องเป็นของตัวเอง
- processor จำนวนไม่จำกัด
- memory (เกือบ) ไม่จำกัด
- storage ที่เชื่อถือได้ และ network ที่ส่งข้อมูลได้อย่างเชื่อถือได้
ของจริงมีจำกัดและไม่น่าเชื่อถือ OS สร้างภาพลวงนี้ขึ้นมา เช่น thread ทำให้เหมือนมี processor มากมาย และ virtual memory ทำให้เหมือนมี memory มากกว่าที่มีจริง (อยู่ในบทที่ 4 และ 8)
Glue (กาว)
บริการกลางที่ทุก application ใช้ร่วมกัน เช่น library และ user interface widget ทำให้โปรแกรมไม่ต้องเขียนของพื้นฐานเองทุกครั้ง และหน้าตาโปรแกรมต่าง ๆ ไปในทางเดียวกัน
ตัวอย่างไล่ทีละขั้น
จัดสถานการณ์เข้าบทบาท โดยถามว่า "OS กำลังทำอะไรอยู่":
| สถานการณ์ | บทบาท | เหตุผล |
|---|---|---|
| โปรแกรมวน loop ไม่จบ แต่โปรแกรมอื่นยังได้ CPU | Referee | แบ่ง resource ให้ยุติธรรม |
| โปรแกรม A อ่าน memory ของโปรแกรม B ไม่ได้ | Referee | isolation |
| โปรแกรมใช้ memory ได้มากกว่า RAM ที่มีจริง | Illusionist | ภาพลวงของ memory ไม่จำกัด |
| เขียนไฟล์โดยไม่ต้องรู้ว่า disk เป็นรุ่นไหน | Illusionist | ซ่อน hardware จริงไว้หลัง abstraction |
| ทุกโปรแกรมใช้กล่อง "เปิดไฟล์" หน้าตาเดียวกัน | Glue | UI widget ที่ใช้ร่วมกัน |
| copy ข้อความจากโปรแกรมหนึ่งไปวางอีกโปรแกรม | Referee (communication) | สื่อสารข้าม application ผ่าน OS |
จุดที่มักพลาด
1. คิดว่า batch system คือ time-sharing
batch ทำทีละงานจากคิวเพื่อไม่ให้ CPU ว่าง ผู้ใช้ไม่ได้โต้ตอบ ส่วน time-sharing ให้หลายคนใช้พร้อมกันและโต้ตอบได้
2. สลับ Referee กับ Illusionist
ถ้าเป็นเรื่อง "แบ่ง กัน แยก" ระหว่างหลายฝ่าย คือ Referee ถ้าเป็นเรื่อง "ทำให้ดูเหมือนมีมากกว่าหรือดีกว่าของจริง" คือ Illusionist
3. คิดว่า Early OS จัดการ resource ให้หลายโปรแกรม
ยุคนั้นทำทีละ application และ application คุม hardware เองทั้งหมด OS เป็นเพียง runtime library
4. คิดว่า OS ต้องมีหน้าจอให้เห็น
สไลด์ระบุว่า OS อาจ visible หรือ invisible ต่อผู้ใช้
ที่มา: 01-Introduction_v5.pdf หน้า 2–12