Tuesday, December 18, 2007

Microkernel vs Monolithic Kernel dan aplikasinya pada Router

Microkernel adalah inti (kernel) dari operating system yang paling sederhana, tidak ada fasilitas apapun, menjadikannya kernel ini berukuran sangat kecil dan biasanya sangat stabil (hampir bisa dipastikan tidak ada lagi bugsnya).

Microkernel hanya memiliki fungsi manajemen sederhana untuk mendeliver services :
  • low-level address space management : sistem pengalamatan physical atau virtual untuk memory, network host, peripheral, dan lain-lain
  • thread management : pengaturan proses (='molekul') yang terpecah menjadi thread (='atom') dan dijalankan secara paralel.
  • inter-process communication (IPC) : pengaturan komunikasi antar thread pada satu atau beberapa proses. IPC bisa punya ruang lingkup di dalam atau antar komputer.
Arsitektur microkernel sangat berbeda dengan monolithic kernel :
  • Monolithic kernel memiliki struktur vertical layered : setiap aplikasi memanggil servis yang berada di bawahnya
  • Microkernel memiliki struktur horizontal : aplikasi memanggil servis yang berada sejajar dengan menggunakan IPC
Performance
Cara kerja microkernel kurang efisien dibanding dengan monolithic, karena adanya IPC setiap kali servis dipanggil. Namun demikian, pengembangan arsitektur microkernel sangat intensif, sehingga efisiensi arsitektur inipun meningkat dengan tajam.

Realtime Applications
Karena sistem microkernel menggunakan thread yang dieksekusi secara parallel, microkernel sangat mudah mendukung aplikasi realtime meskipun system sedang overloaded.

Sedangkan pada arsitektur monolithic, aplikasi realtime akan terputus-putus pada saat system overloaded.

Robustness/Keandalan Tinggi
Microkernel sangat sederhana, sehingga bisa dipastikan bebas bugs. Selain itu proses di dalam microkernel berjalan secara independent. Sehingga microkernel memiliki keandalan sangat tinggi, jauh lebih tinggi dibandingkan dengan monolithic. Oleh karena itu arsitektur microkernel banyak dipakai pada aplikasi mission critical pada embedded system.

Pada monolithic kernel, bugs lebih sering menghantam kernel karena kernelnya sangat kompleks. Selain itu semua proses saling terkait. Sehingga jika ada bugs atau proses yang menggantung, seluruh sistem bisa ikut crashed.

Security/Keamanan Tinggi
Microkernel menggunakan prinsip miminal privilege, di mana setiap proses hanya dapat mengeksekusi instruksi sederhana yang sangat spesifik. Sehingga pengaturan security menjadi sangat mudah.

Sedangkan proses2 pada arsitektur monolithic cenderung bisa melakukan eksekusi kompleks yang lebih sulit dimonitor securitynya.

Arsitektur Microkernel pada Router
Pada router-router kelas high end, seperti Cisco CRS-1, operating system dengan arsitektur Microkernel menjadi pilihan yang sangat menarik, karena keunggulan-keunggulan tadi :
  • Performance - Router CRS-1 adalah router raksasa yang memiliki CPU (dan kipas pendingin) yang sangat kuat, sehingga overhead microkernel menjadi tidak ada artinya
  • Realtime Applications - Router CRS-1 dapat menjalankan aplikasi realtime (seperti emulasi leased line, voice, telemetri, dll) tanpa takut aplikasi realtime terganggu karena ada traffic sangat tinggi atau ada serangan DDoS
  • Robustness - semua komponen hardware/software CRS-1 dapat diganti2 tanpa adanya system down sama sekali. Termasuk penggantian chassis dan switching fabric, karena CRS-1 bersifat multi chassis dan multi switching fabric (yang dimungkinkan karena microkernel ini)
  • Security - user CRS-1 memiliki tingkat privilege yang berbeda2, sehingga pengaturan security menjadi mudah sekali. Level security inipun terbawa sampai tingkat process dan thread karena arsitektur microkernel ini

No comments: