10 điểm bởi GN⁺ 2025-11-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • Kernel Linux không phải là một tiến trình đơn lẻ mà là lớp lõi cấu thành toàn bộ hệ thống, một cấu trúc thường trực kết nối phần cứng và phần mềm
  • Điều phối system call, interrupt, scheduling để duy trì việc thực thi cho các tiến trình người dùng
  • Kernel hoạt động như một cấu trúc đa tầng được ảo hóa, ánh xạ, cô lập và kiểm soát
  • Đưa ra các tệp mã nguồn cốt lõi để học tập như init/main.c, kernel/fork.c, include/linux/sched.h, arch/x86/kernel/entry_64.S
  • Quan trọng như một tài liệu học nền tảng để hiểu cấu trúc và vai trò của kernel

Bản chất của kernel

  • Kernel là chính hệ thống chứ không phải một tiến trình, là lớp có thẩm quyền luôn hiện diện kết nối phần cứng và phần mềm
    • Đóng vai trò trung tâm trong việc hỗ trợ thực thi các tiến trình người dùng và quản lý tài nguyên hệ thống
  • Kernel là chủ thể phục vụ các tiến trình, điều phối system call (syscall), interrupt và scheduling để duy trì các tác vụ của người dùng

Cấu trúc phân tầng của hệ thống

  • Kernel được cấu thành từ một cấu trúc điều khiển được ảo hóa, ánh xạ và cô lập
    • Ở thời gian chạy, nhiều tầng tương tác với nhau để duy trì tính ổn định và khả năng kiểm soát của hệ thống

Các tệp dùng để học

  • Bốn tệp chính sau được nêu ra để hiểu cấu trúc kernel
    • init/main.c
    • kernel/fork.c
    • include/linux/sched.h
    • arch/x86/kernel/entry_64.S

Câu hỏi kiểm tra khái niệm

  • Khác biệt căn bản giữa kernel và tiến trình: B. Kernel không phải là tiến trình mà là chính hệ thống
  • Cách kernel hỗ trợ tiến trình người dùng: B. Điều phối system call, interrupt, scheduling
  • Đặc tính phân tầng của kernel: C. Cấu trúc được ảo hóa, ánh xạ, cô lập và kiểm soát

1 bình luận

 
GN⁺ 2025-11-28
Ý kiến trên Hacker News
  • Đúng là một dự án rất tuyệt. Nó làm tôi liên tưởng đến cấu trúc trang Talmud — kiểu nhiều lớp chú giải được chồng lên nhau trong cùng một trang suốt hàng trăm năm, điều đó rất thú vị
    Dù code không tuyến tính theo đúng cách đó, nhưng Linux Kernel Explorer này vẫn mang lại cảm giác tương tự về những ‘tầng chú thích’
    Tôi đặc biệt thích kiểu ghi chú đặt ở bên cạnh
    Link tham khảo liên quan: bố cục trang Talmud, ghi chú về bố cục Talmud

    • Có thể nói Talmud giống như siêu văn bản nguyên bản (không dám chắc, nhưng cảm giác là vậy)
  • Có vẻ như tôi đang bỏ sót điều gì đó. Từ rất lâu rồi người ta đã có thể duyệt mã nguồn kernel trên web — ví dụ như Elixir Bootlin
    Nhưng tôi không rõ cái này cung cấp chức năng bổ sung gì. Bootlin còn có tìm kiếm, còn ở đây thì tôi không thấy
    Nếu là thời buổi này thì tôi đã kỳ vọng các thứ như giải thích code bằng LLM hay đồ thị phụ thuộc

    • Tôi đã mong đợi kiểu “thời hoàng kim của kỷ nguyên AI!”, nhưng thực tế hơi đáng tiếc vì nó giống bản remix AI bọc lại các tính năng cũ bằng framework web mới hơn
  • GitHub API bị rate limit nên danh sách file không hiện
    Ai gặp cùng vấn đề thì đổi IP bằng VPN hoặc Cloudflare Wrap là được
    Nếu là phía nhà phát triển, có lẽ nên thêm tùy chọn đăng nhập GitHub hoặc một lớp cache để người dùng mới dễ truy cập hơn

    • Tôi đã nhận được phản hồi cảm ơn vì đã báo lỗi. Họ nói đã nhận ra phần triển khai quá đơn giản và sẽ cải thiện
  • Tôi rất thích những công cụ như thế này. Trước đây tôi từng dùng một công cụ tương tự do Red Hat tạo ra để phân tích mã nguồn máy bỏ phiếu điện tử của Brazil
    Khi đó tôi phụ trách việc sắp xếp các file và chức năng trùng lặp, và nó là một ứng dụng desktop dựa trên Motif UI

  • Tôi thực sự thích ý tưởng này. Mỗi khi khám phá code của các dự án phức tạp, tôi thường không biết nên bắt đầu từ đâu, còn công cụ này giúp nắm được cấu trúc cốt lõi rất nhanh
    Tuy vậy tôi có phát hiện một lỗi — ở Chapter 2, nếu mở các thư mục như “mm/” thì sẽ báo lỗi “Invalid file response”. Có lẽ nó đang cố mở thư mục như thể đó là file

    • Tôi cũng đã làm vài dự án nhằm hạ thấp rào cản để tiếp cận Linux kernel vì lý do tương tự
  • Explorer này có vẻ là công cụ mà rất nhiều lập trình viên đã cần từ lâu
    Mã nguồn kernel quá đồ sộ và phức tạp nên trước giờ tôi không biết bắt đầu từ đâu, còn cái này cho thấy cấu trúc như một tấm bản đồ
    Bạn có thể nhìn lướt qua cả VFS lẫn cách các module được nối với nhau, và dù vẫn có các vấn đề như giới hạn API hay lỗi thư mục, đây vẫn là một bước khởi đầu rất tốt

    • Nó làm tôi nhớ tới LXR trước đây.
      Nó cũng đã giúp tôi rất nhiều khi mới bắt đầu làm việc với Linux, và sau đó còn có Elixir được viết lại bằng Python cùng mã nguồn của nó
    • Nhưng cũng có câu hỏi rằng: “Không pull được master, cũng không grep hay gmake được, vậy thứ này thực sự để làm gì?”
  • Elixir Bootlin đã có từ lâu nhưng hoạt động trên di động tốt hơn

    • Tôi đã nhận được phản hồi cảm ơn về góp ý liên quan đến mobile responsiveness, và họ nói sẽ cải thiện
    • Elixir cho phép duyệt theo tag, nên phù hợp hơn để khám phá toàn bộ code chứ không chỉ ở cấp độ từng file
  • Trông thật sự rất tuyệt. Tác giả là fabiomaia.eu
    Tôi định sẽ đề nghị làm một công cụ tương tự cho Python
    Nó có vẻ sẽ hữu ích khi dạy các kỹ sư mới về cấu trúc repository của CPython

    • Cũng có người phản ứng kiểu “Sao không tự làm thử?”. Trong giới open source, chuyện kỳ vọng ai đó triển khai nhanh và xử lý issue cũng khá phổ biến
  • Tự dưng tôi thấy tò mò — đâu là phần ấn tượng nhất trong mã kernel?

    • Có lẽ là fs/select.c hoặc phần cơ chế polling
  • File arch/x86/kernel/entry_64.S ở Chapter 1 không mở được
    Nó cũng không xuất hiện trong cây thư mục
    (Hình như có một bình luận khác nhắc đến vấn đề này nhưng đã bị xóa)

    • Khả năng cao là gõ sai đường dẫn. Thực ra phải là arch/x86/entry/entry_64.S