โครงสร้างของระบบปฏิบัติการ
ระบบปฏิบัติการมีหน้าที่จัดเตรียมสภาวะแวดล้อมเพื่อช่วยให้โปรแกรมทำงานได้ การ ออกแบบถือเป็นงานหลักในการสร้างระบบปฏิบัติการใหม่ ก่อนการออกแบบจะต้องกำหนดเป้าหมายของระบบขึ้นมาก่อน หลังจากนั้นจะต้องสร้างอัลกอริทึมที่หลากหลายที่จะเป็นต้องใช้ในการสร้างระบบ แล้วสร้างระบบตามอัลกอริทึมนั้นมีจุดที่น่าสนใจในการพิจารณาระบบปฏิบัติการ 2-3 ประการ ประการแรกให้พิจารณาเซอร์วิสของระบบ ปฏิบัติการที่มีมาให้ ประการที่สองคือการดูที่อินเทอร์เฟซระหว่างผู้ใช้กับโปรแกรมเมอร์ ประการสุดท้ายคือการแยกส่วนประกอบของระบบออกเป็นส่วนย่อย ๆ รวมถึงการเชื่อมโยงระหว่างส่วนย่อย ๆ นั้นด้วย ในหัวข้อนี้ผู้เขียนจะนำคุณเข้าไปสำรวจจุดที่ควรพิจารณาทั้ง 3 ประการของระบบปฏิบัติการเพื่อแสดงมุมมองของผู้ใช้, โปรแกรมเมอร์และผู้ออกแบบระบบ เราจะพิจารณาเซอร์วิสของระบบปฏิบัติการว่ามีอะไรบ้าง แต่ละเซอร์วิสทำอะไรบ้าง รวมถึงวิธีต่าง ๆ ที่ใช้ในการออกแบบระบบ
คอมโพเนนต์ของระบบ (System Component) เราสามารถสร้างระบบให้ใหญ่โตและซับซ้อนได้ด้วยการแบ่งให้เป็นส่วนย่อย แต่ละส่วนย่อยเหล่านี้เป็นโครงสร้างของระบบที่ออกแบบอินพุต, เอาต์พุต และฟังก์ชัน แต่เดิมนั้นทุกระบบมีคอมโพเนนต์ที่ไม่เหมือนกัน อย่างไรก็ตามระบบสมัยใหม่มีเป้าหมายที่สนับสนุนคุมโพเนนต์ที่เป็นพื้นฐานของระบบปฏิบัติการดังนี้
การจัดการโปรเซส (Process Management) ซีพียูทำหน้าที่เอ็กซิคิวต์คำสั่งที่อยู่ในโปรแกรม โปรแกรมที่เอ็กซิคิวต์เป็นโปรเซสแต่เป็นเพียงการกำหนดในเบื้องต้นที่สามารถขยายเพิ่มเติมในอนาคต โดยปกติแล้วงานแบ็ตซ์เป็นโปรเซส การแชร์เวลาของโปรแกรมก็เป็นโปรเชส หรือแม้แต่งานของระบบ เช่น การสพูล เอาต์พุตออกทางเครื่องพิมพ์ ก็เป็นโปรเซสเช่นกัน โปรเซสต้องการรีซอร์สที่แน่นอนเพื่อให้งานเสร็จสมบูรณ์ ทั้งเวลาสำหรับซีพียู, หน่วยความจำ, ไฟล์, และดีไวซ์ที่เป็นอินพุตและเอาต์พุต รีซอร์สเหล่านี้จะนำมาใช้เมื่อมีการสร้างหรือกำหนดให้โปรเซสทำงาน นอกจากนี้เมื่อมีการสร้างโปรเซสก็อาจจะมีการส่งข้อมูลเริ่มต้นไปให้ทั้งรีซอร์สทางกายภาพและทางลอจิก โปรเซสเป็นหน่วยหนึ่งของระบบ โดยปกติระบบจะประกอบด้วยโปรเซสเป็นจำนวนมาก บ้างก็เป็นโปรเซสของระบบปฏิบัติการ (ที่เอ็กซิคิวต์โค้ดของระบบ) ที่เหลือก็เป็นโปรเซสของผู้ใช้ (ที่เอ็กซิคิวต์โค้ดของผู้ใช้) โปรเซสทั้งหมดนี้มีศักยภาพที่จะเอ็กซิคิวต์ไปพร้อม ๆ กันด้วยความซับซ้อนของซีพียูนั่นเอง ระบบปฏิบัติการมีหน้าที่รับผิดชอบในกิจกรรมที่เกี่ยวกับการจัดการโปรเซสดังนี้
- การสร้างและลบทั้งโปรเซสของระบบและของผู้ใช้
- การหยุดและทำโปรเซสต่อไป
- การจัดเตรียมกลไกสำหรับการซินโครไนซ์โปรเซส
- การจัดเตรียมกลไกสำหรับการติดต่อสื่อสารโปรเซส
- การจัดเตรียมกลไกการแก้ไข deadlock
การจัดการหน่วยความจำ (Memory Managememt) หน่วยความจำเป็นส่วนสำคัญและเป็นศูนย์กลางการทำงานของระบบปฏิบัติการยุคใหม่ หน่วยความจำเป็นอาร์เรย์ของคำหรือไบต์ โดยที่แต่ละคำหรือไบต์จะมีแอ็ดเดรสที่แน่นอนเป็นของตัวเอง หน่วยความจำเป็นที่เก็บข้อมูลที่ใช้งานร่วมกันของซีพียู และดีไวซ์สำหรับอินพุตและเอาต์พุต เพื่อให้การดึงข้อมูลมาใช้ได้อย่างรวดเร็ว โปรเซสเซอร์ส่วนกลาง หรือซีพียูจะอ่านคำสั่งจากหน่วยความจำตลอดเวลาในวงรอบการดึงข้อมูล และมีทั้งการเขียนและอ่านจากหน่วยความจำระหว่างวงรอบการดึงข้อมูล การทำงานของอินพุต/เอาต์พุตทั้งการอ่านและเขียนลงหน่วยความจำจะจำผ่าน DMA โดยปกติหน่วยความจำจะเป็นดีไวซ์สำหรับการจัดเก็บข้อมูลขนาดใหญ่ที่ซีพียูกำหนดแอ็ดเดรสและดึงข้อมูลได้โดยตรง
การจัดการไฟล์ (File Management) การจัดการไฟล์เป็นส่วนหนึ่งในคอมโพเนนต์ของระบบปฏิบัติการที่เห็นได้ชัดเจน คอมพิวเตอร์สามารถจัดเก็บในสื่อที่แตกต่างกัน ไม่ว่าจะเป็นเทปแม่เหล็ก, ดิสก์, ออพติคัลดิสก์ สื่อแต่ละชนิดมีคุณสมบัติและการจัดทางกายภาพเฉพาะแบบ สื่อแต่ละชนิดจะถูกควบคุมด้วยดีไวซ์ เช่น ดิสก์ไดรฟ์, หรือเทปไดรฟ์ ซึ่งมีคุณสมบัติเฉพาะแบบเช่นกัน คุณสมบัติเหล่านี้รวมถึง ความเร็ว, ความจุ, อัตราการถ่ายโอนข้อมูล และวิธีการแอ็กเซสข้อมูล เพื่อความสะดวกในการใช้งานระบบคอมพิวเตอร์นั้น ระบบปฏิบัติการได้กำหนดชื่อทางลอจิกว่า “ไฟล์” เพื่อเป็นชื่อแทนกลุ่มข้อมูลที่จัดเก็บในสื่อทางกายภาพ โดยที่ระบบปฏิบัติการจะแมพไฟล์ไปยังสื่อทางกายภาพและแอ็กเซสไฟล์ผ่านทางดีไวซ์ที่จัดเก็บข้อมูลนั้น ทำให้คุณใช้ชื่อไฟล์เพื่อกำหนดสิ่งที่คุณต้องการดูข้อมูลได้ทันที ไฟล์จะเป็นชุดของข้อมูลที่สัมพันธ์กันซึ่งถูกกำหนดชื่อโดยผู้สร้างไฟล์นั้น โดยปกติแล้ว ไฟล์จะแสดงโปรแกรมและข้อมูล ไฟล์ข้อมูลอาจจะเป็นตัวเลข, ตัวอักษร หรือทั้งตัวเลขและตัวอักษร ไฟล์อาจจะเป็นรูปแบบอิสระ เช่น เท็กซ์ไฟล์ หรืออาจจะเป็นรูปแบบที่ตายตัว ไฟล์ประกอบด้วยชุดของบิต, ไบต์, หรือเรกคอร์ดตามที่ผู้สร้างกำหนด ระบบปฏิบัติการมีหน้าที่รับผิดชอบในกิจกรรมที่เกี่ยวกับการจัดการไฟล์ดังนี้
- สร้างและการลบไฟล์
- สร้างและการลบไดเรกทอรี
- สนับสนุนการจัดการไฟล์ในรูปแบบเดิม ๆ ที่ผ่านมา
- แมพไฟล์ไปยังสิ่งที่ใช้จัดเก็บข้อมูล
- แบ็คอัพหรือสร้างไฟล์สำรอง
การจัดการอินพุต/เอาต์พุต การออกแบบระบบปฏิบัติการมีจุดมุ่งหมายข้อหนึ่งเพื่อควบคุมดีไวต์ที่เชื่อมต่ออยู่กับ คอมพิวเตอร์ ทั้งนี้เนื่องจากดีไวซ์เหล่านั้นมีความหลากหลายในเรื่องฟังก์ชันและความเร็ว การควบคุมจำเป็นต้องใช้วิธีการที่หลากหลายเช่นกัน วิธีการควบคุมเหล่านี้เรียกว่า “ระบบย่อยอินพุต/เอาต์พุต” ซึ่งเป็นส่วนหนึ่งของ kernel ที่แยกจากการจัดการหน่วยความจำที่ซับซ้อนในระบบเทคโนโลยีทางด้านดีไวซ์ได้แสดงให้เห็นข้อที่แย้งกัน 2 ด้าน ด้านแรกเทคโนโลยีทางด้านดีไวซ์ทำให้เราเห็นมาตรฐานที่มีการพัฒนาอินเทอร์เฟซของซอฟต์แวร์และฮาร์ดแวร์ที่เพิ่มมากขึ้น การพัฒนาทางด้านนี้ทำให้เรามีส่วนร่วมในปรับปรุงเพื่อพัฒนาดีไวซ์เพื่อนำมาใช้งานได้มากขึ้น ส่วนทางด้านอื่นเราได้เห็นดีไวซ์ที่มีความหลากหลายในการเลือกใช้ดีไวซ์ใหม่บางชิ้นก็ไม่เหมือนเดิมที่มีอยู่ เป็นสิ่งท้าทายที่ทำให้เราสามารถเลือกดีไวซ์ที่ต่างประเภทกันเพื่อใช้ระบบคอมพิวเตอร์และระบบปฎิบัติการเดียวกัน ไม่ว่าจะเป็นอินพุต/เอาต์พุตพื้นฐานเช่น พอร์ต, บัส และดีไวซ์ที่หลากหลายเพียงใด ระบบปฏิบัติการมี kernel ที่จัดการกับดีไวซ์เหล่านี้ได้เป็นอย่างดี kernel ของระบบปฏิบัติการก็คือโครงสร้างที่ใช้โมดูล “ดีไวซ์ไดร์เวอร์” ดีไวซ์ไดร์เวอร์ได้แสดงถึงรูปแบบเฉพาะในการอินเทอร์เฟซระหว่างดีไวซ์กับระบบย่อยอินพุต/เอาต์พุต ในขณะที่ระบบจะมีอินเทอร์เฟซมาตรฐานระหว่างแอปพลิเคชันกับระบบปฏิบัติการอยู่แล้วนั่นเอง
ระบบย่อยอินพุต/เอาต์พุตประกอบด้วย
- การจัดการหน่วยความจำที่รวมทั้งบัพเพอร์ ,แคช และสพูล
- อินเทอร์เฟซพื้นฐานของดีไวซ์ไดร์เวอร์
- ไดร์เวอร์สำหรับดีไวซ์ที่มีรูปเฉพาะ
การจัดการสื่อจัดเก็บข้อมูล (Storage Management) เนื่องจากวัตถุประสงค์หลักของระบบคอมพิวเตอร์คือการเอ็กซิคิวต์โปรแกรม ในระหว่างการเอ็กซิคิวต์โปรแกรมรวมทั้งข้อมูลเหล่านี้จะใช้ต้องอยู่บนหน่วยความจำหลัก แต่เนื่องจากหน่วยความจำหลักเหล่านี้มีขนาดเล็ก และเนื่องจากระบบคอมพิวเตอร์จำเป็นต้องมีไฟฟ้าหล่อเลี้ยง ถ้าไม่มีไฟฟ้าข้อมูลบนหน่วยความจำหลักก็จะสูญหายไปด้วย สิ่งนี้เองที่ระบบคอมพิวเตอร์จำเป็นต้องมีสื่อจัดเก็บข้อมูล เพื่อถ่ายข้อมูลจากหน่วยความจำหลักมาเก็บไว้ก่อน เพื่อสะดวกในการใช้งานภายหลัง ปัจจุบันระบบคอมพิวเตอร์ทั่วไปจะใช้ดิสก์เป็นสื่อในการจัดเก็บข้อมูลทั้งโปรแกรมและข้อมูล โปรแกรมส่วนใหญ่ทั้งที่เป็นตัวคอมไพล์, ตัวเอดิเตอร์, ตัวแปลภาษา และอื่น ๆ จะถูกโหลดขึ้นสู่หน่วยความจำหลักก่อน เพื่อทำงานกับหน่วยความจำโดยตรง และมีการจัดเก็บข้อมูลเป็นระยะเมื่อคุณสั่งให้จัดเก็บและระบบคอมพิวเตอร์ในปัจจุบันที่มีระบบปฏิบัติการที่ทรงประสิทธิภาพจะมีการแปลงหน่วยจัดเก็บข้อมูลบนดิสก์ให้เป็นหน่วยความจำเสมือน ตลอดเวลาที่มีการใช้งาน และจะคืนสภาพทั้งหมดให้กับระบบก่อนการชัตดาวน์ระบบ การจัดการสื่อจัดเก็บข้อมูลที่เป็นความรับผิดชอบของระบบปฏิบัติการมีดังนี้
- จัดการเนื้อที่ว่างบนดิสก์
- จัดการตำแหน่งจัดเก็บข้อมูล ที่อาจจะกระจัดกระจาย แต่เมื่อมีการใช้งานจะต้องทำงานได้เร็ว โดยจะมีพอยเตอร์ชี้ไปยังกลุ่มข้อมูลเดียวกัน
- การจัดแบ่งเวลาการใช้ดิสก์