Selamat datang di unix.stackexchange.com!
Tidak ada jawaban mudah untuk pertanyaan Anda, dan orang-orang yang jauh lebih baik daripada saya telah menulis seluruh buku tentang masalah kernel Linux dan sistem operasi pada umumnya.
Tentang ruang lingkup proyek: menulis sistem operasi bukanlah tugas yang mudah! Bahkan OS dengan sengaja minimal seperti Minix adalah hal yang cukup kompleks! Untuk memberi Anda gambaran tentang Linux, pikirkan tentang program C yang telah Anda tulis sejauh ini. Kursus universitas rata-rata cenderung menjadi beberapa ribu baris C paling banyak. Saya pikir proyek tahun terakhir saya adalah sekitar 30-35.000 baris C ++. Kernel Linux kira-kira 13.000.000 baris kode C.
Mengapa semuanya ada di file terpisah? Proyek yang cukup besar disimpan dalam file terpisah untuk alasan logistik dan praktis. Pertimbangkan saja memuat 13.000.000 file baris ke dalam editor! Sebelum menangani proyek besar seperti Linux, Anda harus mengasah keterampilan C Anda ke titik di mana pertanyaan 'mengapa banyak file' menjawab sendiri. Anda juga harus dapat membaca kode C , bukan hanya menulisnya. (Lebih sulit dari yang terlihat pada awalnya)
Anda pasti harus sangat mahir dalam C. Kernel dikelola oleh ribuan orang, dan Anda akan dipanggil untuk memahami idiom C pribadi masing-masing (diberikan, dalam standar pengkodean kernel yang cukup kaku, tetapi masih - setiap orang memiliki gaya pemecahan masalah mereka sendiri).
Setelah Anda mendapatkan C fu Anda, pastikan Anda memahami sistem operasi. Ini akan membantu Anda memahami kode. Tidak semua Linux sangat penting. Kernelnya cukup kecil! Apa itu gemuk:
- Ribuan driver perangkat keras untuk berbagai perangkat.
- Lapisan abstraksi untuk berbagai kelas perangkat untuk menyederhanakan API dan penulisan driver. Misalnya, kami memiliki VFS untuk sistem file, lapisan Peristiwa untuk perangkat input, dan lain-lain.
- Mengejutkan jumlah kode dan file yang dikompilasi secara kondisional yang melayani berbagai arsitektur yang menjalankan Linux (tidak setiap mesin Linux adalah PC Intel, dan beberapa sangat berbeda dari yang Anda harapkan). Kernel harus berurusan dengan perbedaan-perbedaan ini, dan itu berarti lebih banyak kode.
Satu masalah yang akan Anda temukan segera adalah bahwa komponen-komponen ini tidak begitu mudah untuk dicabut, diganti, dan pasang kembali bersama-sama. Ada banyak keterkaitan. Singkatnya, mengubah bit dari kernel itu rumit.
Alasan orang menyarankan Minix kepada Anda adalah sederhana: ini adalah sistem operasi penuh, tetapi tidak dibebani oleh kebutuhan sistem yang sekompleks Linux. Kode ini kecil, tetapi masih menyediakan fungsionalitas penuh. Bagaimanapun, versi pertama Linux terinspirasi oleh Minix.
Tentu, Minix memiliki lebih sedikit dukungan perangkat keras hari ini. Terus? Itu adalah anugerah! Komputer modern melakukan virtualisasi dengan sangat baik. Gunakan itu untuk keuntungan Anda: VM untuk menjalankan Minix sangat ringan, itu akan membuat pengembangan menjadi dawdle.
Jika proyek Anda adalah untuk membangun sistem operasi, Anda bisa melakukan lebih buruk daripada memulai dengan mempelajari Minix. Anda mungkin juga ingin membeli dan membaca buku yang ditulis Minix untuk menemani, ' Sistem Operasi Modern Andrew Tanenbaum '.
Anda juga harus menetapkan target dan mendefinisikan istilah Anda dengan tepat . Jika definisi OS Anda sendiri adalah Microsoft (OS dengan GUI dan perangkat lunak lengkap), Anda mungkin berada dalam proyek yang sangat panjang! Ratusan ribu orang telah bekerja sejak 1960-an untuk membawa kita ke tempat kita sekarang.
Akhirnya, ingat seruan pertempuran Ilmuwan Komputer: ' jangan pernah menemukan kembali roda! '(kami ingin membuat pengecualian saat belajar, tentu saja. Dan untuk bersenang-senang :))