Metode ini menyusun sistem operasi dengan menghapus semua komponen yang tidak esensial dari kernel, dan mengimplementasikannya sebagai program sistem dan level pengguna. Hasilnya kernel yang lebih kecil. Pada umumnya mikrokernel mendukung proses dan menagemen memori yang minimal, sebagai tambahan utnuk fasilitas komunikasi.Fungsi utama mikrokernel adalah mendukung fasilitas komunikasi antara program klien dan bermacam-macam layanan yang juga berjalan di user space. Komunikasi yang dilakukan secara tidak langsung, didukung oleh sistem message passing, dengan bertukar pesan melalui mikrokernel.Salah satu keuntungan mikrokernel adalah ketika layanan baru akan ditambahkan ke user space, kernel tidak perlu dimodifikasi. Kalau pun harus, perubahan akan lebih sedikit. Hasil sistem operasinya lebih mudah untuk ditempatkan pada suatu desain perangkat keras ke desain lainnya. Mikrokernel juga mendukung keamanan reliabilitas lebih, karena kebanyakan layanan berjalan sebagai pengguna proses. Jika layanan gagal, sistem operasi lainnya tetap terjaga. Beberapa sistem operasi yang menggunakan metode ini adalah TRU64 UNIX, MacOSX, dan QNX.
Beberapa kelebihan mikro kernel:a. Interface yang seragam. Proses tidak lagi dibedakan, baik antara kernel-level maupun user-level,karena semuanya berkomunikasi via message passing.
b. Extensibility. Bisa menambahkan fitur-fitur baru tanpa perlu melakukan kompilasi ulang.
c. Flexibility. Fitur-fitur yang sudah ada bisa dikurangi, atau dimodifikasi sesuai dengan kebutuhan sehingga menjadi lebih efisien. Misalnya tidak semua pengguna membutuhkan security yang sangat ketat, atau kemampuan untuk melakukan distributed computing.
d. Portability. 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.
e. Reliability. Semakin besar suatu software, maka tentulah semakin sulit untuk menjamin reliabilitynya. Desain dengan pendekatan berlapis sangatlah membantu, dan dengan pendekatan mikro kernel bisa lebih lagi. Mikro kernel dapat diuji secara ekstensif karena dia menggunakan API yang sedikit,sehingga bisa meningkatkan kualitas code di luar kernel.
f. Support for object-oriendted OS. Model mikro kernel sangat sesuai untuk mengembangkan sistem operasi yang berbasis object-oriented. Contoh sistem operasi yang menggunakan mikro kernel adalah Mac OS X dan QNX.
Microkernel hanya memiliki fungsi manajemen sederhana untuk mendeliver services :
1. low-level address space management : sistem pengalamatan physical atau virtual untuk memory, network host, peripheral, dan lain-lain.
2. thread management : pengaturan proses (=’molekul’) yang terpecah menjadi thread (=’atom’) dan dijalankan secara paralel.
3. inter-process communication (IPC) : pengaturan komunikasi antar thread pada satu atau beberapa proses. IPC bisa punya ruang lingkup di dalam atau antar computer.
Untuk mengatur kegiatan proses mereka perlu saling berkomunikasi. Linux mendukung berbagai mekanisme komunikasi antar proses (KAP). Sinyal dan pemipaan merupakan dua di antaranya, tapi linux juga mendukung system sistem ke lima mekanisme KAP.
Manajemen I/O berguna Untuk mengelola perangkat masukan/keluaran, dimana perangkat tersebut digunakan proses tertenty, sehingga perlu dijaga agar proses lain tidak memakainya. Sistem operasi perlu mengetahui status operasi masukan/keluaran dan lokasi memori utama yang digunakan untuk transfer data.
Manajemen Memory
Manajemen memory level bawah (low- level): Memetakan setiap page virtual ke frame fisik
- Sebagian besar tugas manajemen memory terjadi dalam user space
Komunikasi Antar Proses (IPC)
- Komunikasi antar proses (Interprocess Communication) atau thread dalam suatu SO mikrokernel adalah melalui message.
- Suatu message menyertakan:
- Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi kontrol mengenai proses.
Manajemen I/O & interrupt
- Di dalam mikrokernel, adalah mungkin menangani interupsi hardware sebagai message dan menyertakan port I/O dalam ruang alamat.
- Proses user-level tertentu dilewatkan ke interrupt & kernel memelihara pemetaan tersebut.
Sumber-sumber refrensi:
Abraham Silberschatz, Peter Galvin, Greg Gagne.2003. Operating System Concepts, Sixth Edition.John Wiley &
Sons.
Andrew S Tanenbaum, Albert S Woodhull.1997.Operating System Design and Implementation, Second Edition.
Prentice Hall.
Andrew S Tanenbaum.2001.Modern Operating System, Second Edition.Prentice Hall.
William Stallings.2001.Operating Systems, Fourth Edition. Prentice Hall.
http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/ BUKU/SistemOperasi/x395.html
THREAD
Thread merupakan kemampuan yang disediakan oleh Java untuk membuat aplikasi yang tangguh, karena thread dalam program memiliki fungsi dan tugas tersendiri. Dengan adanya thread, dapat membuat program yang lebih efisien dalam hal kecepatan maupun penggunaan sumber daya, karena kita dapat membagi proses dalam aplikasi kita pada waktu yang sama. Thread umumnya digunakan untuk pemrograman multitasking, networking, yang melibatkan pengaksesan ke sumber daya secara konkuren.
Ada 2 cara pembuatan thread:
1. Membuat subclass dari thread
Untuk menjalankan thread, dapat dilakukan dengan memanggil method start(). Saat start() dijalankan, maka sebenarnya method run() dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan method run() pada definisi class. Konstruktor dari cara ini adalah :
ClassThread namavar = new ClassThread();
Namavar.start();
Atau dapat juga langsung dengan cara:
New ClassThread().start();
2. Mengimplementasikan interface Runnable
Cara ini merupakan cara yang paling sederhana dalam membuat thread. Runnable merupakan unit abstrak, yaitu kelas yang mengimplementasikan interface ini hanya cukup mengimplementasikan fungsi run(). Dalam mengimplementasi fungsi run(), kita akan mendefinisikan instruksi yang membangun sebuah thread. Konstruktor dari cara ini adalah :
ObjekRunnable objek = new ObjekRunnable();
Thread namavar = new Thread(Objek Runnable);
Atau dengan cara singkat seperti :
New Thread(new ObjekRunnable());
Keunggulan Java Threads adalah:
- JVM menggunakan prioritas preemptive berdasarkan algoritma penjadualan
-Semua threads di Java mempunyai prioritas. Prioritas tertinggi dijadualkan untuk dieksekusi oleh JVM
- Jika ada 2 thread yang prioritasnya sama, digunakan algoritma First In First Out (FIFO)
Contoh program:
class TestSinkronisasi {
private java.util.Random random = new java.util.Random();
public void callMe(String data) {
System.out.print(“[");
try{
Thread.sleep(random.nextInt(200));
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.print(data);
try{
Thread.sleep(random.nextInt(200));
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("]“);
}
}
class ThreadBaru extends Thread {
private String data;
private TestSinkronisasi obj;
public ThreadBaru(TestSinkronisasi obj,String data) {
this.obj = obj;
this.data = data;
start();
}
public void run() {
obj.callMe(data);
}
}
class DemoThread {
public static void main(String[] args) {
TestSinkronisasi obj = new TestSinkronisasi();
ThreadBaru thread1 = new ThreadBaru(obj,”Superman”);
ThreadBaru thread2 = new ThreadBaru(obj,”Batman”);
ThreadBaru thread3 = new ThreadBaru(obj,”Spiderman”);
//tunggu hingga semua child thread selesai dieksekusi
try{
thread1.join();
thread2.join();
thread3.join();
}catch(InterruptedException e) {
System.out.println(“Thread utama diinterupsi ” + e);
}
}
}
Tidak ada komentar:
Posting Komentar