OS: Arsitektur Android OS

From OnnoWiki
Jump to navigation Jump to search

Android sebagai Sistem Operasi (Bukan Sekadar OS Mobile)

Dalam konteks Sistem Operasi, Android adalah sistem operasi berbasis Linux kernel yang dirancang untuk lingkungan resource-constrained namun highly interactive. Sejalan dengan pola arsitektur OS modern yang dibahas pada bab-bab awal buku, Android menerapkan arsitektur berlapis (layered architecture) untuk mencapai abstraksi, isolasi, efisiensi, dan keamanan.

Android-OS-layers.png

Secara konseptual, Android dapat dipahami sebagai:

  • Linux kernel → resource manager (CPU, memori, I/O, jaringan, security).
  • User space khusus Android → runtime, framework, dan system services.
  • Application layer → aplikasi berjalan di atas framework, bukan langsung ke kernel.

Pendekatan ini konsisten dengan prinsip kernel vs user space yang telah dibahas sebelumnya, namun Android menambahkan lapisan tambahan untuk mengakomodasi perangkat keras heterogen dan ekosistem aplikasi yang masif.

Android Software Stack

Android software stack tersusun atas beberapa lapisan utama berikut.

Linux Kernel (Kernel Space)

Android menggunakan Linux kernel yang telah dimodifikasi. Secara fungsi inti, kernel Android tetap Linux, namun dengan tambahan subsistem khusus, antara lain:

  • Binder IPC → mekanisme inter-process communication utama Android
  • Ashmem (Anonymous Shared Memory) → shared memory efisien
  • Wakelocks → kontrol power management
  • SELinux (Mandatory Access Control) → keamanan berbasis kebijakan

Contoh verifikasi kernel Android x86 (nanti di bab Android x86 Lab):

uname -a
cat /proc/version

Insight OS: Android tidak mengganti kernel Linux, tetapi memperluasnya agar sesuai dengan karakteristik mobile & embedded system.

Hardware Abstraction Layer (HAL)

HAL adalah lapisan pemisah antara kernel dan user space framework. Tujuannya adalah menyembunyikan detail perangkat keras dari Android Framework.

Peran utama HAL:

  • Menyediakan API standar untuk hardware (kamera, audio, sensor, WiFi).
  • Memungkinkan Android berjalan di berbagai vendor hardware tanpa mengubah framework.

Struktur konseptual:

Android Framework
        ↑
        HAL (C / C++)
        ↑
Linux Kernel Drivers

Poin penting:

Tanpa HAL, setiap perubahan hardware akan memaksa perubahan besar di framework → tidak scalable.

Native Libraries

Lapisan ini berisi native libraries (C/C++) yang digunakan oleh runtime dan framework, antara lain:

  • Bionic libc → implementasi standard C library Android
  • OpenGL ES / Vulkan → grafis
  • SQLite → database embedded
  • Media Framework → audio & video

Contoh melihat library native (di Android x86 shell):

ls /system/lib
ls /system/lib64

Perbandingan akademik:

  • Linux desktop → glibc
  • Android → Bionic libc (lebih ringan, lebih ketat)

Android Runtime (ART)

Android Runtime (ART) bertanggung jawab atas eksekusi aplikasi.

Fungsi utama ART:

  • Ahead-of-Time (AOT) compilation
  • Just-in-Time (JIT) compilation
  • Garbage collection
  • Thread management

Aplikasi Android tidak berjalan sebagai native ELF binary biasa, melainkan sebagai:

Bytecode → dikompilasi → dijalankan oleh ART

Keterkaitan OS:

ART beroperasi di user space, tetapi mengandalkan scheduler, memory manager, dan IPC kernel Linux.

Android Framework (Java/Kotlin API)

Framework adalah API tingkat tinggi yang digunakan oleh aplikasi, mencakup:

  • Activity Manager
  • Window Manager
  • Package Manager
  • Location Manager
  • Telephony & Connectivity Services

Framework ini berkomunikasi dengan:

  • System services (daemon user space)
  • Kernel (melalui Binder IPC)

Analogi OS klasik:

Framework ≈ user-space system services pada OS desktop/server.

Application Layer

Lapisan teratas adalah aplikasi Android, baik:

  • System apps
  • User apps

Setiap aplikasi:

  • Berjalan sebagai process terpisah
  • Memiliki UID sendiri
  • Terisolasi oleh Linux process isolation + SELinux

Cek isolasi process di Android:

ps -A | head

Inti keamanan:

Isolasi aplikasi Android langsung bergantung pada mekanisme kernel Linux, bukan sekadar kebijakan framework.

Kernel Linux di Android

Android memanfaatkan fitur inti Linux yang telah dibahas pada bab kernel:

  • Scheduler → mengatur thread aplikasi
  • Virtual memory → isolasi & efisiensi RAM
  • Device driver → interaksi hardware
  • Networking stack → TCP/IP, WiFi, cellular
  • SELinux → mandatory access control

Contoh cek status SELinux (Android x86):

getenforce

Output:

  • Enforcing → kebijakan aktif
  • Permissive → logging saja

Catatan akademik:

Android adalah contoh OS modern yang sangat ketat pada security by design.

HAL & User Space (Interaksi Nyata)

Alur nyata interaksi sistem:

App → Framework → System Service → HAL → Kernel Driver → Hardware

Contoh kasus:

  • App kamera
  • Framework memanggil Camera Service
  • Camera Service memanggil HAL kamera
  • HAL berinteraksi dengan driver kernel
  • Hardware kamera aktif

Relevansi pembelajaran:

Mahasiswa dapat memetakan ulang alur ini ke:

  • OpenWRT (user space ↔ kernel)
  • Linux server (daemon ↔ syscall)
  • Embedded OS lainnya

AOSP (Android Open Source Project) Overview

AOSP adalah basis open source Android.

Karakteristik utama AOSP:

  • Tanpa Google proprietary services
  • Bisa dibangun & dimodifikasi
  • Cocok untuk pembelajaran OS engineering

Struktur umum source AOSP:

build/
frameworks/
hardware/
kernel/
system/

Filosofi buku:

Android bukan black box. Ia adalah sistem operasi open source yang bisa dibedah, dibangun, dan dipahami.

AOSP akan digunakan secara praktis pada:

  • BAB 14: Android x86 from Scratch
  • PRAKTIKUM 9: Android x86 Build Lab

Refleksi Akademik (OBE Alignment)

Setelah bab ini, mahasiswa diharapkan mampu:

  • Menjelaskan arsitektur Android sebagai sistem operasi
  • Memetakan peran kernel Linux dalam Android
  • Memahami HAL sebagai kunci portabilitas hardware
  • Mengaitkan Android dengan konsep OS klasik (process, memory, IPC, security)

Bab ini menjadi jembatan konseptual sebelum mahasiswa:

  • Membangun Android x86 sendiri
  • Mengamati Android sebagai OS yang bisa di-boot
  • Melihat langsung relasi kernel ↔ user space

Penutup

Android dalam buku ini bukan dipelajari sebagai platform aplikasi, melainkan sebagai:

contoh nyata sistem operasi modern berbasis Linux yang berhasil diadopsi secara global.

Dengan memahami Android pada level arsitektur OS, mahasiswa tidak hanya:

Mengerti cara pakai Android, tetapi
Siap menjadi OS engineer yang memahami sistem dari kernel hingga aplikasi.

Pranala Menarik