- Nhân Linux ngày nay là một dự án mã nguồn mở khổng lồ với 36 triệu dòng, nhưng phiên bản đầu tiên chỉ có 10.239 dòng (nếu bỏ chú thích/dòng trống thì là 8.670)
- Linux v0.01 nhờ sự gọn gàng của nó nên là điểm khởi đầu rất tốt để học nội bộ của một nhân hệ điều hành kiểu Unix
- v0.01 chỉ có 66 lời gọi hệ thống
- Tạo, xóa, ghi tệp/thư mục
- chmod, chown, pipe, fork, execve
- Chưa có khái niệm socket nên không hỗ trợ mạng
mount vẫn chưa được hiện thực
- Được hard-code cho kiến trúc Intel 386 (tác giả MINIX đã chỉ trích điều này)
strcpy được viết bằng assembly dùng lệnh i386
- Chỉ hỗ trợ các thiết bị PC/AT
- CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (chế độ văn bản), bàn phím Intel 8042 PS2 (assembly)
- Khi đó thậm chí còn chưa có thư mục drivers, mọi thứ được hard-code vào các subsystem
- Trong Makefile có chú thích ghi tên gốc mà Linus từng đặt là nhân "FREAX"
- Hệ thống tệp chỉ hỗ trợ MINIX (ext được lấy cảm hứng từ MINIX)
- Trong mã scheduler có một chú thích: "phần này là đoạn mã khá tốt, chạy được trong mọi môi trường nên sẽ không có lý do gì để thay đổi!"
- Tất nhiên hiện nay nó đã được sửa vì có nhiều cải tiến và thuật toán khác nhau được đưa vào, nên lời tiên đoán này đã sai
- Phần hiện thực kernel panic chỉ có đúng 5 dòng: in ra "kernel panic: nguyên nhân" rồi dừng hệ thống bằng
for(;;)
- Có đoạn gọi
fork(2) trong không gian kernel
- Trông là vậy, nhưng thực ra ngay trước đó có mẹo
move_to_user_mode()
- Linus không có thiết bị nào có hơn 8Mb RAM (vì bản thân ông không có để thử nên ai có thì tự kiểm tra giúp...)
- Khó biên dịch bằng toolchain hiện đại
- GCC có tương thích ngược, nhưng như vậy vẫn chưa đủ
- Linus có một bản GCC riêng với tùy chọn
-mstring-insns (có lẽ là tùy chọn hỗ trợ các lệnh chuỗi của x86)
2 bình luận
Thú vị đấy.
Ý kiến Hacker News
countertrong Linux, cho rằng nó sẽ giảm theo cấp số nhân xuống mức 2 * độ ưu tiên khi tác vụ không thể chạy.