Mengapa Linux begitu baik untuk platform perangkat keras yang berbeda?

22

Mengapa Linux berjalan dengan baik pada berbagai jenis mesin - desktop, laptop, server, perangkat tertanam, ponsel, dll? Apakah ini terutama karena sistem terbuka, sehingga ada bagian yang dapat dimodifikasi untuk bekerja di lingkungan yang berbeda? Atau adakah properti lain dari kernel dan / atau sistem Linux yang membuatnya lebih mudah untuk OS ini bekerja pada berbagai macam platform?

Justin Ethier
sumber
7
Saya pikir Anda sudah memiliki sebagian jawabannya - keterbukaan memudahkan berbagai kelompok orang atau bisnis untuk menyesuaikannya dengan kebutuhan mereka. Karena kernel dikritik karena bersifat monolitik, saya tidak yakin desain awalnya sengaja dioptimalkan untuk skalabilitas dengan cara apa pun. Saya akan menebak bahwa sejumlah besar orang telah bekerja pada inti Linux daripada pada sistem operasi lain - dan mungkin ini telah memaksa pengelola inti untuk berhati-hati dalam membagi kode menjadi beberapa bagian dengan antarmuka yang jelas? Di sisi lain beberapa varian BSD memiliki portabilitas sebagai tujuan eksplisit.
RedGrittyBrick
@ Red: Itu dikritik karena menjadi kernel monolitik dan bukan kernel mikro - itu tidak ada hubungannya dengan desain itu sekalipun. Ini berkaitan dengan berapa banyak kernel berjalan di userspace dan berapa banyak berjalan di kernel. Kernel Windows NT (misalnya) sangat modular, tetapi secara teknis masih monolitik karena sebagian besar layanan (yaitu sistem file) berjalan dalam mode kernel daripada mode pengguna.
Billy ONeal
@Illy: Windows NT secara teknis adalah kernel hybrid . Saya percaya Microsoft masih mempertahankan subsistem menggunakan pesan yang lewat dan menjaga kemampuan untuk memindahkan potongan ke ruang pengguna seperti yang diinginkan. Mereka melakukan ini dengan sistem grafis di Vista: sekarang di ruang pengguna setelah menjadi ruang kernel sejak NT 4.0
Zan Lynx
2
@ Zan: Saya mendapat kesan bahwa status sebagai "kernel hybrid" diperselisihkan . Karena itu saya katakan "monolitik". NT tentu memiliki banyak fitur monolitik bahkan jika itu dibagi menjadi potongan-potongan perpustakaan-esque.
Billy ONeal
@Illy: Sepertinya saya bahwa jika kernel Anda dapat diubah menjadi micro-kernel hanya dengan mengubah beberapa opsi dan membangun kembali, maka itu adalah sesuatu selain monolitik bahkan jika biner build yang paling sering digunakan meletakkan semuanya di ruang alamat kernel.
Zan Lynx

Jawaban:

31

Walaupun keterbukaan jelas merupakan bagian dari itu, saya pikir faktor kuncinya adalah desakan Linus Torvald yang terus-menerus bahwa semua pekerjaan, dari besar hingga kecil, memiliki tempat di kernel Linux mainline, asalkan itu dilakukan dengan baik. Jika dia memutuskan pada suatu titik untuk menarik garis dan berkata "oke, untuk perangkat keras komputer super mewah itu, kita perlu garpu", maka varian high-end dan sistem kecil yang benar-benar terpisah mungkin telah dikembangkan. Karena itu, alih-alih orang-orang telah melakukan pekerjaan lebih keras untuk membuat semuanya bermain bersama dengan relatif baik.

Dan, kludges yang memungkinkan satu sisi hal-hal yang merugikan yang lain tidak, pada umumnya, diizinkan masuk - lagi, memaksa orang untuk memecahkan masalah dengan cara yang lebih sulit tetapi lebih benar, yang ternyata biasanya lebih mudah untuk maju dari setelah apa pun yang diperlukan, lumpur menjadi catatan sejarah.

Dari wawancara beberapa tahun yang lalu :

T: Linux adalah sistem serbaguna. Ini memasok PC, server besar, ponsel dan sepuluh atau lebih perangkat lain. Dari posisi istimewa Anda, sektor mana yang akan menjadi tempat dimana Linux akan mengekspresikan potensi tertinggi?

A: Saya pikir kekuatan sebenarnya dari Linux adalah persis bahwa ini bukan tentang satu ceruk. Semua orang dapat bermain bersama, dan orang yang berbeda dan perusahaan yang berbeda memiliki motivasi dan keyakinan yang sama sekali berbeda dalam hal yang penting bagi mereka. Jadi saya bahkan tidak tertarik pada satu sektor tertentu.

mattdm
sumber
18
Dan sistem kecil dan definisi sistem besar terus bergeser sepanjang waktu, jadi itu adalah kludges yang baik telah dihindari. Ponsel pintar multicore sekarang dapat mengambil manfaat dari semua pekerjaan super-komputer yang dilakukan bertahun-tahun yang lalu.
Zan Lynx
4

Linux berskala ke berbagai jenis perangkat keras karena:

  • ini sangat dapat dikonfigurasi
  • sumbernya tersedia secara bebas, dan dapat dibangun untuk CPU apa pun yang memiliki kompiler C tersedia
  • Prosesor pada perangkat tertanam dan ponsel memiliki setidaknya tingkat yang sama atau lebih banyak daya dibandingkan dengan 386 mesin asli pengembangan Linux awal dilakukan, dan terus mendapatkan daya
  • berfungsi dengan baik hanya dengan jaringan, beberapa bentuk disk atau perangkat seperti disk, dan port serial
LawrenceC
sumber
Nah, seseorang perlu menulis kode bootstrap dan runtime C dalam jumlah minimal untuk platform target. Oh, dan itu harus mendukung memori virtual. Tapi kalau tidak benar :)
Billy ONeal
1
@Billy Ada port untuk sistem nommu: uClinux, uClinux / ARM, dan MontaVista Linux.
Tobu
@Tobu: Hmm .. Saya tidak mengerti bagaimana itu bisa terjadi. Seluruh "Unix Philosophy" untuk beberapa proses memiliki asumsi bahwa sesuatu seperti forkitu mungkin, dan forktidak dapat dilakukan secara efisien pada sistem memori non virtual. Sementara port yang ditunjukkan mungkin menggunakan bagian dari kernel Linux dan dapat menjalankan beberapa perangkat lunak Linux, sebagian besar tampaknya API yang diekspos oleh port ini berbeda dari kernel Linux biasa. (Contoh: pemetaan memori - yang jelas membutuhkan memori virtual)
Billy ONeal
linuxjournal.com/article/7814 : mengatakan uCLinux tidak mendukung fork (), tetapi varian pemblokiran yang disebut vfork (), aplikasi di bawah uCLinux harus ditulis ulang untuk menggunakan vfork atau utas.
LawrenceC
4

Kernel Linux memiliki skala yang baik karena memang seperti itu. Inti kernel relatif kecil dan melakukan apa yang perlu dilakukan. Driver perangkat bersifat opsional dan dapat diabaikan dari kernel untuk sistem yang lebih kecil. Di luar persyaratan minimum kernel, sebagian besar fungsi diimplementasikan sebagai fitur opsional.

Lihatlah file config yang diinstal di sebelah sebagian besar kernel. Ini akan mencantumkan semua fitur yang dihidupkan serta driver yang didukung.

Driver didukung tertanam di kernel atau sebagai modul yang dapat di-load. Ini memungkinkan kernel untuk dikonfigurasikan secara dinamis ke perangkat keras yang digunakan. Ini adalah pendekatan yang digunakan oleh banyak distribusi.

Selain memiliki alat kompilasi, memodifikasi kernel untuk perangkat keras baru relatif sederhana. Untuk prosesor baru, hanya kode terkait yang perlu diterapkan sebagai modifikasi fungsi yang ada. Perangkat baru hanya memerlukan driver baru dengan kait yang relevan. Sistem file baru juga merupakan modifikasi yang relatif sepele.

Basis kode telah dipelihara dengan baik untuk menjaga fleksibilitas ini tanpa forking eksternal. Kompilasi bersyarat drive kernel yang sangat fleksibel yang telah dibuat seminimal mungkin.

BillThor
sumber
1

Saya tidak memiliki keahlian teknis yang terperinci untuk mendukung jawaban ini, tetapi pengalaman saya menunjukkan bahwa Linux memiliki skala yang baik dibandingkan dengan sistem operasi lain yang sering saya gunakan (terutama, Windows). Jadi mungkin pertanyaannya adalah mengapa Windows tidak skala sebaik Linux.

Jika menyatakan kembali pertanyaan seperti itu masih berguna bagi Anda, saya akan menyarankan bahwa kekuatan pasar memotivasi Microsoft untuk menambahkan fitur dan fungsi yang disesuaikan dengan perangkat keras terbaru dan paling berkemampuan, karena mereka menjual lebih banyak salinan sistem operasi terutama ketika pengguna akhir membeli sistem baru . Jadi, kapan saja, saya menemukan bahwa rilis terbaru Windows berkinerja buruk pada perangkat keras yang lebih lama dan kurang mampu.

Maafkan saya jika itu terlalu menyederhanakan pertanyaan Anda.

Mox
sumber
Tampaknya Anda berbicara tentang OS, sementara pria itu berbicara tentang kernel. Nah, kecuali Anda tahu pasti apakah kernel Windows membengkak.
tshepang
@Tepanget: Agar adil, pertanyaan diajukan tentang "kernel dan / atau sistem Linux". Apakah Windows 7 dan Windows Phone 7 berbagi kernel? Sedikit yang saya baca menunjukkan bahwa kernel mereka mungkin memiliki lebih sedikit kesamaan kode daripada kernel Ubuntu Server dan Android.
RedGrittyBrick
Terima kasih, tetapi pertanyaannya sebenarnya tentang Linux dan bukan OS lainnya. Ada banyak yang lain di luar sana: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier
Kernel NT sebenarnya sangat efisien, tetapi sangat banyak lapisan yang mengelilinginya
LawrenceC