Xv6 ระบบปฏิบัติการเพื่อการศึกษาแบบคล้าย Unix ที่เรียบง่าย
(pdos.csail.mit.edu)- Xv6 เป็นระบบปฏิบัติการเพื่อการศึกษาแบบคล้าย Unix ที่สร้างขึ้นเพื่อเรียนรู้โครงสร้างของระบบปฏิบัติการ และใช้ในวิชาระดับปริญญาตรีของ MIT คือ 6.1810
- หลังจากพัฒนาขึ้นในช่วงฤดูร้อนปี 2006 ก็ถูกพอร์ตไปยัง RISC-V สำหรับการเรียนการสอนวิชา 6.1810 เพื่อให้เหมาะกับสภาพแวดล้อมการศึกษาสมัยใหม่
- ซอร์สโค้ดและเอกสารถูกเผยแพร่ผ่าน Git repository
xv6-riscvและxv6-riscv-bookซึ่งสามารถนำไป build และอ่านศึกษาได้ด้วยตนเอง - แนวทางการออกแบบและบริบทการเรียนรู้มีรากฐานมาจาก Unix V6 และ Commentary on UNIX' 6th Edition ของ John Lions
- หากต้องการอ่านโค้ด Unix V6 ต้นฉบับควบคู่กัน เอกสารอ้างอิงอย่างคำอธิบายของ Lions, ซอร์ส V6 และ PDP11/40 Processor Handbook จะเป็นประโยชน์
Xv6 และ 6.1810
- Xv6 เป็นระบบปฏิบัติการเพื่อการศึกษาแบบคล้าย Unix ที่เรียบง่าย
- พัฒนาขึ้นในช่วงฤดูร้อนปี 2006 และถูกพอร์ตไปยัง RISC-V สำหรับวิชาระดับปริญญาตรีของ MIT คือ 6.1810
ซอร์สโค้ดและสื่อการเรียนรู้
- สามารถรับซอร์ส Xv6 ล่าสุดได้ด้วยคำสั่งต่อไปนี้
- เอกสาร Xv6 ล่าสุดถูกเผยแพร่แยกเป็นอีก repository หนึ่ง
- Xv6 ได้รับแรงบันดาลใจจาก Unix V6 และ Commentary on UNIX' 6th Edition ของ John Lions
- Lions commentary เวอร์ชันออนไลน์
- Unix V6 source code
- V6 ซอร์สโค้ด ผ่าน The Unix Heritage Society
เอกสารอ้างอิงสำหรับการอ่าน Unix V6 ต้นฉบับ
- The PDP11/40 Processor Handbook เป็นเอกสารที่มีประโยชน์ในการทำความเข้าใจโค้ด Unix V6 ต้นฉบับ
- PDF ที่อิงจากภาพสแกนไม่รองรับการค้นหาข้อความ
- มี เวอร์ชันเว็บ ที่ทำดัชนีตามชื่อคำสั่งให้ด้วย
ขอความคิดเห็น
- กำลังเปิดรับความคิดเห็นเกี่ยวกับประสบการณ์การใช้ Xv6, ประสบการณ์การนำไปใช้ในการสอน, สิ่งที่ควรปรับปรุงเพื่อให้เริ่มใช้งานได้ง่ายขึ้น, รวมถึงสิ่งที่ได้ผลดีและสิ่งที่ไม่ได้ผล
- ช่องทางติดต่อคือ
61810-staff@lists.csail.mit.edu
- ช่องทางติดต่อคือ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมเคยเรียนวิชานี้ที่ MIT และ แนะนำระดับ 20/10 โดยเฉพาะสำหรับคนที่ไม่มีพื้นฐานด้าน systems
หนังสือเรียนเข้าใจค่อนข้างง่าย และแล็บก็ยอดเยี่ยมมากสำหรับตรวจสอบความเข้าใจ แต่ในการลองครั้งแรก อาจจะข้ามไดรเวอร์เครือข่ายไปก่อนจะดีกว่า
ผมเคยเรียนวิชาที่ MIT ซึ่งใช้ OS ตัวนี้ และมันยอดเยี่ยมจริง ๆ
วันนี้ยังเข้าไปดูเว็บไซต์ของวิชาอยู่เลย จริง ๆ แล้ว เรียนเองคนเดียว ได้แทบทั้งหมด มีทั้งโน้ตบรรยาย แล็บ รีโพซิทอรี xv6 ที่มีบรานช์สำหรับแต่ละแล็บ รวมถึงวิธีรันด้วยตัวเอง ครบจนระดับความเปิดกว้างน่าทึ่งมาก
แล็บแรก: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
คิดว่าเร็ว ๆ นี้จะลองกลับไปทำทั้งคอร์สให้จบด้วยตัวเอง
โปรเจกต์จำนวนมากในวิชาระบบปฏิบัติการระดับมหาวิทยาลัยของผมเป็นการสร้างอะไรบางอย่างบน ระบบปฏิบัติการ xv6
หนึ่งในนั้นคือโปรเจกต์สร้าง scheduler สำหรับ xv และเป็นวิธีที่ดีมากจริง ๆ ในการเรียนรู้องค์ประกอบต่าง ๆ ของระบบปฏิบัติการ
มหาวิทยาลัยแห่งหนึ่งในสเปนเคยใช้ หรืออาจยังใช้อยู่ Plan 9 เพื่อการสอน
ตอนเห็นชื่อครั้งแรก นึกว่าเป็นรีลีสใหม่ของ โปรแกรมดูภาพ xv เก่า ๆ เสียอีก: http://www.trilon.com/xv/
ผมอยากเข้าใจ เคอร์เนล Windows NT มาตั้งนานแล้ว บางทีเวอร์ชันแรก ๆ น่าจะดีกว่า เพราะน่าจะเรียบง่ายกว่า
เคยได้ยินว่าเวอร์ชันแรกใกล้เคียงกับ VMS เลยสงสัยว่าจริงไหม และก็สงสัยด้วยว่ามีเอกสาร VMS อยู่หรือเปล่า ได้ยินว่า OpenVMS เป็นโอเพนซอร์ส แต่เวอร์ชันน่าจะสูงเกินไป
เป็นความจริงที่ Dave Cutler เคยนำหลายโครงการภายใน DEC รวมถึงโครงการที่เกี่ยวกับ VMS แต่สิ่งที่เคอร์เนล Microsoft New Technology รับต่อมาจาก VMS มีเพียงมรดกทางความคิดในระดับการออกแบบและสถาปัตยกรรมเท่านั้น
ก่อนที่ทีมของ Dave จะถูกเบียดออกจาก DEC เขากำลังทำการปรับปรุงใหญ่หรือภาคต่อของ VMS อยู่แล้ว และวิสัยทัศน์จำนวนมากในนั้นก็ย้ายไปสู่ Windows แต่ก็มีบางด้านที่ต้องแลกด้วยแพตเทิร์นการออกแบบอันแข็งแรงของฝั่งมินิคอมพิวเตอร์
Cutler มองทีม MSDOS ว่าเป็นโปรแกรมเมอร์มือใหม่ที่กองโซลูชันแบบสปาเกตตีไว้บนปัญหาที่ผิด แต่เพราะ Bill Gates กุมตลาดแน่นด้วยสัญญา OEM อยู่แล้ว Bill จึงมอบเช็คเปล่าให้เขาในทางปฏิบัติ เพื่อให้เขาสร้างเคอร์เนลจริง ๆ ที่จะแข่งกับสิ่งที่ Steve กำลังทำที่ NeXT
ดังนั้นในแง่ฟีเจอร์หรือรูปแบบ NT จึงไม่เหมือน VMS เลย และในแง่การอิมพลีเมนต์ก็แตกต่างโดยสิ้นเชิง VMS มีไลบรารีมาตรฐาน C และชุดคอมไพเลอร์ที่สะอาดเรียบร้อย อย่างไรก็ดี อาจมองได้ว่าเป็นกระแสของคนฝั่งมินิคอมพิวเตอร์ที่ลงมาแข่งขันในโลกไมโครคอมพิวเตอร์
ถ้าอยากสัมผัสบรรยากาศเพิ่มเติม ลองดูวิดีโอสัมภาษณ์ Dave Plummer กับ Cutler บน YouTube
เอกสาร VMS มีเยอะมาก และเดิมทีมีเอกสารประกอบยาวเป็นเมตร ๆ ตอนนี้ก็ยังขายอยู่ และยังดาวน์โหลดอิมเมจ VM สำหรับงานอดิเรกได้ฟรีด้วย
OpenVMS ไม่ใช่โอเพนซอร์ส และคำว่าเวอร์ชันสูงเกินไปก็ไม่เป็นความจริง
ก่อนถาม ควรตรวจสอบสมมติฐานเสมอ ถ้าอยากถามว่า “เพราะ A จึงทำ B ได้หรือไม่?” ต้องตรวจสอบก่อนว่า A เป็นจริงหรือเปล่า
สงสัยว่าทำไมต้องเป็น Unix v6 ไม่เข้าใจว่าทำไมถึงสอนด้วย การออกแบบอายุ 50 ปี
ถ้าจะสอนพื้นฐานของระบบปฏิบัติการอย่าง scheduling, inter-process communication และการจัดการ address space ผมคิดว่า การออกแบบแบบ microkernel น่าจะดีกว่า
เมื่อเจอเทคโนโลยีใหม่ในภายหลัง ก็จะเข้าใจได้ลึกขึ้น และช่วยเปิดมุมมองในอาชีพต่อไปด้วย
ในฐานะคนที่พลาดประวัติศาสตร์ส่วนนั้นไป คิดว่าถ้าได้เรียนในมหาวิทยาลัยก็คงดีมาก
น่าจะเป็นเพราะมันดีพอ เรียบง่าย และสอนได้ง่ายภายในหนึ่งภาคการศึกษาที่นักศึกษายังต้องเรียนวิชาอื่นด้วย เลยสงสัยว่าคุณหมายความว่าการออกแบบแบบ microkernel ไม่เพียงดีกว่า แต่ยัง สอนง่ายกว่า ด้วยหรือเปล่า
abstraction พื้นฐานของ Unix v6 ก็ยังใช้ได้อยู่ในปัจจุบัน
ความแตกต่างหลักระหว่าง microkernel กับ monolithic kernel คือการแชร์ address space ระหว่าง user space กับ kernel อย่างไร แต่ผมไม่ค่อยเข้าใจว่าทำไมการออกแบบแบบ microkernel ถึงดีกว่า และก็สงสัยด้วยว่าทำไมควรสอนการออกแบบที่ไม่ได้ใช้กันแพร่หลาย
ซอฟต์แวร์ส่วนใหญ่ที่รันบนอินเทอร์เน็ตก็ไม่ได้รันบน microkernel และซอฟต์แวร์ส่วนใหญ่ที่หาได้บนอินเทอร์เน็ตก็เช่นกัน วิชาแบบนั้นดูจะเตรียมความพร้อมได้ไม่พอสำหรับการเข้าใจเคอร์เนลที่เรียนหรือพบเจอในการทำงาน
ถ้าคนที่เรียนเองอยากลองลงมือกับสิ่งนี้โดยตรง ควรใช้วิธีไหนดี
Plan 9 ก็เป็น codebase ที่เข้าใจได้ค่อนข้างเรียบง่ายเหมือนกัน
namespace ต่อโปรเซส, bind และแนวทางมองทุกอย่างเป็นไฟล์ ให้ความสง่างามที่หาได้ยากใน OS ตระกูล Unix อื่น ๆ
เทอมที่แล้วในวิชาระบบปฏิบัติการเราใช้ PintOS และอยากให้มีวิชาภาค 2 ที่ลงลึกกว่านี้