Chào mừng bạn đến với unix.stackexchange.com!
Không có câu trả lời dễ dàng cho câu hỏi của bạn, và cho đến nay người tốt hơn tôi đã viết toàn bộ cuốn sách về chủ đề hạt nhân Linux và các hệ điều hành nói chung.
Về phạm vi của dự án: viết một hệ điều hành không phải là một nhiệm vụ đơn giản! Ngay cả một hệ điều hành tối thiểu có chủ đích như Minix cũng là một điều khá phức tạp! Để cho bạn một ý tưởng về Linux, hãy nghĩ về các chương trình C bạn đã viết cho đến nay. Các khóa học đại học trung bình có xu hướng nhiều nhất là vài nghìn dòng C. Tôi nghĩ rằng dự án năm cuối cùng của tôi là khoảng 30 dòng35.000 dòng C ++. Nhân Linux có khoảng 13.000.000 dòng mã C.
Tại sao tất cả trong các tập tin riêng biệt? Các dự án lớn được lưu trữ trong các tệp riêng biệt vì lý do hậu cần và thực tế. Chỉ cần xem xét tải một tập tin dòng 13.000.000 vào một trình soạn thảo! Trước khi giải quyết một dự án lớn như Linux, bạn chắc chắn nên trau dồi kỹ năng C của mình đến mức câu hỏi 'tại sao nhiều tệp' tự trả lời. Bạn cũng có thể đọc mã C , không chỉ viết nó. (khó hơn lúc đầu)
Bạn chắc chắn phải rất thành thạo C. Hạt nhân được duy trì bởi hàng ngàn người và bạn sẽ được gọi để hiểu các thành ngữ C cá nhân của mỗi người trong số họ (được cấp, trong các tiêu chuẩn mã hóa hạt nhân khá cứng nhắc, nhưng vẫn vậy - mọi người đều có phong cách giải quyết vấn đề của riêng họ).
Sau khi bạn nhận được C fu của mình, hãy chắc chắn rằng bạn hiểu hệ điều hành. Điều này sẽ giúp bạn hiểu mã. Không phải tất cả Linux là cần thiết. Hạt nhân thích hợp là khá nhỏ! Nó nở là gì:
- Hàng ngàn trình điều khiển phần cứng cho các thiết bị khác nhau.
- Các lớp trừu tượng cho các lớp thiết bị khác nhau để đơn giản hóa API và viết trình điều khiển. Ví dụ: chúng ta có VFS cho các hệ thống tập tin, lớp Sự kiện cho các thiết bị đầu vào, et cetera.
- Số lượng mã và tệp được biên dịch có điều kiện phục vụ cho các kiến trúc khác nhau chạy Linux (không phải mọi máy Linux đều là PC của Intel và một số khác biệt đáng kinh ngạc so với những gì bạn có thể mong đợi). Hạt nhân phải đối phó với những khác biệt này, và điều đó có nghĩa là nhiều mã hơn.
Một vấn đề bạn sẽ thấy ngay lập tức là các thành phần này không dễ dàng rút phích cắm, thay đổi và cắm lại với nhau. Có rất nhiều mối liên hệ. Nói tóm lại, việc thay đổi bit của kernel là khó khăn.
Lý do mọi người đề xuất Minix cho bạn rất đơn giản: đó là một hệ điều hành đầy đủ, nhưng nó không bị gánh nặng bởi nhu cầu của một hệ thống phức tạp như Linux. Mã này nhỏ, nhưng vẫn cung cấp đầy đủ chức năng. Rốt cuộc, các phiên bản đầu tiên của Linux được lấy cảm hứng từ Minix.
Chắc chắn, Minix có ít hỗ trợ phần cứng hơn những ngày này. Vậy thì sao? Đó là một lợi ích! Máy tính hiện đại ảo hóa rất tốt. Sử dụng điều đó cho lợi thế của bạn: một VM để chạy Minix rất nhẹ, nó sẽ làm cho sự phát triển trở thành một bước ngoặt.
Nếu dự án của bạn là xây dựng một hệ điều hành, bạn có thể làm điều tồi tệ hơn là bắt đầu bằng cách nghiên cứu Minix. Bạn cũng có thể muốn mua và đọc cuốn sách Minix được viết kèm theo, ' Hệ điều hành hiện đại của Andrew Tanenbaum '.
Bạn cũng nên đặt mục tiêu và xác định chính xác các điều khoản của bạn . Nếu định nghĩa riêng của bạn về HĐH là của Microsoft (HĐH có GUI và bộ phần mềm đầy đủ), bạn có thể tham gia vào một dự án rất dài! Hàng trăm ngàn người đã làm việc kể từ những năm 1960 để đưa chúng ta đến nơi chúng ta đang ở, sau tất cả.
Cuối cùng, hãy nhớ tiếng kêu chiến đấu của Nhà khoa học máy tính: ' không bao giờ phát minh lại bánh xe! '(tất nhiên chúng tôi muốn đưa ra ngoại lệ khi học, và để giải trí :))