P. 1
Microkernel pada Mach system operasi kernel

Microkernel pada Mach system operasi kernel

|Views: 136|Likes:
Published by isaac_sitompul

More info:

Published by: isaac_sitompul on Feb 24, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/15/2011

pdf

text

original

Tugas Sistem Operasi

INSTITUTTEKNOLOGI

TELKOM

Isaac Hahn Jeremia (113080058) Donny Iswan Situngkir (113080090)

Alvis Gusreo (113080031) RE

~S\E. D v~

1-'0 ~~

§ REGISTERED %

VERSION

Kelas: IF 32 01

Microkernel pada Mach system operasi kernel

Pendahuluan

Mach merupakan kernel sistem operasi yang dikembangkan di Carnegie Mellon University untuk mendukung penelitian sistem operasi, terutama komputasi terdistribusi dan paralel. Ini adalah salah satu contoh awal dari sebuah mikrokernel.derivatif nya adalah dasar dari kernel sistem operasi modern di Mac as x dan GNU Hurd. Proyek di Carnegie Mellon dimulai dari 1985 sampai 1994, berakhir dengan Mach 3.0. Mach dikembangkan sebagai pengganti kernel dalam versi BSD UNIX, sehingga tidak ada sistem operasi baru harus dirancang sekitarnya. Hari ini penelitian lebih lanjut eksperimental Mach tampaknya telah berakhir, meskipun Mach dan turunannya sedang digunakan dalam beberapa sistem operasi komersial, seperti NeXTSTEP dan OPENSTEP, dan terutama Mac as X menggunakan kernel XNU sistem operasi yang menggabungkan Mach sebagai komponen utama. Memori Mach sistem manajemen virtual juga diadopsi oleh pengembang BSD di CSRG, dan muncul dalam sistem UNIX modern BSD yang diturunkan, seperti FreeBSD. Baik Mac as X atau FreeBSD mempertahankan struktur mikrokernel dirintis di Mach, walaupun Mac as X terus menawarkan mikrokernel komunikasi antar-proses dan primitif kontrol untuk digunakan secara langsung oleh aplikasi.

Cara kerja Mach Mikrokernel

Mach dikembangkan pada konsep Accent's IPC(inter-process communication), tapi membuat sistem yang jauh lebih seperti UNIX, bahkan mampu menjalankan program UNIX dengan sedikit modifikasi atau tidak. Untuk melakukan ini, Mach memperkenalkan konsep port, mewakili setiap titik akhir dari IPC dua arah. Selain itu, Mach memungkinkan setiap program untuk menangani hak-hak istimewa yang biasanya akan diberikan kepada sistem operasi saja, dalam rangka menangani hal-hal seperti berinteraksi dengan hardware.

Perbedaan utama dengan UNIX adalah alih-alih penanganan u I

apa saja. Kode system operasi dipindah keluar dari ke

Seperti halnya UNIX, Mach juga memakai konsep Driver dalam driver harus dimasukkan kedalam microkernel. Arsitektu Abstraction Layer atau exokernels bisa memindahkan driver dari

menjadi jauh lebih kecil. Dari sanalah munculnya Mikrokernel. Jadi yang diatur dalam kernel Mach yaitu tugas penjadwalan, abstraksi memori virtual, dan komunikasi antar proses. Dan sisanya diberikan pad a

proses server.

Appllll.:ltion blNII [i~II!~ RI!

IPC !il!1'i'~r [irli'l:r !!iI!1'I'!r

Kelebihan pada Mach

Pada Mach, driver hardware dilakukan pada userlevel, dimana dapat diluncurkan dari system start up atau dari shell dengan fasilitas yang sama. Oleh karena itu ketika sebuah proses mati, maka seluruh system tidak akan menjadi "down". Sebuah proses, seperti inetd, dapat ditulis untuk melihat interaksi driver, dan secara dinamis meluncurkan driver ketika dibutuhkan. Proses yang sama dapat melihat kegagalan prematur proses driver dan meluncurkannya kembali ketika dibutuhkan.

Selain itu, pada lebih detailnya proses mikrokernel berperilaku dengan semantik yang kompatibel dengan aktor dalam pemrograman berorientasi obyek. Oleh karena itu, microkernels dapat menyediakan substrat yang lebih baik untuk pemrograman paralel dari pada yang tradisional, kernel monolitik.

Kekurangan pada Mach

Kekurangannya Mach dengan berbasis microkernel adalah akan seringnya terjadi overhead. Hal disebabkan oleh proses input/output kernel untuk memindahkan data anta

sering terjad i.

~S\E.RED V~

~0 ~

g;; ~

§ REGISTERED %

VERSION

Kesimpulan

1. Mach banyak diimplementasikan di system operasi bersifat komersial

2. Kelebihanya memungkinkan program user untuk menangani hal-hal seperti berinteraksi dengan hardware

3. Sedangkan kelemahannya adalah dapat terjadinya overhead akibat dari proses switching yang terjadi

Referensi:

http://c2.com/cgi/wiki?MachMicrokernel

http://en.wikipedia.org/wiki/Mach (kernel)

~S\E.RED V~

~0 ~

g;; ~

§ REGISTERED %

VERSION

DINING PHYlOSOPHER PROBLEM'S

Permasalahan pada Dining Phylosopher adalah dimisalkan ada lima orang filsuf yang duduk melingkar dalam sebuah meja makan bundar. Mereka hanya melakukan 2 aktivitas, yaitu : makan atau berfikir. Dimana ketika makan mereka tidak berpikir dan ketika berpikir mereka tidak makan. Kelima filsuf duduk di meja bundar dengan sebuah mangkuk besar spaghetti di tengah. Sebuah garpu ditempatkan di antara setiap pasangan filsuf yang bersebelahan. Sebagaimana yang kita ketahui akan susah untuk memakan spaghetti dengan satu garpu maka diasumsikan bahwa seorang filsuf harus makan spaghetti dengan dua garpu. Jika seorang filsuf sedang makan (menggunakan 2 buah garpu), maka filsuf yang dud uk di sebelah kiri atau kanannya tidak bisa makan (menggunakan garpu tersebut).

SOlUSI

Waiter Solution

Sebuah solusi yang relatif sederhana dicapai dengan memperkenalkan pelayan di meja. Filsuf harus meminta izin sebelum mengambil garpu apapun. Karena pelayan menyadari yang garpu sedang digunakan, ia mampu menengahi dan mencegah deadlock. Ketika empat dari garpu sedang digunakan, filsuf berikutnya harus menunggu izin pelayan, yang tidak diberikan garpu sampai ada sebuah garpu yang tidak dipakai. Logikanya dibuat sederhana dengan menetapkan bahwa para filsuf selalu berusaha untuk mengambil garpu tangan kiri mereka sebelum garpu tangan kanan mereka (atau sebaliknya). Untuk menggambarkan bagaimana ini bekerja, mempertimbangkan filsuf diberi label searah jarum jam dari A ke E. Jika A dan C adalah makan, em pat garpu sedang digunakan. B duduk antara A dan C sehingga tidak memiliki garpu tersedia, sedangkan D dan E memiliki satu garpu yang tidak terpakai di antara mereka.Misalkan D ingin makan. Apakah dia untuk mengambil garpu mungkin. Jika sebaliknya ia meminta pelayan dan diberitahu untuk waktu berikutnya dua garpu yang dilepaskan pasti akan ada setid meminta sepasang garpu. Oleh karena itu deadlock tidak bisa terja

Source Code dengan menggunakan semaphore:

import java.util.concurrent.Semaphore; import java.util.Random;

import java.util.Vector;

public class Philosopher extends Thread {

private private private private private private

static final Random rand = new Random(); static int event=O;

static String binary="";

int id;

Semaphore sem;

static Vector<Object[]> vector

new Vector<Object[]>();

public Philosopher(int i, Semaphore s) {

id = i; sem = s;

binary = binary + "0";

private void busy() {

try {

sleep(rand.nextInt(lOOO)); catch (InterruptedException e) {}

private void thinking() {

String str = "Philosopher" + id + " is thinking";

vector.add( this.addToObject(System.currentTimeMillis(), event, str)

) ;

event++; busy () ;

private void eating() {

String str ="Philosopher " + id + " is hungry and is up his forks"; vector.add(

event++; busy () ;

str = "Philosopher" + id + " is eating"; this.oneToBinary(id);

vector.add( this.addToObject(System.cur

) ;

this.zeroToBinary(id) ;

VERSION

) ;

event++; busy () ;

str = "Philosopher " + id + " finished

forks" ;

vector.add( this.addToObject(System.currentTimeMillis(), event, str)

) ;

event++;

private Object[] addToObject(long t, int i,String s ) { Object[] 0 new Object[4];

0[3] s;

0[2] i;

0[1] binary; 0[0] t; return 0;

private void oneToBinary(int i) {

binary = binary. substring (0, i) + "1" + binary.substring(i+1);

private void zeroToBinary(int i) {

binary = binary.substring(O,i) + "0" + binary.substring(i+1);

@Override

public void run() {

for (int i = 0; i < 10; ++i)

thinking(); try

{

sem.acquire() ;

catch (InterruptedException e) {} eating () ;

sem.release();

public static void main(String[] args) {

final int N = 5;

Semaphore sem = new Semaphore(N, true); Philosopher[] philosopher = new Philosopher[N];

II start the philosophers

for (int i = 0; i < N; i++) philosopher[i] = new Philosopher(i, philosopher[i] .start();

sem) ;

~S\E.RED V~

~0 ~

g;; ~

§ REGISTERED %

VERSION

II wait for them to finish for (int i = 0; i < N; i++)

try {

philosopher[i] .join(); catch(InterruptedException ex) { return;

for (int i = 0; i < vector.size(); i++) { Object[] 0 = vector.get(i);

System.out.printf("%d %d %s %s\n", 0[0], 0[2], 0[1], 0[3]);

Referensi:

http://en.wikipedia.org/wiki/Dining philosophers problem

~S\E.RED V~

~0 ~

g;; ~

§ REGISTERED %

VERSION

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->