30
Android Mimarisi , Linux çekirdeği geliştirmeleri ,Process & Thread Mekanizması Ercan PINAR 080401055 [email protected] Çanakkale On Sekiz Mart Üniversitesi 06.12.2011

Android mimari-cekirdek-binding-scheduler

Embed Size (px)

DESCRIPTION

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ı.

Citation preview

Page 1: 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

Page 2: Android mimari-cekirdek-binding-scheduler

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

Page 3: Android mimari-cekirdek-binding-scheduler

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.

Page 4: Android mimari-cekirdek-binding-scheduler

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ı…

Page 5: Android mimari-cekirdek-binding-scheduler

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.

Page 6: Android mimari-cekirdek-binding-scheduler

Linux Çekirdeği

Standard Linux 2.6.24 Çekirdeği kullanılmıştır.

Çekirdek geliştirmeleri ile Android desteklenir hale getirilmiştir.

Page 7: Android mimari-cekirdek-binding-scheduler

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 )

Page 8: Android mimari-cekirdek-binding-scheduler

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.

Page 9: Android mimari-cekirdek-binding-scheduler

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.

Page 10: Android mimari-cekirdek-binding-scheduler

Power Manager Problemi

Mobil cihazların pil gücü ile çalışması ve bu güçlerin sınırlı olması Problem olmuştur.

Page 11: Android mimari-cekirdek-binding-scheduler

Android in Linux Çekirdeğine ek Kütüphaneleri

SQLite = Veritabanı

WebKit = İnternet ...

Page 12: Android mimari-cekirdek-binding-scheduler

Hardware Abstraction Layer Donanım katmanı

Page 13: Android mimari-cekirdek-binding-scheduler

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.

Page 14: Android mimari-cekirdek-binding-scheduler

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.

Page 15: Android mimari-cekirdek-binding-scheduler

Core LibrariesJava için çekirdek API'lerini içerir

Veri yapıları

Utilities

Dosya erişimi

Ağ Erişim

Grafik

Page 16: Android mimari-cekirdek-binding-scheduler

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.

Page 17: Android mimari-cekirdek-binding-scheduler

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.

Page 18: Android mimari-cekirdek-binding-scheduler

Ö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.

Page 19: Android mimari-cekirdek-binding-scheduler

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

Page 20: Android mimari-cekirdek-binding-scheduler

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.

Page 21: Android mimari-cekirdek-binding-scheduler
Page 22: Android mimari-cekirdek-binding-scheduler

Runtime Başlangıçta çoğu Linux tabanlı sistemlere benzer şekilde,

bootloader Linux çekirdeğini yükler ve init işlemi başlar.

Page 23: Android mimari-cekirdek-binding-scheduler

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)

Page 24: Android mimari-cekirdek-binding-scheduler

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.

Page 25: Android mimari-cekirdek-binding-scheduler

RuntimeÇalışma zamanı süreci zigot için servislerin başlatılması

isteğini gönderir.

Page 26: Android mimari-cekirdek-binding-scheduler

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ı !

Page 27: Android mimari-cekirdek-binding-scheduler

Runtime

Sistem Servis de dahil olmak üzere yerli sistem sunucuları başlatılır.

Page 28: Android mimari-cekirdek-binding-scheduler

Android Mimarisi

Page 29: Android mimari-cekirdek-binding-scheduler

Kaynaklar

-- developer.android.com

-- code.google.com

-- Nizar Öğütmen ANDROID Kitabı

İletişim [email protected]

Page 30: Android mimari-cekirdek-binding-scheduler

Teşekkürler