วันอังคารที่ 27 มกราคม พ.ศ. 2552

บทที่ 14

บทที่ 14
UNIX & Linux

1. ประวัติ
Linux เป็นระบบหนึ่งในหลายระบบที่คล้ายกับ UNIX ที่ออกแบบมาเพื่อให้คอมแพติเบิลกับ UNIX อย่างแท้จริงถึงแม้จะเกิดตามหลัง UNIX มานานก็ตามแต่ได้รับความนิยมอย่างรวดเร็วในช่วงเวลาที่ผ่านมา การพัฒนาเริ่มต้นในปี 1991 โดยนักชาวฟินแลนด์ที่ชื่อ Linus Torvalds แล้วตั้งชื่อตามชื่อตนเองว่า Linux ซึ่งระบบดังกล่าวเป็นระบบเล็กๆที่มี Kernel สำหรับโปรเซสเซอร์ 80386 ซึ่งเป็นโปรเซสเซอร์แบบ 32 บิตอย่างแท้จริงบนพีซีที่ใช้ซีพียูของอินเทล
2. จุดเด่นของ Linux
จุดเด่นของ Linux ที่ทำให้มีผู้ใช้เพิ่มจำนวนอย่างรวดเร็ว ตลอดจนมีการพัฒนาอย่างต่อเนื่องจนถึงปัจจุบันนี้ คือ
1. เป็นระบบปฏิบัติการที่ใช้ได้ฟรี
2. เป็นระบบปฏิบัติการแบบเปิด
3. คอมแพติเบิลกับ UNIX
4. ทำงานได้บนเครื่องซีพียูทั่วไป
ฯลฯ
3. หลักการออกแบบ
ภาพรวมของการออกแบบ Linux คล้ายกับ UNIX ดั้งเดิมที่เป็นแบบ nonmicrokernel ซึ่ง Linuxเป็นระบบที่เป็นมัลติยูเซอร์, มัลติแทสกิ้งที่เพียบพร้อมไปด้วยเครื่องมือที่คอมแพติเบิลกับ UNIX ส่วนระบบไฟล์ของ Linux ก็ยึดติดกับระบบไฟล์ดั้งเดิมของ UNIX รวมถึงโมเดลที่เป็นเน็ตเวิร์คก็ใช้ตามมาตรฐานของ UNIX รายละเอียดการออกแบบของ Linux กลายเป็นจุดเด่นในการพัฒนาของระบบปฏิบัติการ ถึงแม้ว่า Linux จะรันได้ลายแพล็ตฟอร์ม แต่ Linux ก็พัฒนาเฉพาะบนสถาปัตยกรรมพีซี ปัจจุบันนี้ Linux รันเป็นอย่างดีบนเครื่องที่เป็นมัลติโปรเซสเซอร์ที่มีหน่วยความจำเป็นร้อย ๆ เมกะไบต์ และบนเนื้อที่ฮาร์ดดิสก์หลายกิกะไบต์ แต่ Linux ยังคงเป็นระบบปฏิบัติการที่ประโยชน์หน่วยความจำที่น้อยกว่า 4 เมกะไบต์ได้เป็นอย่างดี
4. Kernel Modules
โมดูลที่สนับสนุนอยู่ใน Linux มี 3 คอมโพเนนต์ ดังนี้
- Moduld Management
- Driver Registration
- Conflict-resolution Mechanism


5. การจัดการโปรเซส
เนื่องจาก Linux เป็นระบบปฏิบัติการที่สนับสนุนการทำงานในลักษณะมัลติแทสกิ้ง ทำให้ต้องมีการจัดการโปรเซส และเนื่องจากโปรเซสเป็น context พื้นฐานที่ระบบปฏิบัติการให้บริการกับผู้ใช้ ซึ่ง Linux มีความคอมแพติเบิลกับ UNIX ทำให้ต้องใช้โมเดลที่เหมือนกับ UNIX อย่างไรก็ตามยังมีข้อแตกต่างเพียงเล็กน้อยที่ Linux นำมาใช้ ในหัวข้อนี้จะแนะนำการจัดการโปรเซสใน เพื่อเป็นแนวการศึกษาการทำงานของ Linux ต่อไป
1.1 โมเดลของ Fork/Exec
1.1.1 identity ของโปรเซส
1.1.2 environment ของโปรเซส
1.1.3 context ของโปรเซส
1.2 โปรเซส และ Thread
6. การจัดเวลาซีพียู (CPU Scheduling)
การจัดเวลาซีพียู เป็นงานที่แบ่งเวลาซีพียูให้กับงานต่างๆในระบบปฏิบัติการ โดยปกติเราจะคิดเกี่ยวกับ Scheduling ในเรื่องของการรันและการอินเทอร์รัพต์โปรเซส แต่ Scheduling มีความสำคัญกับ Linux ในการรันงานของ Kernel ที่รวมทั้งงานที่ร้องขอมาจากการรันโปรเซส และงานที่เอ็กซิคิวต์ภายในดีไวซ์ด์เวอร์
7. การจัดการหน่วยความจำ
การจัดการหน่วยความจำใน Linux มี 2 คอมโพเนนต์คือการจัดการหน่วยความจำทางกายภาพที่เป็นการกำหนดการใช้งานและการปล่อยเป็นอิสระของเพจและบล็อกหน่วยความจำ ส่วนคอมโพเนนต์ที่สองเป็นการจัดการหน่วยความจำเสมือนซึ่งเป็นการแมพหน่วยความจำในแอ็ดเดรสเมื่อรันโปรเซส
8. ระบบไฟล์
9. การจัดการอุปกรณ์อินพุต/เอาต์พุต
10. การติดต่อระหว่างโปรเซส
11. เน็ตเวิร์ค
12. การรักษาความปลอดภัย
การรักษาความปลอดภัยแบ่งเป็น 2 กลุ่มคือ การรับรอง (Authentication) และการควบคุมการแอ็กเซส (Access Control)



แบบฝึกหัดบทที่ 14
1. จงยกตัวอย่างจุดเด่นของ Linuxมาซัก 5 ตัวอย่าง
2. Linux System ประกอบด้วยโค้ดกี่ส่วนอะไรบ้าง
3. โมดูลที่สนับสนุนอยู่ใน Linux มีกี่คอมโพเนนต์อะไรบ้าง
4. Driver Registration เป็นคอมโพเนนต์อย่างไร
5. หลักพื้นฐานในการจัดการโปรเซสของ UNIX แบ่งเป็นกี่ปฏิบัติการอย่างไร
6. identity ของโปรเซสประกอบด้วยไอเท็มหลักๆอะไรบ้าง
7. การจัดการหน่วยความจำใน Linux มีกี่คอมโพเนนต์อะไรบ้าง
8. หน่วยความจำเสมือนใน Linux จะดูแลพื้นที่แอ็คเดรสของโปรเซสกี่มุม อะไรบ้าง
9. ออปเจ็คต์หลักที่กำหนดโดย VFS มีกี่ออปเจ็คต์อะไรบ้าง
10. กลไกของ UNIX ที่แจ้งให้โปรเซสทราบว่ามีอีเวนต์เกิดขึ้นคืออะไร
11. การแชร์ข้อมูลระหว่างโปรเซสสามารถทำได้กี่วิธี อะไรบ้าง
12. โปรโตคอล IP ทำหน้าที่อะไร
13. โปรโตคอลใดใช้ในการส่งข้อผิดพลาดและส่งข้อมูลสเตตัสระหว่างโฮสต์
14. การรักษาความปลอดภัยแบ่งเป็นกี่กลุ่มอะไรบ้าง
15. เน็ตเวิร์คใน Linux Kernel แบ่งซอฟต์แวร์เป็นกี่เลเยอร์



เฉลยแบบฝึกหัดบทที่ 14
1. 1. เป็นระบบปฏิบัติการทีใช้ได้ฟรี 2. เป็นระบบปฏิบัติการแบบเปิด 3. คอมเพติเบิลกับ UNIX
4. ทำงานได้บนเครื่องซีพีทั่วไป 5. ทำงานร่วมกับ DOS และ Windows
2. ประกอบด้วยโค้ด 3 ส่วน 1. Kernel 2. ไลบรารีระบบ 3. ยูทิลิตี้ระบบ
3. มี 3 คอมโพเนนต์ 1. Module Management 2. Driver Registration 3. Conflict-resolution Mechanism
4. เป็นคอมโพเนนต์ที่ใช้ในการลงทะเบียนไดร์เวอร์ใหม่
5. แบ่งเป็น 2 ปฏิบัติการ คือการสร้างโปรเซสและการรันโปรแกรมใหม่
6. หมายเลขโปรเซส, Credential, Personality
7. มี 2 คอมโพเนนต์ คือ การจัดการหน่วยความจำทางกายภาพและการจัดการหน่วยความจำเสมือน
8. เป็น 2 มุมมองคือ เป็นชุดของขอบเขตและเป็นชุดของเพจ
9. มี 3 ออปเจกต์คือ inode-object,file-object และ file-system-object
10. สัญญาณ (Signal)
11. 2วิธีคือ การใช้หน่วยความจำร่วมและออปเจ็กต์ที่เป็นหน่วยความจำร่วม
12. ทำหน้าที่จัดเส้นทางระหว่างโฮสต์ที่อยู่ที่ต่างๆในเน็ตเวิร์ค
13. โปรโตคอล ICMP
14. 2 กลุ่ม คือ การรับรองและการควบคุมการแอ็กเซส
15. 3 เลเยอร์ คือ ซ็อกเก็ตอินเทอร์เฟซ, โปรโตคอลไดร์เวอร์, เน็ตเวิร์คดีไวซ์ไดร์เวอร์

ไม่มีความคิดเห็น:

แสดงความคิดเห็น