3 điểm bởi GN⁺ 2024-06-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Xv6 là một hệ điều hành giáo dục đơn giản giống Unix, được tạo ra để học cấu trúc hệ điều hành và được dùng trong môn 6.1810 bậc đại học của MIT
  • Sau khi được phát triển vào mùa hè năm 2006, Xv6 đã được port sang RISC-V cho lớp 6.1810, phù hợp với môi trường giáo dục hiện đại
  • Mã nguồn và tài liệu được cung cấp qua các kho Git xv6-riscv, xv6-riscv-book, nên có thể tự build và đọc trực tiếp
  • Bối cảnh thiết kế và học tập bắt nguồn từ Unix V6Commentary on UNIX' 6th Edition của John Lions
  • Nếu muốn đọc cả mã Unix V6 gốc, các tài liệu tham khảo như phần chú giải của Lions, mã nguồn V6 và PDP11/40 Processor Handbook sẽ hữu ích

Xv6 và 6.1810

  • Xv6 là một hệ điều hành giáo dục đơn giản giống Unix
  • Được phát triển vào mùa hè năm 2006 và được port sang RISC-V cho môn 6.1810 bậc đại học của MIT

Mã nguồn và tài liệu học tập

Tài liệu tham khảo để đọc Unix V6 gốc

  • The PDP11/40 Processor Handbook là tài liệu hữu ích để hiểu mã Unix V6 gốc
    • Bản PDF dựa trên ảnh scan nên không tìm kiếm văn bản được
    • Cũng có phiên bản web được lập chỉ mục theo tên lệnh

Yêu cầu phản hồi

  • Nhóm đang nhận phản hồi về trải nghiệm sử dụng Xv6, kinh nghiệm đưa vào giảng dạy, các điểm cải thiện để giúp việc áp dụng dễ hơn, cũng như những gì hoạt động tốt và chưa tốt
    • Địa chỉ liên hệ là 61810-staff@lists.csail.mit.edu

1 bình luận

 
GN⁺ 2024-06-09
Ý kiến trên Hacker News
  • Tôi đã học lớp này ở MIT và khuyến nghị 20/10, đặc biệt phù hợp với những ai không có nền tảng về hệ thống
    Giáo trình khá dễ hiểu, còn các bài thực hành rất tốt để kiểm tra mức độ hiểu. Tuy nhiên, ở lần thử đầu tiên có lẽ nên bỏ qua phần driver mạng

    • Tôi thắc mắc liệu khóa học này có được cung cấp trực tuyến không. Tôi không tìm thấy bản ghi bài giảng trên OpenCourseWare, và dù không phải của MIT, tôi có tìm thấy một playlist YouTube liên quan đến xv6 trông khá ổn: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • Tôi đã học một lớp ở UCI lấy khá nhiều nội dung từ lớp của MIT và làm cho dễ hơn nhiều, nhưng vẫn đáng khuyến nghị
  • Tôi đã học một lớp ở MIT dùng HĐH này và nó thực sự xuất sắc
    Hôm nay tôi lại xem qua website của lớp, và thực tế là có thể tự học một mình. Ghi chú bài giảng, bài thực hành, repo xv6 có nhánh cho từng bài thực hành, cả cách tự chạy đều được đăng lên, mức độ công khai đáng kinh ngạc
    Bài thực hành đầu tiên: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
    Tôi dự định sớm tự làm lại toàn bộ khóa học đến cuối

  • Nhiều dự án trong môn hệ điều hành ở đại học của tôi là xây dựng thứ gì đó trên hệ điều hành xv6
    Một trong số đó là dự án viết scheduler cho xv, và đó chắc chắn là một cách tốt để học nhiều thành phần khác nhau của hệ điều hành

  • Ở một trường đại học tại Tây Ban Nha, họ đã hoặc đang dùng Plan 9 cho mục đích giảng dạy

  • Lúc mới nhìn tiêu đề, tôi tưởng đây là bản phát hành mới của trình xem ảnh xv cũ: http://www.trilon.com/xv/

  • Từ lâu tôi đã muốn hiểu kernel Windows NT. Có lẽ các phiên bản đầu sẽ đơn giản hơn nên phù hợp hơn
    Tôi nghe nói phiên bản đầu gần với VMS, không biết có đúng không. Cũng tò mò liệu có tài liệu VMS không; tôi nghe nói OpenVMS là mã nguồn mở, nhưng có vẻ phiên bản quá cao

    • Nếu muốn xem kỹ quá trình phát triển kernel NT, nên đọc cuốn sách năm 1996 Show Stopper
      Đúng là Dave Cutler đã dẫn dắt nhiều dự án trong nội bộ DEC, bao gồm cả các dự án liên quan đến VMS, nhưng thứ mà kernel Microsoft New Technology thừa hưởng từ VMS chỉ là di sản tinh thần ở mức thiết kế và kiến trúc
      Trước khi nhóm của Dave bị gạt ra ở DEC, ông đã đang làm một cuộc đại tu lớn hoặc một thế hệ kế nhiệm của VMS, và phần lớn tầm nhìn đó đã chuyển sang Windows, dù cũng có mặt phải hy sinh các mẫu thiết kế vững chắc của thế giới minicomputer
      Cutler xem đội MSDOS như những lập trình viên non tay đang chất chồng các giải pháp spaghetti cho sai vấn đề, nhưng vì Bill Gates đã nắm chặt thị trường bằng các hợp đồng OEM, Bill về cơ bản đã trao cho ông một tấm séc trắng để đưa ra một kernel thật sự nhằm cạnh tranh với thứ Steve đang xây ở NeXT
      Vì vậy, về tính năng hay hình thái, NT hoàn toàn không giống VMS, và về triển khai cũng hoàn toàn khác. VMS có một thư viện chuẩn C gọn gàng và bộ sản phẩm compiler. Tuy nhiên có thể xem đây là làn sóng những người từ phía minicomputer đi xuống để cạnh tranh trong thế giới microcomputer
      Muốn cảm nhận thêm bối cảnh thì nên xem các cuộc phỏng vấn Dave Plummer và Cutler trên YouTube
    • Có thể xem bộ sách Windows Internals, các số MSTech Journal và DDJ cũ, cùng các manual VMS trong kho lưu trữ của Digital
    • Mã nguồn Windows 2000 đã bị rò rỉ trên Internet, và rất có thể các phiên bản mới hơn cũng đã bị rò rỉ. Thực tế nó từng được dùng làm công cụ giảng dạy
    • Không phải phiên bản NT đầu tiên gần với VMS
      Tài liệu VMS có rất nhiều, ban đầu đi kèm cả vài mét tài liệu. Hiện vẫn đang được bán và cũng có thể tải image VM miễn phí cho người dùng sở thích
      OpenVMS không phải mã nguồn mở, và nói phiên bản quá cao cũng không đúng
      Trước khi đặt câu hỏi, luôn cần kiểm tra tiền đề. Nếu muốn hỏi “vì A nên có thể B không?”, trước hết hãy kiểm tra xem A có đúng không
    • OpenVMS từng là mã nguồn mở à?
  • Tôi thắc mắc vì sao lại là Unix v6. Không hiểu tại sao lại dạy bằng một thiết kế 50 năm tuổi
    Nếu muốn dạy các nền tảng của hệ điều hành như lập lịch, giao tiếp liên tiến trình, quản lý không gian địa chỉ, có vẻ thiết kế microkernel sẽ tốt hơn

    • Nghiên cứu các công nghệ tiền thân của những công nghệ đang được dùng rộng rãi ngày nay là một cách tốt để học chúng ta đã đi đến đây như thế nào, vì sao những đánh đổi nhất định đã được thực hiện, và có thể chúng ta đã mất những gì
      Khi sau này tiếp xúc với công nghệ mới, bạn có thể hiểu sâu hơn, và nó cũng mở rộng tầm nhìn cho sự nghiệp về sau
      Với tư cách người đã bỏ lỡ một phần lịch sử đó, tôi nghĩ nếu được học ở đại học thì hẳn đã rất tuyệt
    • Phải học đi trước khi học chạy. Xv6 tuy cơ bản, nhưng là một tài liệu nhập môn rất tốt để sinh viên lần đầu gặp các khái niệm này nắm được nền tảng hệ điều hành trong một học kỳ
    • Tôi nghĩ nhiều giáo sư chọn Xv6 cho môn hệ điều hành không chỉ vì nó có thiết kế xuất sắc
      Có lẽ họ chọn vì nó đủ tốt, đơn giản, và dễ dạy trong một học kỳ khi sinh viên còn học các môn khác. Tôi thắc mắc ý bạn có phải là thiết kế microkernel không chỉ tốt hơn mà còn dễ dạy hơn không
    • Kiến trúc von Neumann đã 80 năm tuổi. Tôi không hiểu vì sao tuổi đời của thiết kế lại quan trọng, nếu nó vẫn là kiến trúc liên quan nhất và được dùng rộng rãi nhất
      Các trừu tượng cơ bản của Unix v6 vẫn còn hợp lệ đến nay
      Khác biệt cốt lõi giữa microkernel và monolithic kernel là cách chia sẻ không gian địa chỉ giữa user space và kernel, và tôi không rõ vì sao thiết kế microkernel lại tốt hơn. Tôi cũng thắc mắc vì sao phải dạy một thiết kế không được dùng rộng rãi
    • Microkernel đóng vai trò quan trọng trong hệ sinh thái phần mềm, nhưng phần lớn phần mềm mà chúng ta gặp không được microkernel điều phối
      Phần lớn phần mềm chạy trên Internet cũng không chạy trên microkernel, và phần lớn phần mềm có thể tải từ Internet cũng vậy. Một lớp như thế có vẻ khó chuẩn bị đủ để hiểu các kernel mà bạn xử lý hoặc gặp trong công việc
  • Tôi thắc mắc một người tự học nên tiếp cận thế nào nếu muốn tự tay thử cái này

  • Plan 9 cũng là một codebase khá đơn giản để hiểu

    • Một số quyết định thiết kế của Plan 9 rất đáng tôn trọng
      Namespace theo từng process, bind, và cách xử lý mọi thứ như file mang lại một sự thanh lịch khó thấy ở các hệ điều hành họ Unix khác
  • Học kỳ trước trong môn hệ điều hành, chúng tôi dùng PintOS; giá mà có một lớp phần 2 đi sâu hơn