OS · บทที่ 1 Introduction

หัวข้อ 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 ไม่จบ แต่โปรแกรมอื่นยังได้ CPURefereeแบ่ง resource ให้ยุติธรรม
โปรแกรม A อ่าน memory ของโปรแกรม B ไม่ได้Refereeisolation
โปรแกรมใช้ memory ได้มากกว่า RAM ที่มีจริงIllusionistภาพลวงของ memory ไม่จำกัด
เขียนไฟล์โดยไม่ต้องรู้ว่า disk เป็นรุ่นไหนIllusionistซ่อน hardware จริงไว้หลัง abstraction
ทุกโปรแกรมใช้กล่อง "เปิดไฟล์" หน้าตาเดียวกันGlueUI 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