ยินดีต้อนรับสู่ unix.stackexchange.com!
ไม่มีคำตอบที่ง่ายสำหรับคำถามของคุณและห่างไกลผู้คนที่ดีกว่าฉันได้เขียนหนังสือทั้งในเรื่องของลินุกซ์และระบบปฏิบัติการทั่วไป
เกี่ยวกับขอบเขตของโครงการ: การเขียนระบบปฏิบัติการไม่ใช่เรื่องง่าย! แม้แต่ระบบปฏิบัติการขนาดเล็กเช่นมินิกซ์ก็เป็นสิ่งที่ค่อนข้างซับซ้อน! เพื่อให้แนวคิดเกี่ยวกับ Linux คิดถึงโปรแกรม C ที่คุณเขียนมา หลักสูตรมหาวิทยาลัยโดยเฉลี่ยมีแนวโน้มที่จะมี C สองสามพันบรรทัด ฉันคิดว่าโครงการปีสุดท้ายของฉันมีประมาณ 30-35,000 บรรทัดของ C ++ เคอร์เนล Linux มีรหัส C ประมาณ 13,000,000 บรรทัด
เหตุใดจึงเป็นทั้งหมดในไฟล์แยกกัน โครงการขนาดใหญ่จะถูกเก็บไว้ในไฟล์แยกต่างหากสำหรับเหตุผลด้านลอจิสติกและการปฏิบัติ ลองพิจารณาโหลดไฟล์ 13,000,000 บรรทัดลงในเครื่องมือแก้ไข! ก่อนที่จะจัดการโครงการขนาดใหญ่เช่น Linux คุณควรฝึกฝนทักษะ C ของคุณอย่างแน่นอนจนถึงจุดที่คำถาม 'ทำไมไฟล์หลายไฟล์' ตอบตัวเอง คุณควรจะสามารถอ่านรหัส Cได้ด้วยไม่ใช่แค่เขียนมัน (ยากกว่าที่คิดไว้ในตอนแรก)
คุณควรมีความเชี่ยวชาญใน C แน่นอนเคอร์เนลดูแลโดยคนหลายพันคนและคุณจะถูกเรียกให้เข้าใจสำนวน C ส่วนตัวของแต่ละคน (ได้รับภายใต้มาตรฐานการเข้ารหัสเคอร์เนลที่เข้มงวด แต่ยัง - ทุกคนมี รูปแบบการแก้ปัญหาของตนเอง)
หลังจากที่คุณได้รับ C Fu ให้แน่ใจว่าคุณเข้าใจระบบปฏิบัติการ สิ่งนี้จะช่วยให้คุณเข้าใจรหัส Linux บางตัวนั้นไม่จำเป็น เคอร์เนลที่เหมาะสมนั้นค่อนข้างเล็ก! มันคืออะไร bloats:
- ไดรเวอร์ฮาร์ดแวร์นับพันสำหรับอุปกรณ์ต่าง ๆ
- เลเยอร์ที่เป็นนามธรรมสำหรับคลาสอุปกรณ์ต่างๆเพื่อทำให้ API และการเขียนไดรเวอร์ง่ายขึ้น เช่นเรามี VFS สำหรับระบบไฟล์เลเยอร์กิจกรรมสำหรับอุปกรณ์อินพุตและอื่น ๆ
- จำนวนโค้ดและไฟล์ที่คอมไพล์ด้วยเงื่อนไขที่น่าตกใจสำหรับสถาปัตยกรรมต่างๆที่รัน Linux (ไม่ใช่เครื่อง Linux ทุกเครื่องที่เป็น Intel PC และบางอันก็แตกต่างจากที่คุณคาดไว้อย่างไม่น่าเชื่อ ) เคอร์เนลต้องจัดการกับความแตกต่างเหล่านี้และนั่นหมายถึงรหัสเพิ่มเติม
ปัญหาหนึ่งที่คุณจะพบได้ทันทีคือส่วนประกอบเหล่านี้ไม่สามารถถอดปลั๊กเปลี่ยนและเสียบกลับเข้าด้วยกันได้อีก มีความสัมพันธ์กันมากมาย กล่าวโดยสรุปการเปลี่ยนบิตของเคอร์เนลนั้นยุ่งยาก
เหตุผลที่คนแนะนำ Minix ให้คุณนั้นง่าย: มันเป็นระบบปฏิบัติการเต็มรูปแบบ แต่ไม่ได้รับภาระจากความต้องการของระบบที่ซับซ้อนเหมือน Linux รหัสมีขนาดเล็ก แต่ยังมีฟังก์ชั่นเต็มรูปแบบ ท้ายที่สุดแล้ว Linux รุ่นแรกได้รับแรงบันดาลใจจาก Minix
แน่นอนว่า Minix มีการสนับสนุนฮาร์ดแวร์น้อยลงในทุกวันนี้ แล้วอะไรล่ะ นั่นเป็นประโยชน์! คอมพิวเตอร์ยุคใหม่เสมือนจริงได้เป็นอย่างดี ใช้เพื่อประโยชน์ของคุณ: VM เพื่อเรียกใช้ Minix เบามากมันจะทำให้การพัฒนาเป็นไปอย่างไม่ราบรื่น
หากโครงการของคุณคือการสร้างระบบปฏิบัติการคุณสามารถทำได้แย่กว่าเริ่มต้นด้วยการศึกษา Minix คุณอาจต้องการซื้อและอ่านหนังสือ Minix ที่เขียนขึ้นพร้อมกับ ' ระบบปฏิบัติการสมัยใหม่ของ Andrew Tanenbaum '
นอกจากนี้คุณควรกำหนดเป้าหมายของคุณและกำหนดเงื่อนไขของคุณได้อย่างแม่นยำ หากคำจำกัดความของระบบปฏิบัติการของคุณเป็นของ Microsoft (ระบบปฏิบัติการที่มี GUI และชุดซอฟต์แวร์แบบเต็ม) คุณอาจอยู่ในโครงการที่ยาวมาก! ผู้คนหลายแสนคนทำงานกันมาตั้งแต่ทศวรรษ 1960 เพื่อนำพวกเราไปสู่จุดที่เราเป็นอยู่ตอนนี้
ในที่สุดจำการต่อสู้ของนักวิทยาศาสตร์คอมพิวเตอร์: ' ไม่ต้องพลิกโฉมพวงมาลัย! '(เราชอบทำข้อยกเว้นเมื่อเรียนรู้และเพื่อความสนุก :))