← Blog'a Dön

Android Neden Linux Kullanır?

Android Neden Linux Kullanır?
Her Güçlü Yapının Altında Sağlam Bir Zemin Vardır
Bir bina inşa edecekseniz temeli sıfırdan mı dökersiniz, yoksa dünyanın en güvenilir temel sistemlerinden birini mi kullanırsınız? Google 2003'te aynı soruyla yüzleşti ve cevabı netti:

Linux.

Peki bu tercih neden yapıldı? Android için başka seçenekler yok muydu? Ve bu kararın bugünkü Android geliştirme pratiğiyle ne ilgisi var?

Linux Nedir, Kısaca Hatırlayalım

Linux, 1991 yılında Linus Torvalds tarafından geliştirilen açık kaynaklı bir işletim sistemi çekirdeğidir. Çekirdek kavramı burada kritik — Linux tek başına bir işletim sistemi değil, işletim sisteminin en alt ve en kritik katmanıdır.

Linux çekirdeği; bellek yönetimi, işlemci zamanlaması, dosya sistemi, ağ yönetimi ve donanım sürücüleri gibi temel sistem işlevlerini üstlenir. Bugün dünya genelinde web sunucularının büyük çoğunluğu, tüm Android cihazlar ve hatta bazı süperbilgisayarlar Linux çekirdeği üzerinde çalışır.

Google Neden Sıfırdan Bir Çekirdek Yazmadı?
Bu sorunun cevabı hem pragmatik hem de stratejiktir.

İşletim sistemi çekirdeği yazmak, yazılım mühendisliğinin en zorlu alanlarından biridir. Bellek güvenliği, süreç izolasyonu, donanım sürücüleri, güç yönetimi — bunların her biri kendi başına yıllarca sürecek bir mühendislik problemidir. Ve bu problemlerin tamamını birden çözmek zorundaysanız, işin içinden çıkmanız neredeyse imkânsız hale gelir.

Linux ise 2003'e gelindiğinde on yılı aşkın bir süredir dünyanın en yetenekli sistem programcıları tarafından geliştirilmiş, test edilmiş ve olgunlaştırılmıştı. Binlerce farklı donanım üzerinde çalışıyordu, güvenlik açıkları sürekli kapatılıyordu ve en önemlisi — açık kaynak olduğu için ücretsiz kullanılabiliyordu.

Google ve Android ekibi için bu hazır ve güvenilir temeli kullanmak, yılları kısaltan ve kaynakları asıl platforma yönlendiren akıllıca bir karardı.

Linux'un Android'e Kattığı Üç Temel Güç
Birincisi: Süreç İzolasyonu

Android'de her uygulama kendi sürecinde, kendi bellek alanında çalışır. Bir uygulama başka bir uygulamanın verisine doğrudan erişemez. Bu izolasyon Linux'un süreç yönetimi altyapısının doğrudan bir ürünüdür. Bankacılık uygulamanızın verilerinin başka bir uygulama tarafından okunamamasının arkasında bu mekanizma yatar.

İkincisi: Güç Yönetimi

Mobil cihazlar için pil ömrü kritik bir meseledir. Linux çekirdeğinin gelişmiş güç yönetimi altyapısı, Android'in işlemciyi uyku moduna almasına, arka planda çalışan süreçleri kısıtlamasına ve donanım bileşenlerini ihtiyaç dışında kapatmasına imkân tanır. Bu altyapı olmadan modern akıllı telefonların batarya performansına ulaşmak mümkün olmazdı.

Üçüncüsü: Sürücü Ekosistemi

Dünya üzerinde binlerce farklı donanım bileşeni vardır. İşlemciler, ekranlar, kameralar, sensörler, ağ çipleri. Her birinin bir sürücüye ihtiyacı vardır. Linux, yıllar içinde bu sürücülerin büyük bölümünü bünyesine katmıştır. Android bu miras sayesinde yeni donanımlarla çok daha hızlı uyum sağlar.

Ama Android "Linux" Değildir

Bu noktada önemli bir ayrımın altını çizmek gerekiyor. Android Linux çekirdeğini kullanır; ancak Android bir Linux dağıtımı değildir.

Klasik bir Linux dağıtımında (Ubuntu, Debian gibi) kullanıcı doğrudan Linux araçlarıyla, kabuk ortamıyla ve sistem kütüphaneleriyle etkileşime girer. Android'de ise Linux çekirdeğinin üzerine tamamen farklı bir kullanıcı alanı inşa edilmiştir. Standart Linux kütüphaneleri yerine Google'ın geliştirdiği Bionic adlı C kütüphanesi kullanılır. Standart Linux araçlarına erişim kısıtlıdır. Uygulama çalışma ortamı tamamen farklıdır.

Yani Linux, Android'in motorudur — ama Android bu motorun çok ötesine geçen bir yapıdır.

Geliştirici Perspektifinden Bakış
Android'in Linux üzerine kurulmuş olmasının geliştirme pratiğine doğrudan yansımaları vardır.

Uygulamanızın neden belirli dosya yollarına erişemediğini anlamak için Linux izin modelini bilmeniz gerekir. Bir sürecin neden sonlandırıldığını kavramak için Linux'un bellek yönetimine aşina olmanız gerekir. NDK ile native kod yazarken karşılaştığınız sistem çağrıları doğrudan Linux API'leridir.

Android'in altındaki Linux katmanını tanımak, platformun davranışlarını sezgisel olarak anlamanızı sağlar. Ve bu sezgi, özellikle sistem düzeyinde sorunlarla boğuşurken büyük bir avantaja dönüşür.