- 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
Ý 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ó 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
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 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
Xin gửi lời khen tới công việc của Florent Revest
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ó 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ó
Elixir Bootlin đã có từ lâu nhưng hoạt động trên di động tốt hơn
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
Tự dưng tôi thấy tò mò — đâu là phần ấn tượng nhất trong mã kernel?
File
arch/x86/kernel/entry_64.Sở Chapter 1 không mở đượcNó 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)
arch/x86/entry/entry_64.S