Hi Unikom Blogger, Lama tak jumpa
.
Kali ini saya akan mencoba membahas tentang Sistem Operasi Android
secara mendalam yang saya yakin masih sedikit dari pengguna
Device/Mobile Phone dengan Sistem Operasi Android yang tahu.
Android
Android
merupakan Sistem Operasi dari Google yang ditujukan untuk perangkat
Mobile seperti Ponsel atau Tab. Android berjalan pada prosesor dengan
arsitektur ARM, MIPS dan pada versi terbaru 4.0 (Ice Cream Sandwitch) Android juga telah mendukung arsitektur x86 dari Intel.
Android berjalan pada kernel Linux dengan menggunakan berbagai macam library. Android ditulis dengan menggunakan bahasa C, Aplikasinya berjalan pada application framework yang dibangun dengan menggunakan Java dengan memanfaatkan Apache Harmony sebagai compatible java library-nya.
Semua aplikasi Android berjalan pada virtual machine yang bernama Dalvik, dimana dalvik inilah yang bertugas untuk melakukan penterjemahan Java Bytecode menjadi Dalvik Dex Code (Dalvik-executable).
Dalvik
Dalvik merupakan virtual machine yang menjadi layer/lapisan antara aplikasi dan sistem operasi. Dimana di dalam file aplikasi yang memiliki ekstensi .apk terdapat beberapa tipe file, diantaranya resource, assets, xml dan dex. Nah file dex ini lah yang asalnya diprogram dengan menggunakan bahasa Java. File dex ini akan dijalankan oleh Dalvik Virtual Machine
untuk melakukan berbagai macam aktifitas, mulai dari menampilkan User
Interface, akses Internet, menjalankan audio, memanggil kamera, dan
sebagainya. Semua akses yang dilakukan oleh aplikasi tersebut harus
melalui Dalvik Virtual Machine terlebih dahulu.
Arsitektur Android
Jadi
boleh kita katakan kalau file dengan ekstensi .dex tersebut adalah file
executable untuk Android, yang bila kita berbicara tentang sistem
operasi windows, maka file .dex sama seperti file .exe pada windows.
Dalvik Cache
File .apk sebenarnya merupakan
file arsip dengan format zip
yang dirubah namanya. Seperti Kita ketahui, untuk mengakses
kontent/file yang berada pada file zip, Kita harus melakukan unzip
terlebih dahulu, Hal ini akan menyebabkan
waktu untuk mengakses data di dalamnya menjadi lama, karena itu Dalvik memiliki fasilitas untuk melakukan
cache, dimana file
.dex yang berada dalam .apk tersebut akan
di-unzip dan disimpan dalam direktori dalvik-cache yang biasanya berlokasi di "
/data/dalvik-cache".
Proses unzip file .dex
tersebut akan dilakukan ketika user melakukan instalasi aplikasi yang
dimaksud. Sehingga ketika user membuka aplikasi tersebut, sistem tidak
akan mengakses data .dex pada file .apk, tapi akan langsung mengaksesnya
di dalam dalvik-cache.
Filesystem
Android bersandar pada
kernel Linux, jadi struktur file yang digunakan juga
sama persis
dengan apa yang ada pada linux, tapi mungkin para pengguna Android
tidak menyadarinya. Seperti halnya linux, root directory berada pada
"/", semua filesystem/partisi di mount pada sebuah direktori. Berikut
adalah beberapa filesystem yang umumnya dimiliki dalam sistem operasi
ini:
- Root
- System
- Data
- Boot
- SDCard
- SD-Ext
- Dev, Tmp, Proc
Root
Mount Point: /
Device: Linux Kernel, RAM
Layaknya linux, semua filesystem akan berada di dalam Root. Tidak
seperti Windows yang memilah-milahnya ke dalam drive. Dalam linux semua
device dapat diakses melalui filesystem dan menggunakan sistem stream,
baik itu penyimpanan, display, ataupun input dan output device.
System
Mount Point: /system
Device: Internal Memory
Partisi ini berisi file-file system,
dimana file-file sistem operasi Android dan aplikasi-aplikasi bawaannya
disimpan. Partisi system ini selalu disimpan dalam Internal Storage ( storage pada ponsel ), dan tidak dapat diubah isinya kecuali telah dilakukan rooting. Berikut adalah beberapa file-file yang berada pada partisi ini:
- /system/app - Dalam direktori ini terdapat file-file .apk untuk aplikasi system, seperti Phone Dialer, Launcher, IME/Keyboard, Mail, SMS, Settings, dsb.
- /system/frameworks - Dalam direktori ini terdapat file-file frameworks dengan ekstensi .jar
yang menyimpan fungsi-fungsi java yang diakses oleh aplikasi android,
baik itu aplikasi system atau aplikasi yang diinstall oleh user.
- /system/libs
- Direktori ini berisi library-library dan library kernel yang ditulis
dengan menggunakan bahasa C (Native), dan memiliki ekstensi .so.
Android juga mendukung pembangunan aplikasi dengan menggunakan bahasa C
(Native) dengan menggunakan Android NDK (Native Development Kit), dan
mendukung library-library C seperti layaknya linux. hanya saja
dukungannya lebih minimalis, dimana libc yang digunakan adalah libc
bionic yang telah dimodifikasi agar lebih minimalis. Tapi sebenarnya
kita masih bisa memanfaatkan Glibc untuk berjalan pada Linux ini, hanya
harus dilakukan compile sendiri.
- /system/bin, /system/xbin
- Merupakan direktori yang berisi file-file executable berbasis linux,
bila .dex akan berjalan pada dalvik-cache, file-file di dalam direktori
ini akan berjalan langsung di atas kernel linux. Linux pada Android
mendukung perintah-perintah dasar yang biasa digunakan pada shell di
linux, seperti ls, mv, cp, cat, df, dsb. Perbedaanya, bila di linux
semua perintah tersebut merupakan satu executable tersendiri, sedangkan
pada linux semua perintah tersebut dikerjakan oleh satu executable yang
bernama busybox.
- /system/etc - Direktori ini
berisi file-file konfigurasi system dan konfigurasi driver, mulai dari
setting gps, wifi networking, database apn, sampai pengaturan volume
untuk audio.
- /system/customize, /system/fonts, /system/media, /system/usr
- Semua direktori ini berisi file-file untuk kustomisasi sistem,
seperti gambar animasi boot, huruf untuk tampilan, wallpaper, ringtone
dan audio bawaan, juga beberapa layout keyboard dan lokalisasi bahasa.
Data
Mount Point: /data
Device: Internal Memory
Berbeda
dengan system. Partisi data ini merupakan partisi untuk menyimpan
data-data yang selalu berubah-ubah. Semua aplikasi yang diinstal oleh
user akan disimpan pada partisi ini. Ketika pengguna melakukan wipe data
( reset to factory ), partisi ini akan dibabad habis (di format),
sehingga data-data aplikasi yang diinstall, kontak, data sms, dan
sebagainya akan hilang. Tapi sistem masih tetap bisa berjalan
dikarenakan wipe data tidak akan menghapus partisi system.
Berikut adalah beberapa direktori yang berada pada partisi data ini:
- /data/app -
Berisi file-file .apk dari aplikasi-aplikasi yang diinstall, baik itu
dari market atau dari aplikasi yang diinstall secara manual.
- /data/data
- Berisi file-file data aplikasi, baik itu aplikasi system ataupun yang
diinstall oleh user. Isi direktori ini memuat berbagai macam data yang
disimpan oleh aplikasi, seperti save game, database (sqlite), juga
file-file assets dan resource dari aplikasi tersebut. Direktori inilah
yang biasanya membesar dan bila Kita menginstall banyak aplikasi, maka
Low Disk Space biasanya muncul dikarenakan isi direktori ini sudah
terlalu besar.
- /data/dalvik-cache - Merupakan tempat penyimpanan file-file .dex untuk dijalankan secara langsung oleh dalvik virtual machine.
Boot
Mount Point: /boot
Device: Internal Memory
Partisi ini memuat Kernel Linux dan merupakan partisi awal yang akan menerima sinyal booting dari device. Kernel inilah yang secara langsung mengakses hardware pada device kita.
SDCard
Mount Point: /sdcard, /mnt/sdcard
Device: MMC / External Storage
Layout: FAT32
Berbeda
dengan partisi-partisi lainnya. Partisi ini adalah area bebas, dimana
kita dapat melakukan perubahan sesuai dengan keiinginan. Kita dapat
menyimpan lagu, foto, dan video di dalamnya, kita juga dapat
menggunakannya untuk penyimpanan backup data, dan dapat juga digunakan
sebagai USB drive.
SD-EXT
Mount Point: /sd-ext
Device: MMC / External Storage
Layout: EXT2, EXT3, EXT4
Merupakan modifikasi yang bisanya dilakukan pada Custom ROM,
dimana bila Internal Memory tidak mencukupi untuk memuat data-data
penting sistem, maka dilakukanlah pem-partisi-an pada memory card kita.
Dimana memory card kita akan dibagi menjadi 2 partisi, partisi pertama
berformat FAT32 yang akan dijadikan sebagai /sdcard, dan partisi kedua berformat EXT(x).
Inilah hebatnya Linux dan Android, dimana
device yang memiliki umur yang tua
yang tidak dapat lagi memuat sistem Android yang semakin hari semakin
berukuran besar dan tidak dapat dimuat di dalam Internal Memory yang
memiliki keterbatasan ukuran,
dapat tetap mengikuti perkembangan zaman .
SD-EXT ini memanfaatkan fasilitas
Symlink
yang didukung oleh Linux, dimana kita dapat melakukan symbolic link (
memetakan ) suatu file atau direktori dari satu partisi menuju partisi
lainnya.
Contohnya, kita memiliki direktori
/sd-ext/app_s pada SD-EXT, dan lazimnya semua aplikasi sistem disimpan dalam
/system/app, maka kita dapat melakukan symlink dari
/sd-ext/app_s menuju
/system/app, sehingga ketika sistem mengakses file/direktori dari /system/app
sistem akan membaca file/direktori itu dari /sd-ext/app_s.
Cerdik kan?. Beberapa pengembangan SD-EXT ini telah dilakukan oleh beberapa developer dan custom-ROM chef, seperti
app2sd,
data2sd, dan Modifikasi yang saya buat sendiri
AD2SDX (
Lihat di XDA-Developers ).
Dimana mod-mod tersebut memiliki fungsinya masing-masing yang
sebenarnya memiliki tujuan yang sama, yaitu memanipulasi filesystem yang
terbatas agar dapat memanfaatkan penyimpanan data system di dalam
External Memory.
Dev, Tmp, Proc
Mount Point: /dev, /tmp, /proc
Device: Linux Kernel, RAM
Direktori-direktori tersebut bukanlah merupakan Storage, tapi merupakan virtual. dimana /dev merupakan direktori yang memuat semua stream hardware, /tmp merupakan penyimpanan temporary pada ram, dan /proc merupakan direktori untuk menyimpan informasi proses yang berjalan.
Seperti
halnya linux pada PC, semua akses aplikasi menuju hardware dapat
dilakukan dengan mengakses stream pada /dev, seperti halnya kita
mengakses file biasa. Kita dapat mengakses framebuffer display secara
langsung pada file /dev/graphics/fb0, atau mengakses input device secara
langsung pada /dev/input. Sistem Android mengakses hardware melalui
/dev ini, dimana /dev ini lah yang diatur oleh Kernel Linux.
Kita
juga dapat mengetahui ID suatu proses dan proses apa saja yang sedang
berjalan pada direktori /proc. dan dapat juga menyimpan file temporary
pada direktori /tmp untuk dilakukan proses selanjutnya.
Hanya saja direktori-direktori ini hanya dapat diakses bila Anda memiliki permission root.
Hal Lain yang Lebih Hebat
Bila kita tahu bahwa Android berjalan pada Linux Kernel, maka mungkin terbesit di pikiran kita, apakah mungkin untuk menjalankan aplikasi-aplikasi linux di dalam Android?.
Tentu saja mungkin, bahkan bisa dibilang
bisa. bila
Kita mau melakukan compile pada source code program yang ingin kita
jalankan, maka semuanya mungkin. Beberapa contoh yang telah sukses
diantaranya menjalankan
lighttpd+php pada Android (
Webserver di Ponsel Kita? ,
bukan hayalan ),
SSH Server,
mc, Atau bahkan
X-Server dengan GUI
Gnome dan Aplikasi-aplikasinya. Ya silahkan kalian cari di
Google...
Apa Benar Mungkin? Ya, Bukan hanya mungkin, Hal ini telah diimplementasikan oleh para developer terutama developer dari
XDA-Developers. Walaupun Android hanya mendukung
libc minimalis yang mengimplementasikan
bionic, tapi
GLibc ( Libc lengkap berlisensi GNU ) telah bertebaran di internet dan siap untuk digunakan.
Penutup
Android
merupakan sistem operasi untuk device yang sangat powerful, dimana
kompatibilitasnya sangat tinggi dan yang lebih mengagumkan, kita dapat
melakukan kustomisasi yang tak pernah habis untuk ponsel kita ( hanya perlu kemauan dan keberanian ).
Semoga informasi singkat ini dapat berguna untuk para pengguna Android.
NB : Tidak dapat dicopy jika ingin artikel ini bisa didownload melalui 4shared
Terima Kasih
Wassalam.