3 คะแนน โดย GN⁺ 2024-06-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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

ซอร์สโค้ดและสื่อการเรียนรู้

เอกสารอ้างอิงสำหรับการอ่าน Unix V6 ต้นฉบับ

  • The PDP11/40 Processor Handbook เป็นเอกสารที่มีประโยชน์ในการทำความเข้าใจโค้ด Unix V6 ต้นฉบับ
    • PDF ที่อิงจากภาพสแกนไม่รองรับการค้นหาข้อความ
    • มี เวอร์ชันเว็บ ที่ทำดัชนีตามชื่อคำสั่งให้ด้วย

ขอความคิดเห็น

  • กำลังเปิดรับความคิดเห็นเกี่ยวกับประสบการณ์การใช้ Xv6, ประสบการณ์การนำไปใช้ในการสอน, สิ่งที่ควรปรับปรุงเพื่อให้เริ่มใช้งานได้ง่ายขึ้น, รวมถึงสิ่งที่ได้ผลดีและสิ่งที่ไม่ได้ผล
    • ช่องทางติดต่อคือ 61810-staff@lists.csail.mit.edu

1 ความคิดเห็น

 
GN⁺ 2024-06-09
ความคิดเห็นจาก Hacker News
  • ผมเคยเรียนวิชานี้ที่ MIT และ แนะนำระดับ 20/10 โดยเฉพาะสำหรับคนที่ไม่มีพื้นฐานด้าน systems
    หนังสือเรียนเข้าใจค่อนข้างง่าย และแล็บก็ยอดเยี่ยมมากสำหรับตรวจสอบความเข้าใจ แต่ในการลองครั้งแรก อาจจะข้ามไดรเวอร์เครือข่ายไปก่อนจะดีกว่า

    • อยากรู้ว่าคอร์สนี้ มีให้เรียนออนไลน์หรือไม่ ผมหาวิดีโอบันทึกการบรรยายใน OpenCourseWare ไม่เจอ และเจอเพลย์ลิสต์ YouTube เกี่ยวกับ xv6 ที่ไม่ใช่ของ MIT แต่ดูค่อนข้างดี: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • ผมเคยเรียนวิชาที่ UCI ซึ่งหยิบเนื้อหาส่วนใหญ่จากวิชาของ MIT มาปรับให้ง่ายขึ้นมาก แต่ก็ยังคุ้มที่จะแนะนำ
  • ผมเคยเรียนวิชาที่ 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 เป็นโอเพนซอร์ส แต่เวอร์ชันน่าจะสูงเกินไป

    • ถ้าอยากเห็นกระบวนการพัฒนาเคอร์เนล NT ให้ดี ลองอ่านหนังสือปี 1996 ชื่อ Show Stopper ดู
      เป็นความจริงที่ 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
    • ดูหนังสือชุด Windows Internals, ฉบับเก่า ๆ ของ MSTech Journal กับ DDJ และคู่มือ VMS ใน Digital archive ได้
    • ซอร์สโค้ด Windows 2000 หลุดอยู่บนอินเทอร์เน็ต และมีโอกาสสูงที่เวอร์ชันใหม่กว่านั้นก็เคยหลุดด้วย จริง ๆ แล้วมันเคยถูกใช้เป็นเครื่องมือการสอนด้วย
    • ไม่ใช่ว่า NT เวอร์ชันแรกใกล้เคียงกับ VMS
      เอกสาร VMS มีเยอะมาก และเดิมทีมีเอกสารประกอบยาวเป็นเมตร ๆ ตอนนี้ก็ยังขายอยู่ และยังดาวน์โหลดอิมเมจ VM สำหรับงานอดิเรกได้ฟรีด้วย
      OpenVMS ไม่ใช่โอเพนซอร์ส และคำว่าเวอร์ชันสูงเกินไปก็ไม่เป็นความจริง
      ก่อนถาม ควรตรวจสอบสมมติฐานเสมอ ถ้าอยากถามว่า “เพราะ A จึงทำ B ได้หรือไม่?” ต้องตรวจสอบก่อนว่า A เป็นจริงหรือเปล่า
    • OpenVMS เคยเป็นโอเพนซอร์สเหรอ?
  • สงสัยว่าทำไมต้องเป็น Unix v6 ไม่เข้าใจว่าทำไมถึงสอนด้วย การออกแบบอายุ 50 ปี
    ถ้าจะสอนพื้นฐานของระบบปฏิบัติการอย่าง scheduling, inter-process communication และการจัดการ address space ผมคิดว่า การออกแบบแบบ microkernel น่าจะดีกว่า

    • การศึกษาบรรพบุรุษของเทคโนโลยีที่ใช้กันแพร่หลายในปัจจุบัน เป็นวิธีที่ดีในการเรียนรู้ว่าเรามาถึงจุดนี้ได้อย่างไร การประนีประนอมอะไรเกิดขึ้นเพราะเหตุใด และเราอาจสูญเสียอะไรไปบ้าง
      เมื่อเจอเทคโนโลยีใหม่ในภายหลัง ก็จะเข้าใจได้ลึกขึ้น และช่วยเปิดมุมมองในอาชีพต่อไปด้วย
      ในฐานะคนที่พลาดประวัติศาสตร์ส่วนนั้นไป คิดว่าถ้าได้เรียนในมหาวิทยาลัยก็คงดีมาก
    • ต้องหัดเดินก่อนจะวิ่ง Xv6 เป็นพื้นฐานก็จริง แต่เป็นตำราเริ่มต้นที่ดีมากสำหรับนักศึกษาที่เพิ่งเจอแนวคิดเหล่านี้เป็นครั้งแรกในการเรียน พื้นฐานระบบปฏิบัติการ ภายในหนึ่งภาคการศึกษา
    • เหตุผลที่อาจารย์จำนวนมากเลือก Xv6 สำหรับวิชาระบบปฏิบัติการ คงไม่ใช่เพียงเพราะมันออกแบบยอดเยี่ยมเท่านั้น
      น่าจะเป็นเพราะมันดีพอ เรียบง่าย และสอนได้ง่ายภายในหนึ่งภาคการศึกษาที่นักศึกษายังต้องเรียนวิชาอื่นด้วย เลยสงสัยว่าคุณหมายความว่าการออกแบบแบบ microkernel ไม่เพียงดีกว่า แต่ยัง สอนง่ายกว่า ด้วยหรือเปล่า
    • สถาปัตยกรรม von Neumann ก็อายุ 80 ปีแล้ว ไม่เข้าใจว่าความเก่าแก่ของการออกแบบสำคัญตรงไหน ถ้ามันยังเป็นสถาปัตยกรรมที่เกี่ยวข้องมากที่สุดและใช้กันแพร่หลายที่สุดอยู่
      abstraction พื้นฐานของ Unix v6 ก็ยังใช้ได้อยู่ในปัจจุบัน
      ความแตกต่างหลักระหว่าง microkernel กับ monolithic kernel คือการแชร์ address space ระหว่าง user space กับ kernel อย่างไร แต่ผมไม่ค่อยเข้าใจว่าทำไมการออกแบบแบบ microkernel ถึงดีกว่า และก็สงสัยด้วยว่าทำไมควรสอนการออกแบบที่ไม่ได้ใช้กันแพร่หลาย
    • microkernel มีบทบาทสำคัญในระบบนิเวศซอฟต์แวร์ แต่ซอฟต์แวร์ส่วนใหญ่ที่เราเจอไม่ได้ถูกกำกับด้วย microkernel
      ซอฟต์แวร์ส่วนใหญ่ที่รันบนอินเทอร์เน็ตก็ไม่ได้รันบน microkernel และซอฟต์แวร์ส่วนใหญ่ที่หาได้บนอินเทอร์เน็ตก็เช่นกัน วิชาแบบนั้นดูจะเตรียมความพร้อมได้ไม่พอสำหรับการเข้าใจเคอร์เนลที่เรียนหรือพบเจอในการทำงาน
  • ถ้าคนที่เรียนเองอยากลองลงมือกับสิ่งนี้โดยตรง ควรใช้วิธีไหนดี

  • Plan 9 ก็เป็น codebase ที่เข้าใจได้ค่อนข้างเรียบง่ายเหมือนกัน

    • การตัดสินใจด้านการออกแบบบางอย่างของ Plan 9 น่านับถือ
      namespace ต่อโปรเซส, bind และแนวทางมองทุกอย่างเป็นไฟล์ ให้ความสง่างามที่หาได้ยากใน OS ตระกูล Unix อื่น ๆ
  • เทอมที่แล้วในวิชาระบบปฏิบัติการเราใช้ PintOS และอยากให้มีวิชาภาค 2 ที่ลงลึกกว่านี้