Android mimarisinin linux çekirdeğine extradan yaptığı bazı değişiklikler anlatıldı ayrıca android de linux un init fonksiyonunun çalışma mantığı ve yaşam döngüsü anlatıldı.
Android Mimarisi ,Linux çekirdeği geliştirmeleri ,Process & Thread Mekanizması
Ercan PINAR
080401055
ercanpinarr@gmail.com
Çanakkale On Sekiz Mart Üniversitesi
06.12.2011
2.
Başlıklar
Android Nedir ?
Neden Linux Çekirdeği ?
Çekirdekteki geliştirmeler
Android Kütüphaneleri
Dalvik Virtual Machine
Süreç & Thread --> Yaşam Döngüsü
Runtime Android - Linux
Mimarisel Görünüm
3.
Android Nedir
Android,Google ve Open Handset Allience
tarafından kodlanmış Linux İşletim Sistemi
tabanlı bir mobil cihaz (PDA ve cep telefonları)
için geliştirilmiş açık kaynak kodlu bir işletim
sistemidir.
4.
Neden Linux Çekirdeği?
Bellek ve işlem yönetiminin başarılı olması.
Temelde güvenlikli olması.
Birtakım işlemler için izinler gerektirmesi.
Paylaşılan kütüphaneleri desteklemesi.
Açık kaynak kodlu olması…
5.
Linux Çekirdeği
Android Linuxçekirdeği üzerine kurulmuştur.
Fakat android Linux değildir!
Linux un glibc kütüphanesinden destek almaz.
Doğal pencereleme( windowing system) den destek almaz.
Standart olarak bulunan tüm linux hizmetlerini içermez.
6.
Linux Çekirdeği
Standard Linux2.6.24 Çekirdeği kullanılmıştır.
Çekirdek geliştirmeleri ile Android desteklenir hale
getirilmiştir.
7.
Linux Çekirdek Geliştirmeleri
Alarm
Ashmem(Android Shared Memory)
Binder (Bağlayıcı)
Power Management ( Güç yöneticisi)
Low Memory Killer (Düşük bellek öldürücüsü)
Kernel Debugger (Çekirdek hata ayıklayıcısı)
Logger (Bölümlendirme )
Binder Çözümü
Sürücü süreçler arası iletişimikolaylaştırmak için (IPC).
Yüksek performanslı paylaşımlı bellek sayesinde.
Her işlem istekleri için iş parçacığı havuzu.
Süreçler için referans sayma, nesne başvurularını haritalama.
Dalvik Virtual Machine
Sisteminasıl motoru DVM dir.
DVM ‘nin geliştirilme amacı minimum donanım
konfigürasyonunda , maksimum performans elde edilebilecek
java yazılımlarını çalıştırabilmektir.
14.
Dalvik Virtual Machine
Uygulamataşınabilirliği ve çalıştırmasında tutarlılık sağlar.
Optimize edilmiş dosya formatı (dex) ve Dalvik
bytecode çalıştırır.
Java sınıf / jar dosyalarını yapısını Dex formatına
dönüştürülür.
Gömülü ortamlar için tasarlanmıştır.
Her süreç için ayrı bir DVM çalıştırılır.
Belleği çok verimli kullanır.
15.
Core Libraries
Java içinçekirdek API'lerini içerir
Veri yapıları
Utilities
Dosya erişimi
Ağ Erişim
Grafik
16.
Process
Android süreci ==Linux süreci
Varsayılan olarak, aynı uygulamanın tüm bileşenlerinin aynı işlemde çalışır ve
çoğu uygulamada bu aynı şekilde olur.
Android, düşük bellekte ve başka kullanıcı isteklerine de hizmet verebilmesi için diğer
işlemler tarafından bazı gerekli noktalarda çalışan bir süreci kapatmaya karar
verebilir.
Hangi süreçlerin öldürülmesine karar verilirken , Android sistemi önem durumuna göre
karar verir.
Örneğin, daha kolay görünür faaliyetleri barındıran bir süreç ile karşılaştırıldığında, artık
ekranda görünür faaliyetleri barındıran bir süreç kapatılır.Bu nedenle, bir süreç sona
erdirme kararı bu süreçte çalışan bileşenlerin durumuna bağlıdır.
17.
Process
Android sistemi içinbir uygulama sürecini mümkün olduğunca uzun süre korumak
için çalışır, ama sonunda, yeni ya da daha önemli eskiden var olan süreçleri
kaldırması gerekebilir.
Hangi süreçlerin öldürüleceğini belirlemek için , sistem her işlem için sürecin içinde
çalışan bileşenleri ve bu bileşenlerin durumunu temel alan bir "önem hiyerarşisi"
belirler.
Düşük öneme sahip işlemler ve sistem kaynaklarını kurtarmak için gerekli sonraki en
düşük öneme sahip olanlar, daha sonra ilk olarak ortadan kaldırılırlar.
18.
Önem hiyerarşisi içindebeş seviyesi vardır. Aşağıdaki listede önem sırasına göre
(ilk sürecin en önemli ve son öldürülür) süreçlerinin farklı tipleri sunar:
1. Foreground process / önalan süreci
Kullanıcının ne yaptığına bağlı olan bir süreçtir. Kullanıcı arayüzünde aktif olan
süreç de denebilir.
2.Visible process //görünür süreç
Kullanıcının arkaplanında olan ama aniden harekete geçen (örn diyalog açılması )
gibi görünür olan süreçler.
3. Service process / hizmet süreci
Kullanıcı için çalışan fakat arka planda çalışan süreçlerdir.Örneğin müzik indirme
yada dinleme sırasında arka planda yapılan işlemler.
4. Background process/Arka plan işlemi
Bu süreçlerin kullanıcı deneyimi üzerinde doğrudan etkisi vardır ve sistem
görünür bir ön plan, ya da hizmet süreci için bellek kurtarmak için herhangi bir
zamanda onları öldürebilir.
Birçok arka plan işlemleri için kullanılır.
19.
5.Empty Process /Boşsüreç
Herhangi bir etkin uygulama bileşenlerini tutmayan bir süreçtir.
Ön belleği gelecek uygulamalara hazır durumda tutmak ve dengelemektir.
PROCESS LİFECYCLE
Süreç yaşam döngüsü
Süreç başlar. //herhangi bir uygulama çalışması gibi
Bir Hizmet bağlama //binder services
Bir ContentProvider bağlama //içerik sağlayıcılarla haberleşilir
Gelecek uyarıları dinleyici harekete gecer
Sistem tarafından öldürülene kadar çalışmaya devam
20.
Threads
Bir uygulamabaşlatıldığında, sistem olarak adlandırılan uygulama, yürütme
“ana ” iş parçacığı oluşturur .
Bir bileşenin her örneği için ayrı bir iş parçacığı oluşturmaz.
Aynı işlemde çalışan tüm bileşenleri aynı iş parçacığı örneği ve her bileşen
sistem çağrıları için bu iş parçacığı gönderilir.
Thread bloke olduğunda kullanıcı tarafında “uygulama yanıt vermiyor ” gibi bir
uyarı gösterilir daha sonradan kullanıcı isteğine bağlı olarak uygulamaya son
verebilir.
Runtime
Init süreci zigot sürecinide başlatır :
• Doğmakta olan bir süreç Dalvik VM örneğini (kendisine özgü)
başlatır.
• Sınıfları yükler ve VM'ler spawn isteklerini dinler.
• Forks yönetilen süreçler için istek üzerine
VM örneğini oluşturur.