Apakah kernel? Sekiranya anda meluangkan masa membaca forum Android, blog, jawatan cara atau perbincangan dalam talian, anda akan mendengar orang bercakap tentang kernel. Kernel bukan sesuatu yang unik kepada Android - iOS dan MacOS mempunyai satu, Windows mempunyai satu, QNX BlackBerry mempunyai satu, sebenarnya semua sistem operasi tahap tinggi mempunyai satu. Yang kita minati adalah Linux, kerana ia menggunakan satu Android. Mari cuba untuk memecahkan apa itu dan apa yang dilakukannya.
Peranti Android menggunakan kernel Linux, bertaruh setiap telefon menggunakan versi mereka sendiri. Penyelenggara kernel Linux menyimpan semua yang kemas dan tersedia, penyumbang (seperti Google) menambah atau mengubah perkara untuk memenuhi keperluan mereka dengan lebih baik, dan orang yang membuat perkakasan menyumbang juga, kerana mereka perlu mengembangkan driver perkakasan untuk bahagian yang mereka gunakan untuk versi kernel yang mereka gunakan. Inilah sebabnya mengapa ia mengambil masa seketika untuk pemaju Android bebas dan penggodam untuk memindahkan versi baru ke peranti yang lebih tua dan mendapatkan segala-galanya berfungsi. Pemandu yang ditulis untuk bekerja dengan satu versi kernel untuk telefon mungkin tidak berfungsi dengan versi perisian yang berbeza pada telefon yang sama. Dan itu penting, kerana salah satu fungsi utama kernel adalah untuk mengawal perkakasan. Ini adalah banyak kod sumber, dengan lebih banyak pilihan semasa membinanya daripada yang anda boleh bayangkan, tetapi pada akhirnya ia hanya perantara antara perkakasan dan perisian.
Apabila perisian memerlukan perkakasan untuk melakukan apa-apa, ia menghantar permintaan kepada kernel. Dan apabila kita mengatakan apa-apa, kita bermaksud apa-apa. Dari kecerahan skrin, ke tahap kelantangan, untuk memulakan panggilan melalui radio, apa yang ditarik pada paparan akhirnya dikawal oleh kernel. Contohnya - apabila anda mengetuk butang carian pada telefon anda, anda memberitahu perisian untuk membuka aplikasi carian. Apa yang berlaku ialah anda menyentuh titik tertentu pada digitizer, yang memberitahu perisian yang telah anda sentuh skrin pada koordinat tersebut. Perisian mengetahui bahawa apabila tempat tertentu disentuh, dialog carian sepatutnya dibuka. Kernel adalah apa yang memberitahu digitizer untuk melihat (atau mendengar, peristiwa "didengar" untuk) untuk sentuhan, membantu mengetahui di mana anda menyentuh, dan memberitahu sistem anda menyentuhnya. Sebaliknya, apabila sistem menerima peristiwa sentuhan pada titik tertentu dari kernel (melalui pemandu) ia tahu apa yang hendak dilukis pada skrin anda. Kedua-dua perkakasan dan perisian berkomunikasi kedua-dua cara dengan kernel, dan itulah bagaimana telefon anda tahu bila melakukan sesuatu. Input dari satu sisi dihantar sebagai output kepada yang lain, sama ada anda bermain Angry Birds, atau menyambung ke Bluetooth kereta anda.
Ia berbunyi rumit, dan ia adalah. Tetapi ia juga agak logik komputer yang standard - ada satu tindakan sejenis yang dijana untuk setiap peristiwa, dan bergantung pada tindakan yang terjadi kepada perisian berjalan. Tanpa kernel untuk menerima dan menghantar maklumat, pemaju perlu menulis kod untuk setiap peristiwa tunggal untuk setiap sekeping perkakasan dalam peranti anda. Dengan kernel, semua yang mereka perlu lakukan ialah berkomunikasi dengannya melalui API sistem Android, dan pemaju perkakasan hanya perlu membuat perkakasan peranti berkomunikasi dengan kernel. Perkara yang baik adalah bahawa anda tidak perlu mengetahui dengan tepat bagaimana atau mengapa kernel melakukan apa yang dilakukannya, hanya memahami bahawa ia adalah persinggahan dari perisian kepada perkakasan memberikan anda pemahaman yang cukup baik tentang apa yang berlaku di bawah kaca.
Susunnya memberikan pandangan baru kepada kawan-kawan yang tinggal sepanjang malam untuk bekerja pada kernel untuk telefon anda, bukan?