Kinerja Microkernel
Pendekatan mikrokernel berisi sebuah abstraksi yang sederhana terhadap hardware, dengan sekumpulan primitif atau system call yang dapat digunakan untuk membuat sebuah sistem operasi agar dapat berjalan, dengan layanan-layanan seperti manajemen thread, komunikasi antar address space, dan komunikasi antar proses. Layanan-layanan lainnya, yang biasanya disediakan oleh kernel, seperti halnya dukungan jaringan, pada pendekatan microkernel justru diimplementasikan di dalam ruangan pengguna (user-space), dan disebut dengan server.
Server atau disebut sebagai peladen adalah sebuah program, seperti halnya program lainnya. Server dapat mengizinkan sistem operasi agar dapat dimodifikasi hanya dengan menjalankan program atau menghentikannya. Sebagai contoh, untuk sebuah mesin yang kecil tanpa dukungan jaringan, server jaringan (istilah server di sini tidak dimaksudkan sebagai komputer pusat pengatur jaringan) tidak perlu dijalankan. Pada sistem operasi tradisional yang menggunakan monolithic kernel, hal ini dapat mengakibatkan pengguna harus melakukan rekompilasi terhadap kernel, yang tentu saja sulit untuk dilakukan oleh pengguna biasa yang awam.
Dalam teorinya, sistem operasi yang menggunakan microkernel disebut jauh lebih stabil dibandingkan dengan monolithic kernel, karena sebuah server yang gagal bekerja, tidak akan menyebabkan kernelmenjadi tidak dapat berjalan, dan server tersebut akan dihentikan oleh kernel utama. Akan tetapi, dalam prakteknya, bagian dari system state dapat hilang oleh server yang gagal bekerja tersebut, dan biasanya untuk melakukan proses eksekusi aplikasi pun menjadi sulit, atau bahkan untuk menjalankan server-server lainnya.
Sistem operasi yang menggunakan microkernel umumnya secara dramatis memiliki kinerja di bawah kinerja sistem operasi yang menggunakan monolithic kernel. Hal ini disebabkan oleh adanya overheadyang terjadi akibat proses input/output dalam kernel yang ditujukan untuk mengganti konteks (context switch) untuk memindahkan data antara aplikasi dan server.
Beberapa sistem operasi yang menggunakan microkernel:
- IBM AIX, sebuah versi UNIX dari IBM
- Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi
- Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP, OPENSTEP, dan Mac OS/X
- Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan edukasi
- Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld device,embedded device, dan PDA Phone.
Kelebihan Organisasi Microkernel
• Interface seragam pada request dibuat oleh suatu proses. tidak ada yang membedakan antar kernel-level dengan user-level karena semuanya berkomunikasi menggunakan via message passing
• Extensibility merupakan penambahan fitur-fitur terbaru tanpa harus melakukan compilasi lagi
• Flexibility berarti kita dapat menambahkan fitur-fitur baru, atau memodifikasi fitur yang sudah ada sehingga lebih efisien
• Portability berarti Pada mikro kernel, semua atau sebagian besar kode yang prosesor-spesifik berada di dalamnya. Jadi, proses porting ke prosesor lain bisa dilakukan dengan relatif sedikit usaha. Pada kelompok desktop misalnya, tampaknya dominasi Intel makin kuat. Tapi, sampai seberapa lama itu bisa bertahan? Karena itulah, portability adalah salah satu isu yang sangat penting.
• Reliability berarti dengan desain dengan pendekatan berlapis sangatlah membantu dalam proses kinerja kernel, microkernel sendiri dapat diuji secara intensif menggunakan API sehingga meningkatkan kualitas code luar kernel
• Dukungan sistem terdistribusi pada sistem operasi berorientasi obyek karena microkernel sangat cocok dengan sistem operasi yang berorientasi pada obyek misalnya pada MAC-OS
• Extensibility merupakan penambahan fitur-fitur terbaru tanpa harus melakukan compilasi lagi
• Flexibility berarti kita dapat menambahkan fitur-fitur baru, atau memodifikasi fitur yang sudah ada sehingga lebih efisien
• Portability berarti Pada mikro kernel, semua atau sebagian besar kode yang prosesor-spesifik berada di dalamnya. Jadi, proses porting ke prosesor lain bisa dilakukan dengan relatif sedikit usaha. Pada kelompok desktop misalnya, tampaknya dominasi Intel makin kuat. Tapi, sampai seberapa lama itu bisa bertahan? Karena itulah, portability adalah salah satu isu yang sangat penting.
• Reliability berarti dengan desain dengan pendekatan berlapis sangatlah membantu dalam proses kinerja kernel, microkernel sendiri dapat diuji secara intensif menggunakan API sehingga meningkatkan kualitas code luar kernel
• Dukungan sistem terdistribusi pada sistem operasi berorientasi obyek karena microkernel sangat cocok dengan sistem operasi yang berorientasi pada obyek misalnya pada MAC-OS
Rancangan Microkernel
Pada pembahasan “Struktur Sederhana”, sempat disinggung istilah “kernel”. Apakah kernel itu? Kernel adalah komponen sentral dari sistem operasi. Ia mengatur hal-hal seperti interrupt handler(untuk menyediakan layanan interupsi), process scheduler(membagi-bagi proses dalam prosesor), memory management, I/O, dan sebagainya. Atau dengan kata lain, ia adalah jembatan antara hardware dengan software.
Cara tradisional untuk membangun sistem operasi adalah dengan membuat kernel monolitis, yaitu semua fungsi disediakan oleh kernel, dan ini menjadikan kernel suatu program yang besar dan kompleks.
Cara yang lebih modern, adalah dengan menggunakan kernel mikro. Pada awalnya, konsep mikro kernel dikembangkan pada sistem operasi Mach. Ide dasar dari pengembangan kernel mikro adalah bahwa hanya fitur-fitur yang perlu saja yang diimplementasikan dalam kernel (mengenai fitur-fitur apa saja yang perlu diimplementasikan, ini bisa berbeda tergantung desain sistem operasi).
Walaupun garis pembatas mengenai apa saja yang berada di dalam dan luar kernel mikro bisa berbeda antara desain yang satu dengan yang lain, namun ada karakteristik yang umum, yaitu servis-servis yang umumnya menjadi bagian sistem operasi menjadi subsistem eksternal yang bisa berinteraksi satu sama lain dan dengan kernel tentunya. Ini mencakup device driver, file system, virtual memory manager, windowing system, dan security devices. Pendekatan kernel mikro menggantikan pendekatan berlapis yang vertikal tradisional.
Komponen-komponen sistem operasi yang berada di luar kernel mikro diimplementasikan sebagai server process dan berkomunikasi dengan message passing via kernel mikro. Misalnya jika user ingin membuat berkas baru, dia mengirim pesan ke file system server, atau jika ingin membuat proses baru, dia mengirimkan pesan ke process server.
Gambar 7.2. Struktur kernel mikro
Cara tradisional untuk membangun sistem operasi adalah dengan membuat kernel monolitis, yaitu semua fungsi disediakan oleh kernel, dan ini menjadikan kernel suatu program yang besar dan kompleks.
Cara yang lebih modern, adalah dengan menggunakan kernel mikro. Pada awalnya, konsep mikro kernel dikembangkan pada sistem operasi Mach. Ide dasar dari pengembangan kernel mikro adalah bahwa hanya fitur-fitur yang perlu saja yang diimplementasikan dalam kernel (mengenai fitur-fitur apa saja yang perlu diimplementasikan, ini bisa berbeda tergantung desain sistem operasi).
Walaupun garis pembatas mengenai apa saja yang berada di dalam dan luar kernel mikro bisa berbeda antara desain yang satu dengan yang lain, namun ada karakteristik yang umum, yaitu servis-servis yang umumnya menjadi bagian sistem operasi menjadi subsistem eksternal yang bisa berinteraksi satu sama lain dan dengan kernel tentunya. Ini mencakup device driver, file system, virtual memory manager, windowing system, dan security devices. Pendekatan kernel mikro menggantikan pendekatan berlapis yang vertikal tradisional.
Komponen-komponen sistem operasi yang berada di luar kernel mikro diimplementasikan sebagai server process dan berkomunikasi dengan message passing via kernel mikro. Misalnya jika user ingin membuat berkas baru, dia mengirim pesan ke file system server, atau jika ingin membuat proses baru, dia mengirimkan pesan ke process server.
Gambar 7.2. Struktur kernel mikro
Manajemen Memory
Manajemen memory level bawah (low-level): Memetakan setiap page virtual ke frame fisik– Sebagian besar tugas manajemen memory terjadi dalam user space
mikrokernel telah untuk mengontrol perangkat keras konsep ruang alamat untuk membuatnya mungkin untuk menerapkan perlindungan pada tingkat proses. Selama mikrokernel bertanggung jawab untuk setiap pemetaan virtual halaman bingkai fisik, sebagian besar manajemen memori, termasuk perlindungan ruang alamat dari satu proses dari yang lain dan algoritma penggantian halaman dan logika paging lainnya, dapat diterapkan di luar kernel. Sebagai contoh, modul memori virtual di luar mikrokernel memutuskan kapan harus membawa halaman ke memori dan halaman yang sudah di memori untuk diganti; peta mikrokernel Halaman ini referensi ke sebuah alamat fisik di memori utama. Konsep bahwa paging dan manajemen memori virtual dapat dilakukan eksternal untuk kernel diperkenalkan dengan pager eksternal Mach’s. Ketika sebuah thread di aplikasi referensi halaman tidak dalam memori utama, halaman kesalahan terjadi dan pelaksanaan perangkap ke kernel. Kernel kemudian mengirimkan pesan ke pager menunjukkan proses halaman yang telah dirujuk. Pager itu dapat memutuskan untuk memuat halaman tersebut dan mengalokasikan bingkai halaman untuk tujuan itu. The pager dan kernel harus berinteraksi dengan peta pager’s logis operasi ke memori fisik. Setelah halaman tersedia, pager mengirimkan kembali pesan ke aplikasi tersebut. Teknik ini memungkinkan suatu proses nonkernel untuk file peta dan database ke Alamat pengguna ruang tanpa invoking kernel. Aplikasi kebijakan khusus memori berbagi dapat diimplementasikan di luar kernel menunjukkan satu set hanya tiga operasi mikrokernel yang dapat mendukung eksternal paging dan manajemen memori virtual:
• Grant: Pemilik ruang alamat (proses) dapat memberikan sejumlah yanghalaman untuk proses lain. Kernel menghapus halaman ini dari pemberi’s alamat ruang dan memberikan mereka ke proses yang ditunjuk.
• Grant: Pemilik ruang alamat (proses) dapat memberikan sejumlah yanghalaman untuk proses lain. Kernel menghapus halaman ini dari pemberi’s alamat ruang dan memberikan mereka ke proses yang ditunjuk.
• Peta: Suatu proses dapat memetakan setiap halaman ke dalam ruang alamat lain proses, sehingga kedua proses memiliki akses ke halaman. Hal ini menciptakan bersama memori antara dua proses. Kernel menjaga penugasan halaman ini kepada pemilik asli tetapi menyediakan pemetaan untuk izin akses oleh proses lainnya.
• Flush: Sebuah proses dapat kembali halaman apapun yang diberikan atau dipetakan untuk lainnya proses.
Untuk memulai, semua kernel mengalokasikan memori fisik yang tersedia sebagai sumber daya untuk sebuah sistem basis proses. Sebagai proses baru dibuat, halaman dari total asli address space dapat diberikan atau dipetakan ke proses baru. Skema tersebut bisa skema dukungan beberapa memori virtual secara bersamaan.
Untuk memulai, semua kernel mengalokasikan memori fisik yang tersedia sebagai sumber daya untuk sebuah sistem basis proses. Sebagai proses baru dibuat, halaman dari total asli address space dapat diberikan atau dipetakan ke proses baru. Skema tersebut bisa skema dukungan beberapa memori virtual secara bersamaan.
Komunikasi Antar Proses
• Komunikasi antar proses (Interprocess Communication) atau thread dalam suatu SO mikrokernel adalah melalui message.
• Suatu message menyertakan:
– Header yang mengidetifikasi proses pengiriman dan penerimaan, dan
– Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi kontrol mengenai proses.
• Suatu message menyertakan:
– Header yang mengidetifikasi proses pengiriman dan penerimaan, dan
– Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi kontrol mengenai proses.
Catatan tentang message lewat tepat di sini. Pesan lewat antara proses terpisah dengan ruang alamat nonoverlapping melibatkan memori-ke-memori
menyalin dan karenanya dibatasi oleh kecepatan memori dan tidak skala dengan prosesor
speeds. Kemudian, saat ini penelitian OS mencerminkan suatu kepentingan IPC benang dan skema berbasis memori-sharing seperti pemetaan ulang halaman (satu halaman bersama oleh banyak proses).
menyalin dan karenanya dibatasi oleh kecepatan memori dan tidak skala dengan prosesor
speeds. Kemudian, saat ini penelitian OS mencerminkan suatu kepentingan IPC benang dan skema berbasis memori-sharing seperti pemetaan ulang halaman (satu halaman bersama oleh banyak proses).
Manajemen I/O dan Interupsi
Dengan arsitektur microkernel, adalah mungkin untuk menangani interupsi perangkat keras sebagai pesan dan untuk memasukkan port I / O dalam alamat spasi. mikrokernel dapat mengenali interupsi tetapi tidak menangani mereka. Sebaliknya, itu menghasilkan pesan untuk proses user-level saat ini terkait dengan yang mengganggu. Jadi, ketika interrupt diaktifkan, sebuah proses user-level tertentu ditugaskan untuk yang mengganggu dan kernel mempertahankan pemetaan. Transformasi interupsi ke pesan harus dilakukan oleh mikrokernel, tetapi mikrokernel tidak terlibat dalam
perangkat mengganggu penanganan khusus. Menyarankan melihat perangkat keras sebagai kumpulan benang yang unik thread pengidentifikasi dan mengirim pesan (terdiri hanya dari benang ID) untuk benang perangkat lunak yang berhubungan dalam ruang pengguna. Seutas benang menerima menentukan apakah pesan tersebut berasal dari interrupt dan menentukan interrupt tertentu. Umum struktur kode user-level tersebut adalah sebagai berikut:
perangkat mengganggu penanganan khusus. Menyarankan melihat perangkat keras sebagai kumpulan benang yang unik thread pengidentifikasi dan mengirim pesan (terdiri hanya dari benang ID) untuk benang perangkat lunak yang berhubungan dalam ruang pengguna. Seutas benang menerima menentukan apakah pesan tersebut berasal dari interrupt dan menentukan interrupt tertentu. Umum struktur kode user-level tersebut adalah sebagai berikut:
driver thread:
do
waitFor (msg, sender);
if (sender == my_hardware_interrupt) {
read/write I/O ports;
reset hardware interrupt;
}
else • • •;
while (true);
do
waitFor (msg, sender);
if (sender == my_hardware_interrupt) {
read/write I/O ports;
reset hardware interrupt;
}
else • • •;
while (true);
Sumber
William Stallings.2001.Operating Systems, Fourth Edition. Prentice Hall.
Andrew S Tanenbaum, Albert S Woodhull.1997.Operating System Design and Implementation, Second Edition.
cahpecel89.wordpress.com