Android mimari-cekirdek-binding-scheduler
-
Upload
ercan-pinar -
Category
Automotive
-
view
1.430 -
download
0
description
Transcript of Android mimari-cekirdek-binding-scheduler
Android Mimarisi , Linux çekirdeği geliştirmeleri ,Process & Thread Mekanizması
Ercan [email protected]Çanakkale On Sekiz Mart Üniversitesi
06.12.2011
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
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.
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ı…
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.
Linux Çekirdeği
Standard Linux 2.6.24 Çekirdeği kullanılmıştır.
Çekirdek geliştirmeleri ile Android desteklenir hale getirilmiştir.
Linux Çekirdek GeliştirmeleriAlarm
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(Bağlayıcı) Problemi Binder mekanizmasında uygulamalar ve servisler
işlemler çalıştırılabiliyor fakat veri iletişimi ve paylaşım sıkıntısından dolayı düzenlenmesi gerekmektedir.
Binder Çözümü
Sürücü süreçler arası iletişimi kolaylaş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.
Power Manager Problemi
Mobil cihazların pil gücü ile çalışması ve bu güçlerin sınırlı olması Problem olmuştur.
Android in Linux Çekirdeğine ek Kütüphaneleri
SQLite = Veritabanı
WebKit = İnternet ...
Hardware Abstraction Layer Donanım katmanı
Dalvik Virtual Machine Sistemin ası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.
Dalvik Virtual MachineUygulama taşı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.
Core LibrariesJava için çekirdek API'lerini içerir
Veri yapıları
Utilities
Dosya erişimi
Ağ Erişim
Grafik
ProcessAndroid 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.
Process
Android sistemi için bir 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.
Önem hiyerarşisi içinde beş 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üreciKullanı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şlemiBu 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.
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ı gibiBir Hizmet bağlama //binder servicesBir ContentProvider bağlama //içerik sağlayıcılarla haberleşilir Gelecek uyarıları dinleyici harekete gecerSistem tarafından öldürülene kadar çalışmaya devam
Threads
Bir uygulama baş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 Başlangıçta çoğu Linux tabanlı sistemlere benzer şekilde,
bootloader Linux çekirdeğini yükler ve init işlemi başlar.
Init Linux daemons:
USB bağlantılarını yönetmek için USB Daemon (usbd)
ADB bağlantılarını yönetmek için Android Debug Bridge (adbd)
Hata ayıklama süreçlerini yönetmek için Debugger Daemon (debuggerd)istekleri (dump bellek, vb.)
İletişimi yönetmek için Radyo Arayüz Katmanı Daemon (Rild)
RuntimeInit 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.
RuntimeÇalışma zamanı süreci zigot için servislerin başlatılması
isteğini gönderir.
Runtime
Zigot forks sistemi Servis işlemi için yeni bir VM örneği ve hizmet başlatır.
Ana çoçuk süreç kavramı !
Runtime
Sistem Servis de dahil olmak üzere yerli sistem sunucuları başlatılır.
Android Mimarisi
Kaynaklar
-- developer.android.com
-- code.google.com
-- Nizar Öğütmen ANDROID Kitabı
İletişim [email protected]
Teşekkürler