Jumat, 15 Juni 2012

DeadLock

>>A. DEADLOCK
>SINKRONISASI PROSES
Proses-proses terlibat hubungan kerjasama (saling ketergantungan)
melalui shared data
Sinkronisasi perlu dilakukan agar diperoleh shared data yang konsisten
Beberapa istilah:
Critical section: code segment yang harus dieksekusi dengan cara mutual
exclusion
Mutual exclusion: jika proses Pi sedang berada dalam critical section,
tidak ada proses lain yang boleh mengaksesnya
Atomic operation: sebuah operasi yang ketika dijalankan harus
diselesaikan tanpa terbagi (uninterrupted)

>ILUSTRASI: critical section








>PENERAPAN
Level user:
Solusi Peterson
Lock
Level kernel (HW):
TestAndSet
Swap
Semaphore
Monitor

>CONTOH KASUS
Bounded Buffer
Readers Writers
Dinining Philosopher

Mempelajari konsep deadlock yang mencegah terhentinya eksekusi dua
proses konkuren
Mempelajari sejumlah metode untuk menghindari deadlock dalam
sistem

>KONSEP
Sekumpulan proses yang masing-masing memegang resource yang
dibutuhkan proses lain, sementara dan di waktu yang sama
membutuhkan resource yang dimiliki proses lain
Contoh:
Semaphore A dan B, dieksekusi oleh proses P0 dan P1dengan skenario
berikut
   P0       P0
wait(A) wait(B)
wait(B) wait(A)


>ILUSTRASI


Tiap sisi jembatan adalah resource
Agar proses dapat dilanjutkan, harus ada proses yang ditunda
eksekusinya
Beberapa proses dapat ditunda eksekusinya untuk menyelesaikan
deadlock

>KARAKTER deadlock
Deadlock terjadi ketika kondisi berikut terjadi secara simultan
Mutual exclusion: hanya ada satu proses mengakses sebuah resource
di saat yang sama
Hold and wait: sebuah proses yang memegang sebuah resource
menunggu resource lain yang sedang digunakan proses lain
No preemption: resource hanya dapat dilepas secara sukarela oleh
proses yang menggunakannya, ketika proses tersebut selesai
menggunakannya (penggunaan resource tidak dapat dibatalkan)
Circular wait: hubungan Hold and wait yang melingkar (tidak berujung
pangkal)

>MODEL SYSTEM
Setiap resource Ri , memiliki instance Wi
Setiap proses memanfaatkan resource dengan pola
-request
-use
-release

>DIAGRAM ALOKASI resource

P= proses (lingkaran )
R= resource (segiempat)
Request: P !R
Assignment: R !P


>ILUSTRASI deadlock

>SIKLUS TANPA deadlock


>DARI GRAFIK
Tanpa siklus: tidak terjadi deadlock
Dengan siklus:
jika hanya ada satu resource instance ! deadlock
jika ada beberapa resource instance ! bisa deadlock

>CONTOH deadlock




>MENGELOLA deadlock




>PENDEKATAN DALAM MENGELOLA deadlock
Pastikan sistem tidak akan pernah memasuki deadlock
Jika harus memasuki deadlock, siapkan metode recovery
Abaikan potensi deadlock, gunakan asumsi deadlock tidak terjadi
>MENCEGAH deadlockMencegah deadlock didasarkan pada kondisi deadlock dapat terjadi. Jika
kondisi tersebut dapat dicegah, deadlock dapat dicegah.
#Mutual exclusion: non-shareable resource
#Hold and wait: memastikan bahwa proses yang meminta suatu resource
tidak sedang memengang resource lain, dilakukan dengan cara:
 -kebutuhan resource sebuah proses harus dipenuhi dulu, sebelum instruksi
dieksekusi
-proses hanya dapat meminta resource ketika tidak sedang memegang
resource apapun
-dapat menimbulkan low resource utilization, starvation


#No-preemption:
-jika proses yang sedang memegang kendali resource, lalu menunggu
resource lain, maka resource yang dipegangnya harus dilepas
-jika ada proses yang meminta resource, evaluasi ketersediaannya:

#Dalam mengevaluasi
-jika tersedia, alokasikan
-jika sedang digunakan proses lain, sementara proses tersebut menunggu
resource lain, pre-empted, lalu alokasikan
-jika menunggu (wait):
 *dalam kondisi menunggu, resource yang sedang dipegangnya dapat di
pre-empted jika ada proses yang membutuhkan.
*proses dapat diulang ketika resource yang diperlukan tersedia dan
mengembalikan resource yang di pre-empted saat sedang menunggu

#Circular wait:
-menerapkan sistem pengurutan jenis resource, setiap resource diberi
identitas bilangan integer
-mensyaratkan proses untuk meminta resource secara terurut, jika sedang
memegang resource dengan identitas i, proses hanya bisa meminta
resource dengan identitas j, dengan j > i, jika sebaliknya resource i harus
dilepas

>MENCEGAH DEADLOCK
Mencegah deadlock adalah mekanisme merancang interaksi
request-allocate resource dengan menjamin bahwa kondisi deadlock
tidak terjadi.
Kekurangan:
penggunaan resource rendah
penurunan system throughput

>MENGHINDARI DEADLOCKMengelola informasi untuk digunakan sebagai dasar request-allocate
resource tidak menimbulkan deadlock.
Informasi tersebut mengenai:
resource yang tersedia
resource yang sedang dialokasikan ke proses tertentu
request-release resource dari setiap proses
Dari informasi tersebut, sistem akan menentukan apakah sebuah
permintaan dapat dialokasikan atau harus menunggu untuk
menghindari deadlock

>KONSEP Safe state
Kondisi di mana sistem dapat mengalokasi resource ke proses tanpa
deadlock
Pada suatu sistem terdapat proses < P1,P2, : : :Pn >. Permintaan
proses Pi dapat dipenuhi oleh resource yang tersedia, ditambah
resource dari proses Pj dengan j < i
Jika permintaan tidak segera terpenuhi Pi harus menunggu
Ketika Pj selesai menggunakan resource, Pj melepaskan resource
sehingga dapat digunkan Pi
Pi kemudian menggunakan resource dan menyelesaikan pekerjaan
System safe: tidak terjadi
deadlock
System unsafe:
kemungkinan deadlock
Menghindari deadlock:
mencegah sistem masuk ke kondisi unsafe
 
>ALGORITMA
Jika instance sebuah resource tunggal:
resource-allocation graph
Jika instance sebuah resource jamak:
algoritma banker’s

>SKEMA resource-allocation graph
Claim: P 99K R
Request: P !R
Assignment: R !P
Cegah terjadinya circular wait


>ILUSTRASI Safe State

 Unsafe State




>ALGORITMA BANKER’S
Diperlukan struktur data:
Available: jika Available[j] = k, maka ada k instance dari resource j
Max: jika Max[i, j] = k, kebutuhan maksimum Pi adalah sebesar k
instance dari resource dari jenis j
Allocation: jika Allocation[i, j] = k, Pi sedang diberi alokasi sebesar k
instance dari resource j
Need: jika Need[i, j] = k, Pi perlu tambahan k instance lagi dari
resource j
Need[i, j] = Max[i, j]ô€€€Allocation[i, j]


>ILUSTRASI
Terdapat 5 proses: P0,P1,P2,P3,P4
3 jenis resource, masing-masing:
A = 10 instances
B = 5 instances
C = 7 instances
Saat t = 0



Need = Max - Allocation


Bagaimana urutan eksekusi proses agar tergolong sebagai safe state?

>CONTOH
Banyaknya resource: A=10, B=5, C=7
Dengan P1 meminta tambahan alokasi 1 untuk A dan 2 untuk C, pada
t = 0


Bagaimana urutan eksekusi proses agar tergolong sebagai safe state?



>DETEKSI deadlock
Sistem diperbolehkan memasuki kondisi deadlock
Menerapkan algoritma deteksi deadlock
Melakukan recovery




>Resource DENGAN instance TUNGGALMemperhatikan grafik alokasi resource:

kotak=resource
lingkaran=proses
Menjaga grafik wait-for: Pi !Pj menunjukkan proses Pi menunggu Pj
Secara periodik menjalankan algoritma untuk mendeteksi circular wait
dalam grafik wait-for

>ILUSTRASI



GAMBAR: (a). Resource-allocation graph (b). Wait-for graph





>Resource DENGAN instance JAMAKBeberapa variabel yang diperlukan:

Available: jumlah instance resource yang tersedia
Allocation: jumlah resource yang telah teralokasi
Request: Request[i, j] = k, Pi meminta sejumlah k resource lebih dari
yang telah dialokasikan

>ILUSTRASI
5 proses: P0,P1,P2,P3,P4
Resource: A = 7, B = 2, C = 6
Saat t = 0




Bagaimana urutan eksekusi proses agar tergolong sebagai safe state?



>PENGGUNAANWaktu dan bagaimana algoritma deteksi dijalankan tergantung pada:

Seberapa sering deadlock terjadi: semakin sering deadlock,
semakin sering algoritma deteksi dijalankan,
semakin sering resource yang terlibat deadlock, idle
Berapa banyak proses yang terpengaruh oleh deadlock
deadlock terjadi karena ada proses yang tidak dapat segera dilayani
permintaan resource untuknya
proses lain yang terkait akan terpengaruh, sehingga berpotensi menjadi
sumber deadlock juga



>PENGHENTIAN (terminated)

Menghentikan semua proses deadlock
Menghentikan proses deadlock satu per satu, hingga deadlock terurai,
pilihan didasarkan pada:
prioritas
berapa banyak eksekusi yang telah diselesaikan & berapa yang tersisa
resource yang digunakan
resource yang diperlukan untuk selesai
berapa banyak proses yang akan dibatalkan (terminated)
proses interactive atau batch

>PENUNDAAN (pre-emted)Pemilihan: didasarkan pada minimasi biaya

Rollback: mengembalikan kondisi proses ke safe state terdekat, lalu
ulangi eksekusi dari titik tersebut
Starvation: ada proses yang selalu dikorbankan (pre-empted) ketika
terjadi deadlock


>> B. KERNEL
Pengertian Kernel

Sebuah sistem operasi mempunyai sebuah bagian sangat penting yang disebut dengan kernel. Kernel merupakan inti dari sistem operasi dan bagian yang pertama kali diload ke memori ketika sistem mulai dan tetap berjalan sampai sistem berhenti. Servisnya diperlukan oleh bagian dari sistem operasi lainnya dan program aplikasi.

Kernel menjalankan servis dasar dari sistem operasi seperti manajemen memori, manajemen proses, manajemen file, dan manajemen i/o (input/output). Untuk menjalankan servis-servis tersebut, kernel terdiri dari bermacam isi tergantung dari sistem operasinya, tetapi umumnya pasti ada scheduler, supervisor, interrupt handler, dan memory manager. Scheduler berfungsi untuk mengatur pembagian waktu dan urutan dari proses-proses yang ingin mendapatkan servis dari kernel. Supervisor berfungsi untuk memberikan servis oleh kernel kepada proses yang sudah dijadwalkan. Interrupt handler berfungsi untuk menangani seluruh permintaan dari hardware yang ingin mendapatkan servis dari kernel. Memori manager berfungsi untuk mengatur alokasi alamat di memori.

Semua sistem operasi yang ada mempunyai kernel didalamnya, biasanya sebuah kernel didisain untuk sebuah sistem operasi yang spesifik. Kernel yang didisain untuk microsoft windows 98 hanya akan dipakai oleh sistem operasi tersebut. Linux juga mempunyai kernel yang didisain untuknya tetapi user bisa memodifikasinya sesuai kebutuhannya masing-masing. Hal tersebut juga yang membuat terminologi kernel lebih dikenal di linux karena sifat kernelnya yang terbuka, berbeda dengan sistem operasi lainnya yang kernelnya tidak bisa dimodifikasi.

Jenis-jenis Kernel

Kernel dibagi menjadi 4 kategori yaitu monolithic, microkernel, hybrid kernel, dan exokernel. Setiap kategori tersebut memiliki perbedaan disain, sehingga masing-masing memiliki kelebihan dan kekurangan dalam pengimplementasiannya.

    Monolithic

Kernel monolithic memiliki seluruh servis dasar dari sistem operasi didalamnya. Kelebihan dari disain monolithic adalah efisiensi, sehingga performa sistem juga meningkat. Hal ini dikarenakan keseluruhan proses yang memerlukan fungsi kernel terjadi didalam kernel itu sendiri. Monolithic juga memiliki kelemahan, salah satunya dalam hal stabilitas, dimana kemungkinan sistem crash lebih besar. Contoh kernel berdisain monolithic yang paling dikenal terdapat dalam sistem operasi linux dan microsoft windows 9x.

    Microkernel

Disain microkernel hanya mengimplemetasikan servis dasar minimal yang diperlukan, yaitu manajemen pengalamatan memori, manajemen proses/thread, dan inter-process communication. Kelebihan microkernel adalah stabilitas sistem lebih terjaga dan kekurangannya adalah komunikasi antara proses menjadi lebih rumit sehingga sistem menjadi tidak efisien. Contoh kernel berdisain microkernel terdapat dalam sistem operasi mac os x, minix, qnx ,dan lain-lain.

    Hybrid kernel

Disain hybrid kernel menyerupai microkernel tetapi dengan tambahan kode yang menyebabkan hybrid kernel dapat berjalan lebih cepat dari microkernel. Hal tersebut yang juga merupakan kelebihan dari hybrid kernel. Contoh kernel berdisain hybrid kernel terdapat dalam sistem operasi microsoft windows nt, windows 2000, dan windows xp.

    Exokernel

Disain exokernel masih merupakan disain eksperimental dan dalam tahap penelitian sehingga belum dipakai secara luas. Perbedaan konsep disain exokernel dengan disain kernel lainnya adalah exokernel memiliki fungsi perlindungan dan pembagian resource untuk hardware. Kelebihan exokernel adalah bisa dimasukkan library sistem operasi lebih dari satu sehingga bisa menjalankan program-program untuk sistem operasi yang berbeda secara bersamaan. Contoh exokernel terdapat pada nemesis, masih sistem operasi konsep, ditulis oleh university of cambridge, university of glasgow, citrix systems, dan the swedish institute of computer science.