Difference between revisions of "OS: Arsitektur Android OS"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| + | ==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. | ||
| − | + | [[File:Android-OS-layers.png|300px|center|thumb]] | |
| − | |||
| − | Android | ||
| − | |||
Secara konseptual, Android dapat dipahami sebagai: | Secara konseptual, Android dapat dipahami sebagai: | ||
| − | Linux kernel → resource manager (CPU, memori, I/O, jaringan, security). | + | * Linux kernel → resource manager (CPU, memori, I/O, jaringan, security). |
| − | User space khusus Android → runtime, framework, dan system services. | + | * User space khusus Android → runtime, framework, dan system services. |
| − | Application layer → aplikasi berjalan di atas framework, bukan langsung ke kernel. | + | * 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. | 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== |
Android software stack tersusun atas beberapa lapisan utama berikut. | Android software stack tersusun atas beberapa lapisan utama berikut. | ||
| − | Linux Kernel (Kernel Space) | + | |
| + | ===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: | 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 | + | * Binder IPC → mekanisme inter-process communication utama Android |
| − | Ashmem (Anonymous Shared Memory) → shared memory efisien | + | * Ashmem (Anonymous Shared Memory) → shared memory efisien |
| − | Wakelocks → kontrol power management | + | * Wakelocks → kontrol power management |
| − | SELinux (Mandatory Access Control) → keamanan berbasis kebijakan | + | * SELinux (Mandatory Access Control) → keamanan berbasis kebijakan |
Contoh verifikasi kernel Android x86 (nanti di bab Android x86 Lab): | Contoh verifikasi kernel Android x86 (nanti di bab Android x86 Lab): | ||
| − | uname -a | + | uname -a |
| − | cat /proc/version | + | cat /proc/version |
Insight OS: Android tidak mengganti kernel Linux, tetapi memperluasnya agar sesuai dengan karakteristik mobile & embedded system. | Insight OS: Android tidak mengganti kernel Linux, tetapi memperluasnya agar sesuai dengan karakteristik mobile & embedded system. | ||
| − | Hardware Abstraction Layer (HAL) | + | |
| + | ===Hardware Abstraction Layer (HAL)=== | ||
HAL adalah lapisan pemisah antara kernel dan user space framework. Tujuannya adalah menyembunyikan detail perangkat keras dari Android Framework. | HAL adalah lapisan pemisah antara kernel dan user space framework. Tujuannya adalah menyembunyikan detail perangkat keras dari Android Framework. | ||
| + | |||
Peran utama HAL: | Peran utama HAL: | ||
| − | Menyediakan API standar untuk hardware (kamera, audio, sensor, WiFi). | + | * Menyediakan API standar untuk hardware (kamera, audio, sensor, WiFi). |
| − | Memungkinkan Android berjalan di berbagai vendor hardware tanpa mengubah framework. | + | * Memungkinkan Android berjalan di berbagai vendor hardware tanpa mengubah framework. |
| + | |||
Struktur konseptual: | Struktur konseptual: | ||
| − | Android Framework | + | |
| − | + | Android Framework | |
| − | + | ↑ | |
| − | + | HAL (C / C++) | |
| − | Linux Kernel Drivers | + | ↑ |
| + | Linux Kernel Drivers | ||
| + | |||
Poin penting: | Poin penting: | ||
| − | Tanpa HAL, setiap perubahan hardware akan memaksa perubahan besar di framework → tidak scalable. | + | Tanpa HAL, setiap perubahan hardware akan memaksa perubahan besar di framework → tidak scalable. |
| − | Native Libraries | + | ===Native Libraries=== |
Lapisan ini berisi native libraries (C/C++) yang digunakan oleh runtime dan framework, antara lain: | Lapisan ini berisi native libraries (C/C++) yang digunakan oleh runtime dan framework, antara lain: | ||
| − | Bionic libc → implementasi standard C library Android | + | * Bionic libc → implementasi standard C library Android |
| − | OpenGL ES / Vulkan → grafis | + | * OpenGL ES / Vulkan → grafis |
| − | SQLite → database embedded | + | * SQLite → database embedded |
| − | Media Framework → audio & video | + | * Media Framework → audio & video |
| + | |||
Contoh melihat library native (di Android x86 shell): | Contoh melihat library native (di Android x86 shell): | ||
| − | ls /system/lib | + | ls /system/lib |
| − | ls /system/lib64 | + | ls /system/lib64 |
| + | |||
Perbandingan akademik: | Perbandingan akademik: | ||
| − | Linux desktop → glibc | + | * Linux desktop → glibc |
| − | Android → Bionic libc (lebih ringan, lebih ketat) | + | * Android → Bionic libc (lebih ringan, lebih ketat) |
| − | Android Runtime (ART) | + | |
| + | ===Android Runtime (ART)=== | ||
Android Runtime (ART) bertanggung jawab atas eksekusi aplikasi. | Android Runtime (ART) bertanggung jawab atas eksekusi aplikasi. | ||
| + | |||
Fungsi utama ART: | Fungsi utama ART: | ||
| − | Ahead-of-Time (AOT) compilation | + | * Ahead-of-Time (AOT) compilation |
| − | Just-in-Time (JIT) compilation | + | * Just-in-Time (JIT) compilation |
| − | Garbage collection | + | * Garbage collection |
| − | Thread management | + | * Thread management |
| + | |||
Aplikasi Android tidak berjalan sebagai native ELF binary biasa, melainkan sebagai: | Aplikasi Android tidak berjalan sebagai native ELF binary biasa, melainkan sebagai: | ||
| − | Bytecode → dikompilasi → dijalankan oleh ART | + | Bytecode → dikompilasi → dijalankan oleh ART |
| + | |||
Keterkaitan OS: | Keterkaitan OS: | ||
| − | ART beroperasi di user space, tetapi mengandalkan scheduler, memory manager, dan IPC kernel Linux. | + | ART beroperasi di user space, tetapi mengandalkan scheduler, memory manager, dan IPC kernel Linux. |
| − | Android Framework (Java/Kotlin API) | + | ===Android Framework (Java/Kotlin API)=== |
Framework adalah API tingkat tinggi yang digunakan oleh aplikasi, mencakup: | Framework adalah API tingkat tinggi yang digunakan oleh aplikasi, mencakup: | ||
| − | Activity Manager | + | * Activity Manager |
| − | Window Manager | + | * Window Manager |
| − | Package Manager | + | * Package Manager |
| − | Location Manager | + | * Location Manager |
| − | Telephony & Connectivity Services | + | * Telephony & Connectivity Services |
| + | |||
Framework ini berkomunikasi dengan: | Framework ini berkomunikasi dengan: | ||
| − | System services (daemon user space) | + | * System services (daemon user space) |
| − | Kernel (melalui Binder IPC) | + | * Kernel (melalui Binder IPC) |
| + | |||
Analogi OS klasik: | Analogi OS klasik: | ||
| − | Framework ≈ user-space system services pada OS desktop/server. | + | Framework ≈ user-space system services pada OS desktop/server. |
| − | Application Layer | + | |
| + | ===Application Layer=== | ||
Lapisan teratas adalah aplikasi Android, baik: | Lapisan teratas adalah aplikasi Android, baik: | ||
| − | System apps | + | * System apps |
| − | User apps | + | * User apps |
| + | |||
Setiap aplikasi: | Setiap aplikasi: | ||
| − | Berjalan sebagai process terpisah | + | * Berjalan sebagai process terpisah |
| − | Memiliki UID sendiri | + | * Memiliki UID sendiri |
| − | Terisolasi oleh Linux process isolation + SELinux | + | * Terisolasi oleh Linux process isolation + SELinux |
| + | |||
Cek isolasi process di Android: | Cek isolasi process di Android: | ||
| − | ps -A | head | + | ps -A | head |
| + | |||
Inti keamanan: | Inti keamanan: | ||
| − | Isolasi aplikasi Android langsung bergantung pada mekanisme kernel Linux, bukan sekadar kebijakan framework. | + | Isolasi aplikasi Android langsung bergantung pada mekanisme kernel Linux, bukan sekadar kebijakan framework. |
| − | Kernel Linux di Android | + | ==Kernel Linux di Android== |
Android memanfaatkan fitur inti Linux yang telah dibahas pada bab kernel: | Android memanfaatkan fitur inti Linux yang telah dibahas pada bab kernel: | ||
| − | Scheduler → mengatur thread aplikasi | + | * Scheduler → mengatur thread aplikasi |
| − | Virtual memory → isolasi & efisiensi RAM | + | * Virtual memory → isolasi & efisiensi RAM |
| − | Device driver → interaksi hardware | + | * Device driver → interaksi hardware |
| − | Networking stack → TCP/IP, WiFi, cellular | + | * Networking stack → TCP/IP, WiFi, cellular |
| − | SELinux → mandatory access control | + | * SELinux → mandatory access control |
| + | |||
Contoh cek status SELinux (Android x86): | Contoh cek status SELinux (Android x86): | ||
| − | getenforce | + | getenforce |
| + | |||
Output: | Output: | ||
| − | Enforcing → kebijakan aktif | + | * Enforcing → kebijakan aktif |
| − | Permissive → logging saja | + | * Permissive → logging saja |
| + | |||
Catatan akademik: | Catatan akademik: | ||
| − | Android adalah contoh OS modern yang sangat ketat pada security by design. | + | Android adalah contoh OS modern yang sangat ketat pada security by design. |
| − | HAL & User Space (Interaksi Nyata) | + | |
| + | ==HAL & User Space (Interaksi Nyata)== | ||
Alur nyata interaksi sistem: | Alur nyata interaksi sistem: | ||
| − | App → Framework → System Service → HAL → Kernel Driver → Hardware | + | App → Framework → System Service → HAL → Kernel Driver → Hardware |
| + | |||
Contoh kasus: | Contoh kasus: | ||
| − | App kamera | + | * App kamera |
| − | Framework memanggil Camera Service | + | * Framework memanggil Camera Service |
| − | Camera Service memanggil HAL kamera | + | * Camera Service memanggil HAL kamera |
| − | HAL berinteraksi dengan driver kernel | + | * HAL berinteraksi dengan driver kernel |
| − | Hardware kamera aktif | + | * Hardware kamera aktif |
| + | |||
Relevansi pembelajaran: | Relevansi pembelajaran: | ||
| + | |||
Mahasiswa dapat memetakan ulang alur ini ke: | Mahasiswa dapat memetakan ulang alur ini ke: | ||
| − | OpenWRT (user space ↔ kernel) | + | * OpenWRT (user space ↔ kernel) |
| − | Linux server (daemon ↔ syscall) | + | * Linux server (daemon ↔ syscall) |
| − | Embedded OS lainnya | + | * Embedded OS lainnya |
| − | AOSP (Android Open Source Project) Overview | + | ==AOSP (Android Open Source Project) Overview== |
AOSP adalah basis open source Android. | AOSP adalah basis open source Android. | ||
| + | |||
Karakteristik utama AOSP: | Karakteristik utama AOSP: | ||
| − | Tanpa Google proprietary services | + | * Tanpa Google proprietary services |
| − | Bisa dibangun & dimodifikasi | + | * Bisa dibangun & dimodifikasi |
| − | Cocok untuk pembelajaran OS engineering | + | * Cocok untuk pembelajaran OS engineering |
| + | |||
Struktur umum source AOSP: | Struktur umum source AOSP: | ||
| − | build/ | + | build/ |
| − | frameworks/ | + | frameworks/ |
| − | hardware/ | + | hardware/ |
| − | kernel/ | + | kernel/ |
| − | system/ | + | system/ |
| + | |||
Filosofi buku: | Filosofi buku: | ||
| − | Android bukan black box. Ia adalah sistem operasi open source yang bisa dibedah, dibangun, dan dipahami. | + | Android bukan black box. Ia adalah sistem operasi open source yang bisa dibedah, dibangun, dan dipahami. |
| + | |||
AOSP akan digunakan secara praktis pada: | AOSP akan digunakan secara praktis pada: | ||
| − | BAB 14: Android x86 from Scratch | + | * BAB 14: Android x86 from Scratch |
| − | PRAKTIKUM 9: Android x86 Build Lab | + | * PRAKTIKUM 9: Android x86 Build Lab |
| − | Refleksi Akademik (OBE Alignment) | + | |
| + | ==Refleksi Akademik (OBE Alignment)== | ||
Setelah bab ini, mahasiswa diharapkan mampu: | Setelah bab ini, mahasiswa diharapkan mampu: | ||
| − | Menjelaskan arsitektur Android sebagai sistem operasi | + | * Menjelaskan arsitektur Android sebagai sistem operasi |
| − | Memetakan peran kernel Linux dalam Android | + | * Memetakan peran kernel Linux dalam Android |
| − | Memahami HAL sebagai kunci portabilitas hardware | + | * Memahami HAL sebagai kunci portabilitas hardware |
| − | Mengaitkan Android dengan konsep OS klasik (process, memory, IPC, security) | + | * Mengaitkan Android dengan konsep OS klasik (process, memory, IPC, security) |
| + | |||
Bab ini menjadi jembatan konseptual sebelum mahasiswa: | Bab ini menjadi jembatan konseptual sebelum mahasiswa: | ||
| − | Membangun Android x86 sendiri | + | * Membangun Android x86 sendiri |
| − | Mengamati Android sebagai OS yang bisa di-boot | + | * Mengamati Android sebagai OS yang bisa di-boot |
| − | Melihat langsung relasi kernel ↔ user space | + | * Melihat langsung relasi kernel ↔ user space |
| − | Penutup | + | ==Penutup== |
Android dalam buku ini bukan dipelajari sebagai platform aplikasi, melainkan sebagai: | Android dalam buku ini bukan dipelajari sebagai platform aplikasi, melainkan sebagai: | ||
| − | contoh nyata sistem operasi modern berbasis Linux yang berhasil diadopsi secara global. | + | contoh nyata sistem operasi modern berbasis Linux yang berhasil diadopsi secara global. |
| + | |||
Dengan memahami Android pada level arsitektur OS, mahasiswa tidak hanya: | Dengan memahami Android pada level arsitektur OS, mahasiswa tidak hanya: | ||
| − | Mengerti cara pakai Android, tetapi | + | Mengerti cara pakai Android, tetapi |
| − | Siap menjadi OS engineer yang memahami sistem dari kernel hingga aplikasi. | + | Siap menjadi OS engineer yang memahami sistem dari kernel hingga aplikasi. |
| − | |||
==Pranala Menarik== | ==Pranala Menarik== | ||
* [[Sistem operasi]] | * [[Sistem operasi]] | ||
Latest revision as of 09:59, 15 February 2026
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.
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.