Luangkan cukup waktu di android atau pc, dan kalian akan menemukan istilah kernel Linux. Android juga menggunakan kernel Linux. Sebenarnya kernel di android adalah bagian integral dari cara kerja ponsel, tetapi apa itu kernel di android?
Bagian Linux cukup mudah untuk dipahami, ini adalah perpaduan kata antara Linus dan Unix. Sejarah sistem operasi Unix dan Linus Torvalds tidak bisa dipisahkan, sang pencipta asli OS mirip Unix yang disebut Linux dengan logo menggunakan penguin. Tapi apa arti kernel ? Apa itu kernel di komputer dan perangkat lain? Apa yang dimaksud dengan kernel Linux? Mari kita cari tahu.
Singkatnya fungsi kernel di android adalah program inti yang bertugas mengelola sumber daya CPU ponsel, memori sistem, dan perangkat sistem termasuk sistem file dan jaringan. Juga bertanggung jawab untuk mengelola semua proses atau tugas yang berjalan di ponsel cerdas. Artinya saat memulai aplikasi, kernellah yang memuat aplikasi ke dalam memori, membuat proses yang diperlukan, dan menjalankan aplikasi.
Saat aplikasi membutuhkan memori, kernel yang mengalokasikannya. Saat aplikasi menginginkan jaringan, kernellah yang melakukan semua pemrosesan tingkat rendah. Kernel adalah program inti yang mengelola sumber daya CPU, memori, dan perangkat sistem ponsel.
Driver untuk perangkat seperti Bluetooth juga ada di kernel. Saat aplikasi ingin melakukan tugas di latar belakang, kernellah yang menangani utas latar belakang. Saat aplikasi ditutup, kernellah yang membersihkan semua memori dan sumber daya lain yang digunakan oleh aplikasi. Seperti yang dilihat, kernel adalah bagian mendasar yang memastikan ponsel android benar-benar melakukan apa yang Anda diharapkan.
Mengenal lebih rinci apa itu kernel di android
Semua sistem operasi multitasking memiliki kernel. Windows memiliki kernel, OS X memiliki kernel, iOS memiliki kernel, dan tentu saja android juga memiliki kernel. Namun dari semua itu, hanya android yang menggunakan kernel Linux. Windows memiliki kernelnya sendiri, sering disebut sebagai kernel NT, sedangkan OS X dan iOS menggunakan kernel yang dikenal sebagai Darwin.
Ada kernel lain di luar sana, termasuk kernel mirip Unix dari proyek FreeBSD, OpenBSD, dan NetBSD. Kernel real-time dari proyek seperti FreeRTOS, kernel tertanam dari proyek seperti Zephyr; dan bahkan kernel berdaya rendah seperti kernel mbed OS dari Arm. Artinya perangkat komputasi apa pun mulai dari IoT atau perangkat yang dapat digunakan hingga superkomputer menggunakan kernel.
Kernel Linux adalah perangkat lunak yang kompleks. Ini berisi jutaan baris kode sumber. Itu termasuk semua driver mayoritas kode yang ditambah kedukungan untuk arsitektur sistem yang berbeda seperti ARM, x86, RISC-V, PowerPC, dll. Ketika kernel dibuat untuk perangkat tertentu katakanlah smartphone, tidak semua kode sumber tersebut digunakan.
Monolitik vs mikrokernel
Seperti halnya semua sistem yang kompleks, ada pendekatan berbeda yang dapat digunakan dalam mendesain kernel. Kernel Linux adalah apa yang dikenal sebagai kernel monolitik. Yang berarti bahwa kernel adalah satu program yang menggunakan satu ruang memori. Alternatif utama adalah pendekatan mikrokernel. Dengan mikrokernel, inti kernel ditempatkan dalam program sekecil mungkin dan mereka berinteraksi dengan program tingkat kernel lain yang dijalankan sebagai server atau layanan terpisah.
Kembali pada tahun 1992 ketika Linux masih dalam masa awal, Linus Torvalds dan Profesor Andrew Tanenbaum yang terkenal dengan bukunya tentang desain sistem operasi dan jaringan mengadakan diskusi online tentang manfaat yang berbeda dari desain kernel monolitik. dibandingkan mikrokernel.
Tanenbaum lebih menyukai mikrokernel dan Linus sedang menulis kernel monolitik. Itu sekarang menjadi sejarah karena Linux tetap menjadi kernel monolitik, seperti kernel yang digunakan di android. Jika tertarik dengan sistem operasi mikrokernel mirip Unix maka harus mengunjungi Minix3.
Karena Linux adalah kernel monolitik, maka perlu ada cara untuk mengaktifkan dan menonaktifkan bagian tertentu dari kernel tergantung pada kebutuhan. Ini dilakukan pada waktu kompilasi menggunakan sistem yang memungkinkan kernel disetel, dipangkas, dan dikonfigurasi sesuai kebutuhan. Beberapa konfigurasi dilakukan lebih dari sekedar mengaktifkan atau menonaktifkan fungsi tertentu, mereka benar-benar mengubah perilaku kernel. Ini berguna dalam hal membangun dan mengubah fitur perangkat keras ponsel cerdas.
Karena Linux adalah open-source dan karena inti dari android juga open-source berkat Android Open Source Project (AOSP), ada komunitas pengembang dan penggemar yang menyediakan kernel alternatif untuk android. Namun popularitas dan ketersediaannya bergantung pada merek dan model perangkat.
Kenapa android menggunakan kernel Linux
Android adalah peluncur yang bagus beberapa aplikasi seperti browser web Chrome atau aplikasi media sosial, dan mungkin beberapa game. Tetapi ada lebih banyak hal yang terjadi daripada yang terlihat. Di bawah antarmuka pengguna, ada banyak subsistem, perpustakaan, dan kerangka kerja.
Agar aplikasi dapat berjalan baik secara native atau di Mesin Virtual Java, android menyediakan banyak pustaka dan kerangka kerja untuk hal-hal seperti notifikasi, layanan lokasi, font, rendering web, SSL, manajemen jendela, dan sebagainya. Ada juga layanan khusus yang disebut SurfaceFlinger yang bertanggung jawab untuk menggabungkan semua hal berbeda yang perlu digambar ke dalam satu buffer yang kemudian ditampilkan di layar.
Di bawah perpustakaan dan kerangka kerja khusus android adalah kernel Linux. Selain mengelola proses, memori, dan manajemen daya, kernel Linux berisi kode untuk semua arsitektur chip dan driver perangkat keras yang berbeda yang didukungnya. Driver ini termasuk kamera,Bluetooth, Wi-Fi, flash memory, USB, and audio drivers.
Android juga menambahkan beberapa fitur khusus pada kernel Linux agar lebih cocok untuk smartphone. Ini termasuk Low Memory Killer, sebuah proses yang memantau status memori dan bereaksi terhadap permintaan memori yang tinggi dengan mematikan proses yang tidak penting sehingga membuat sistem tetap berjalan, dan wake lock yang memberi tahu kernel bahwa perangkat harus tetap terjaga.
Android juga memperkenalkan Project Treble, arsitektur ulang android yang menciptakan antarmuka yang terdefinisi dengan baik antara kerangka kerja OS dan perangkat lunak tingkat rendah khusus perangkat. Menggunakan modul kernel Linux, SoC dan driver khusus papan dipisahkan dari kernel utama, yang berarti bahwa pembuat smartphone dapat bekerja pada fitur tertentu dari perangkat tanpa perlu mengubah kernel inti. Treble dirancang untuk memudahkan produsen memperbarui ponsel cerdas mereka tanpa mengkhawatirkan kode tingkat rendah.
Cara perusahaan build kernel android
Karena keragaman perangkat android yang luas, kernel yang berjalan pada setiap merek dan model akan sedikit berbeda. Akan ada driver khusus untuk SoC serta untuk modul lain seperti GPS, audio, dll. Setiap pembuat smartphone akan bekerja sama dengan penyedia SoC (Qualcomm, MediaTek, dll) untuk mengonfigurasi kernel dengan cara yang paling optimal untuk semua model tertentu.
Ini berarti bahwa pembuat ponsel cerdas akan sering mengerjakan fitur khusus perangkat, mengesampingkan konfigurasi kernel umum, dan menambahkan driver baru ke kernel Linux. Contoh bagus adalah penjadwal CPU. Ketika kernel perlu memutuskan tugas mana yang harus dijalankan selanjutnya, dan pada inti CPU mana, ia menggunakan penjadwal. Sebagian besar smartphone android adalah sistem multi-prosesor heterogen (HMP).
Itu berarti tidak semua inti dalam prosesor itu sama. Beberapa berkinerja tinggi, sementara yang lain menawarkan efisiensi energi yang lebih besar. Menggunakan Energy-Aware Scheduler (EAS), kernel dapat memprediksi dampak keputusannya pada energi yang dikonsumsi oleh CPU, serta tingkat kinerja yang tersedia.
Setiap smartphone memiliki kernel yang sedikit berbeda yang melayani perangkat kerasnya yang unik. Parameter untuk EAS dapat diubah oleh pembuat smartphone untuk mendukung kinerja yang lebih baik saat menggunakan lebih banyak energi, atau kinerja yang lebih rendah sambil menghemat baterai.
Pembuat smartphone juga memiliki opsi untuk mengganti penjadwal dengan salah satu rancangan mereka sendiri. Setiap pembuat smartphone berusaha untuk mengonfigurasi kernel dengan cara terbaik untuk mengaktifkan semua fitur yang diperlukan sambil menawarkan kinerja terbaik dengan efisiensi setinggi mungkin. Bersama dengan pembuat SoC, ada insinyur yang bekerja untuk menyempurnakan perangkat lunak untuk mendapatkan hasil maksimal dari perangkat keras.
Karena itu, pembuat ponsel cerdas kadang membuat kesalahan atau membuat keputusan yang buruk tentang cara mereka mengonfigurasi kernel Linux.
Masa depan android menggunakan kernel Linux
Salah satu sisi negatif dari kesuksesan Linux adalah ia berubah dengan cepat. Untuk memberikan tingkat stabilitas, ada versi kernel Long Term Support (LTS) yang didukung selama beberapa tahun. Android Common Kernels (ACKs) diambil dari kernel Linux utama dan menyertakan patch khusus untuk android.
ACK digunakan untuk membuat Gambar Kernel Generik (GKI). Ini adalah kernel Arm 64-bit yang dapat digunakan pada perangkat apa pun, jika SoC dan dukungan driver diimplementasikan dalam modul vendor. Idenya adalah untuk mengatasi masalah fragmentasi kernel dengan menyatukan kernel inti dan memindahkan bagian-bagian khusus SoC keluar dari kernel dan ke dalam modul yang dapat dimuat. Hal ini pada gilirannya akan mengurangi beban pemeliharaan kernel untuk OEM sambil memisahkan komponen khusus perangkat keras dari kernel inti.