Penjelasan Semaphore
Semaphore adalah salah satu cara menangani critical section, yang dikemukakan
oleh Dijkstra. Prinsip semaphore sebagai berikut:
Dua proses atau lebih dapat bekerja sama dengan menggunakan
penanda-penanda sederhana. Proses dipaksa berhenti sampai proses
memperoleh penanda tertentu. Sembarang kebutuhan koordinasi kompleks
dapat dipenuhi dengan penanda yang sesuai kebutuhannya. Variabel khusus
untuk penandan ini disebut semaphore. Semaphore mempunyai dua property, yaitu :
1. Semaphore dapat diinisialisasi dengan nilai nonnegative.
2. Terdapat dua operasi terhadap semaphore yaitu Down dan Up. Nama asli yang disampaikan Dijkstra adalah operasi P dan V.
Semaphore S merupakan variabel bertipe integer yang diakses dengan 2 standar operasi atomic, yaitu wait dan signal. Operasi-operasi ini diwakili dengan P (wait) dan V (signal) sebagai berikut:
wait(S) : while S £ 0 do no_op;
S:=S – 1;
signal(S) : S:=S+1;
Misalkan ada 2 proses yang sedang berjalan secara konkuren, yaitu P1
dengan pernyataan S1 dan P2 dengan pernyataan S2. Andaikan kita
mengharapkan S2 baru akan dijalankan hanya setelah S1 selesai. Hal ini
dapat dilakukan dengan menggunakan bantuan semaphore synch (dengan nilai awal =0) yang akan di-share oleh kedua proses.
Untuk Proses P 1 :
S1;
signal(synch);
Untuk proses P2 :
wait(synch);
S2;
Karena nilai awal untuk synch adalah nol, maka P2 akan mengeksekusi
S2 hanya setelah P1 mengerjakan signal (synch) setelah S1. Salah satu
kerugian dari penggunaan semaphore diatas adalah adanya busy waiting.
Apabila suatu proses menempati critical section, dan ada proses lain
yang ingin masuk critical section, maka akan terjadi iterasi secara
terus -menerus pada entry section. Hal ini akan menimbulkan masalah pada
sistem yang menggunakan konsep multiprogramming.
Untuk menghindari busy waiting, dilakukan modifikasi pada operasi wait dan signal.
Jika suatu proses sedang mengeksekusi operasi wait, maka nilai
semaphore menjadi tidak positif. Pada saat ini proses akan memblok
dirinya (block ) dan ditempatkan pada waiting queue. Proses yang sedang diblok akan menunggu hingga semaphore S direstart, yaitu pada saat beberapa proses yang lain mengeksekusi operasi signal. Suatu proses akan direstart dengan operasi wakeup, yang akan mengubah proses dari keadaan waiting ke ready.
Untuk mengimplmentasikan hal ini, semaphore dirancang dalam bentuk record :
type semaphore= Record
value : integer;
L: list of process;
end;
Var s: semaphore
Operasi-operasi pda semaphore;
wait(S) S.value :=S.value-1;
if S.value < 0 then
Begin
Tambahkan proses ini ke S.L.
block;
end;
Algoritma Semaphore Dijkstra
Model untuk algoritma Dijkstra semaphore dengan menggunakan rendevous
adalah sebagai berikut :
#define p 0
#define v 1
chan sema = [0] of { bit };
proctype dijkstra()
{ byte count = 1;
do
:: (count == 1) -> sema!p; count = 0
:: (count == 0) -> sema? v; count = 1
od
}
proctype user()
{ do
:: sema? p;
/* critical section */
sema!v;
/* non-critical section */
od
}
init
{ run dijkstra(); run user();
run user(); run user()
}
Algoritma Semaphore Dijkstra
Model untuk algoritma Dekker adalah sebagai berikut :
Bit x, y; /* signal masuk/keluar dari section */
byte mutex; /* # proses yang masuk critical section. */
byte turn,A_TURN,B_TURN; /* giliran siapa? */
active proctype A() {
x = 1;
turn = B_TURN;
(y == 0 || turn == A_TURN);
mutex++;
mutex–;
x = 0;
}
active proctype B() {
y = 1;
turn = A_TURN;
(x == 0 || turn == B_TURN);
mutex++;
mutex–;
y = 0;
}
active proctype monitor() {
assert(mutex != 2);
}
Algoritma Semaphore Peterson
Model untuk algoritma 3 (Peterson) adalah sebagai berikut :
#define true 1
#define false 0
bool flag[2];
bool turn;
proctype user(bool i)
{ flag[i] = true;
turn = i;
(flag[1-i] == false || turn == 1-i);
crit: skip; /* critical section */
flag[i] = false
}
init { atomic { run user(0); run user(1) } }
Penjelasan lebih Lanjut
1. Konsep Dasar Semaphore
Semaphore termasuk pendekatan yang diajukan oleh Djikstra, dengan
prinsip bahwa dua proses atau lebih dapat bekerja sama dengan
menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa
berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu
itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan
struktur penanda yang cocok untuk kebutuhan itu. Variabel khusus untuk
penanda ini disebut semaphore.Semaphore mempunyai dua sifat, yaitu:
Semaphore dapat diinisialisasi dengan nilai non-negatif.
Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.
Semaphore adalah salah satu teknik sinyal sederhana, dan merupakan
konsep penting dalam OS desain, dimana sebuah nilai integer digunakan
untuk pensinyalan antara proses. Hanya tiga operasi yang mungkin
dilakukan pada semaphore, yang semuanya atom: inisialisasi, penurunan,
dan penaikan. Operasi pengurangan dapat mengakibatkan terhalangnya
proses, dan kenaikan dari pengoperasian yang sedang berlangsung dapat
mengakibatkan terblokirnya suatu proses. Hal ini juga dikenal sebagai
sebuah perhitungan semaphore atau semaphore umum.
Semaphore adalah bendera digunakan untuk memeriksa apakah sumber daya
saat ini sedang digunakan oleh thread atau proses. Misalnya, jika suatu
proses ingin menggunakan printer, terlebih dahulu perlu memastikan
printer tersedia dengan memeriksa untuk melihat apakah semaphore telah
ditetapkan. jika sudah diatur, maka perlu menunggu untuk proses yang
saat ini telah selesai. Namun, jika printer bebas, proses ini akan
menetapkan semaphore dan mulai menggunakan printer, memblokir akses ke
semua proses lainnya sampai selesai.
Semaphore adalah teknik klasik untuk melindungi bagian penting dari
kode dari yang secara simultan dieksekusi oleh lebih dari satu thread.
Semaphore adalah generalisasi dari monitor. Sebuah monitor memungkinkan
hanya satu thread untuk mengunci objek sekaligus. Semaphore A N
memungkinkan proses. Proses meraih semaphore-eksklusif untuk menggunakan
semi disebut menenggak semaphore karena mereka diimplementasikan dengan
integer Countdown yang decrements untuk setiap kunci dan kenaikan untuk
masing-masing membuka. Jika semaphore adalah sepenuhnya terisi, thread
baru ingin menggunakannya akan menunggu sampai thread beberapa rilis
kunci dengan upping semaphore itu. Untuk semaphore untuk bekerja, cek
untuk penuh, dan penurunan harus dilakukan semua dalam satu instruksi
yang tidak pernah terputus atom. Instruksi monitor JVM menyediakan
dukungan hardware yang diperlukan untuk mensimulasikan semaphores.
Semaphore s, lain kontribusi penting oleh EW Dijkstra, dapat dilihat
sebagai ekstensi untuk mutex kunci. Semaphore adalah suatu obyek dengan
dua metode Tunggu dan Sinyal, sebuah integer swasta counter dan antrian
swasta (benang). Semantik dari semaphore adalah sangat sederhana.
Misalkan S adalah semaphore yang swasta counter telah diinisialisasi ke
integer non-negatif.
Ketika Tunggu dijalankan oleh thread, kita memiliki dua kemungkinan:
Penghitung S adalah positif
Dalam hal ini, konter ini mengalami penurunan sebesar 1 dan benang kembali pelaksanaannya.
Penghitung S adalah nol
Dalam hal ini, benang ditangguhkan dan dimasukkan ke dalam antrian pribadi S.
Ketika Sinyal dijalankan oleh thread, kami juga memiliki dua kemungkinan:
Antrian S tidak memiliki benang menunggu
Penghitung S ditingkatkan oleh satu dan benang kembali pelaksanaannya.
Antrian S telah menunggu threads
Dalam hal ini, konter S harus nol (lihat pembahasan Tunggu di atas).
Salah satu benang menunggu akan diizinkan untuk meninggalkan antrian dan
melanjutkan pelaksanaannya. Benang yang mengeksekusi Sinyal juga terus.
Operasi Tunggu atau Signal adalah atom. Ini berarti sekali kegiatan
Tunggu mulai (yaitu, pengujian dan penurunan nilai counter dan
memasukkan benang ke dalam antrian), mereka akan terus sampai akhir
tanpa gangguan apapun. Lebih tepatnya, meskipun ada banyak langkah untuk
melaksanakan Tunggu dan Signal, langkah-langkah ini dianggap sebagai
instruksi non-interruptible tunggal. Demikian pula, hal yang sama
berlaku untuk Sinyal. Apalagi, jika lebih dari satu benang mencoba
mengeksekusi Tunggu (atau sinyal), hanya satu dari mereka akan berhasil.
Kita tidak boleh membuat asumsi tentang mana thread akan berhasil.
Tunggu karena dapat menyebabkan thread untuk memblokir (yaitu, ketika
counter nol), ia memiliki efek yang sama dari operasi kunci dari sebuah
kunci mutex. Demikian pula, sebuah sinyal dapat melepaskan benang
tunggu, dan mirip dengan membuka operasi. Bahkan, semaphores dapat
digunakan sebagai kunci mutex. Pertimbangkan S semaphore dengan nilai
awal 1. Kemudian, Tunggu dan Signal sesuai untuk mengunci dan membuka:
Mari kita periksa bagaimana sepasang Tunggu dan Signal dapat menjamin
pengecualian bersama. Perlu diingat bahwa nilai awal counter dari S
adalah 1. Misalkan sejumlah benang mencoba untuk eksekusi Tunggu. Karena
hanya ada satu thread berhasil dapat mengeksekusi Tunggu, thread ini,
katakanlah A, menyebabkan counter berkurang sebesar 1, dan memasuki
bagian yang kritis. Karena nilai awal counter adalah 1, sekali thread A
memasuki critical section, konter menjadi 0, dan, sebagai hasilnya,
semua usaha berikutnya dalam melaksanakan Tunggu akan diblokir. Oleh
karena itu, membenarkan klaim kita bahwa Tunggu mirip untuk mengunci.
Ketika Sebuah thread keluar dari critical section, Sinyal dijalankan.
Jika ada menunggu benang, salah satu dari mereka akan dirilis, dan
thread ini dirilis memasuki critical section. Perhatikan bahwa counter
masih nol (karena, dalam hal ini, Sinyal tidak meningkatkan dan Tunggu
tidak mengurangi counter), yang berarti semua thread berikutnya yang
mencoba mengeksekusi Tunggu diblokir. Di sisi lain, jika tidak ada
benang menunggu, pelaksanaan Sinyal menyebabkan nilai dari counter akan
meningkat dengan 1, sehingga nilai saat ini 1. Dalam hal ini, thread
berikutnya yang mengeksekusi Tunggu bisa masuk ke bagian kritis. Oleh
karena itu, Sinyal mirip untuk membuka. Singkatnya, kita belajar bahwa
pengaturan counter untuk 1 awalnya akan menjamin bahwa paling banyak
satu thread bisa di bagian kritis, jika semua benang yang melibatkan
mengikuti Tunggu sama – urutan Sinyal.
Jika Anda berhati-hati, Anda akan melihat bahwa nilai counter adalah 1
atau 0, dan tidak pernah memiliki nilai lain. Oleh karena itu, disebut
sebagai semaphore biner. Jika kita mengganti counter dengan variabel
Boolean dan menafsirkan 1 dan 0 sebagai benar (yaitu, kunci terbuka) dan
false (yaitu, kunci tertutup), masing-masing, maka semaphore biner
menjadi kunci mutex! Karena itu, Anda dapat menggunakan kunci mutex atau
semaphore biner bergantian.
Namun, keindahan menggunakan semaphores adalah bahwa nilai awal tidak
harus 1. Bisa jadi ada nilai non-negatif. Kemudian kita akan membahas
teknik-teknik lain semaphores menggunakan.
Kemajuan besar pertama dalam menangani masalah proses konkuren datang
pada tahun 1965 dengan risalah Dijkstra [DIJK65]. Dijkstra prihatin
dengan desain dari OS sebagai kumpulan proses sekuensial dan bekerja
sama dengan pembangunan mekanisme yang efisien dan dapat diandalkan
untuk mendukung kerja sama. Mekanisme ini hanya bias mudah digunakan
oleh proses pengguna jika prosesor dan OS membuat mekanisme yang
tersedia.
[DOWN07] menunjukkan tiga konsekuensi menarik dari definisi semaphore:
• Secara umum, tidak ada cara untuk mengetahui sebelum proses decrement semaphore sebuah akan terblokir atau tidak.
• Setelah proses increment semaphore dan proses lain akan berjalan,
kedua proses terus berjalan bersamaan. Tidak ada cara untuk mengetahui
proses, jika salah satu, akan segera melanjutkan pada sistem prosesor
tunggal.
• Saat sinyal Anda semaphore, Anda tidak perlu tahu apakah proses
yang lain sedang menunggu, sehingga jumlah proses yang diblokir mungkin
nol atau satu.
Konsep Dasar Monitor
Monitor termasuk kumpulan prosedur, variabel dan struktur data di
satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur
kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data
internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur
yang dideklarasikan minitor untuk mengakses struktur internal.
Java menggunakan monitor ke benang koordinasi untuk memastikan mereka
tidak tersandung saling mengakses data yang sama. Dengan monitor, Anda
mengunci obyek, bagian-bagian penting dari kode atau Anda mengunci
seluruh metode dengan menyatakan mereka disinkronisasi. Monitor memiliki
dukungan hardware test dan mengatur di belakang mereka untuk memastikan
cek thread untuk melihat apakah monitor sudah dikunci dan jika tidak,
menyita mengunci semua dalam satu operasi atom non-interruptible. Tanpa
atomicity, thread mungkin periksa apakah monitor tidak terkunci, dan
memiliki beberapa thread lain ambil monitor sebelum mendapat kesempatan
untuk menguncinya. Puritan akan menunjukkan bahwa monitor sebenarnya
bukan kunci, melainkan kunci adalah cara yang digunakan untuk melindungi
bagian penting dari kode.
Monitor Sebuah bahasa pemrograman membangun yang merangkum variabel,
prosedur akses dan inisialisasi kode dalam suatu variabel tipe data
abstrak. Monitor hanya dapat diakses melalui prosedur akses dan hanya
satu proses yang dapat secara aktif mengakses monitor dalam satu waktu.
Prosedur-prosedur pengaksesan adalah bagian penting. Dimana monitor
mungkin memiliki antrian proses-proses yang sedang menunggu untuk
mengaksesnya.
Anda mungkin mendapatkan pengalaman dari belajar semua contoh
semaphore bahwa sinyal dan menunggu panggilan masih dapat tersebar di
mana-mana dalam program anda dengan cara yang tidak terlalu terstruktur
dengan baik. Jika Anda benar-benar mendapatkan seperti perasaan, konsep
monitor datang untuk menyelamatkan. Konsep monitor berasal dari 1974
kertas CAR Hoare’s.
Sebuah monitor memiliki empat komponen seperti yang ditunjukkan di
bawah ini: inisialisasi, data pribadi, prosedur memonitor, dan antrian
masuk monitor. Komponen inisialisasi berisi kode yang digunakan tepat
satu kali ketika monitor dibuat, Bagian data pribadi berisi semua data
pribadi, termasuk prosedur swasta, yang hanya dapat digunakan dalam
monitor. Dengan demikian, barang-barang pribadi tidak terlihat dari luar
monitor. Prosedur monitor prosedur yang dapat dipanggil dari luar
monitor. Antrian entri memantau berisi semua thread yang disebut
prosedur monitor tapi belum diberikan izin. Kita akan kembali ke ini
segera.
Oleh karena itu, monitor terlihat seperti kelas dengan inisialisasi,
data pribadi dan prosedur monitor sesuai dengan konstruktor, data
pribadi dan metode kelas tersebut. Satu-satunya perbedaan utama adalah
bahwa kelas tidak memiliki antrian masuk.
Monitor yang seharusnya digunakan dalam lingkungan multithreaded atau
multiproses di mana beberapa thread / proses dapat menghubungi prosedur
monitor pada saat yang sama meminta layanan. Dengan demikian, monitor
menjamin bahwa setiap saat paling banyak satu thread bisa mengeksekusi
dalam monitor! Apa artinya ini? Ketika thread panggilan prosedur
monitor, kita dapat melihat prosedur monitor disebut sebagai
perpanjangan ke thread panggilan. Jika prosedur monitor disebut dalam
eksekusi, kita akan mengatakan thread memanggil di monitor melaksanakan
prosedur monitor disebut.
Sekarang, jika dua thread di monitor (yaitu, mereka adalah
melaksanakan dua, mungkin, monitor prosedur yang sama), beberapa data
pribadi dapat dimodifikasi oleh kedua benang pada saat yang sama
menyebabkan kondisi ras terjadi. Oleh karena itu, untuk menjamin
keutuhan data pribadi, monitor saling memberlakukan pengecualian
implisit. Lebih tepatnya, jika thread panggilan prosedur monitor, thread
ini akan diblokir jika ada thread lain eksekusi pada monitor. Mereka
benang yang tidak diberikan izin masuk akan antri masuk ke antrian
monitor luar monitor. Ketika monitor menjadi kosong (yaitu, tidak ada
thread mengeksekusi di dalamnya), salah satu benang dalam antrian entri
akan dirilis dan diberikan izin untuk menjalankan prosedur monitor
disebut. Meskipun kita mengatakan “antrian masuk,” Anda tidak harus
melihat secara harfiah. Lebih tepatnya, ketika thread harus dilepaskan
dari antrian masuk, Anda tidak perlu menganggap kebijakan apapun yang
thread yang akan dirilis.
Secara ringkas, monitor memastikan saling eksklusi otomatis sehingga
tidak ada lebih dari satu thread bisa mengeksekusi dalam memonitor
setiap saat. Ini adalah kemampuan yang sangat usably dan berguna.
Monitor sebagai Mini-OS
Konsep monitor sangat mirip dengan sebuah sistem operasi. Satu dapat
mempertimbangkan inisialisasi sebagaimana data yang diinisialisasi
ketika sistem boot up, data pribadi dan kode sebagai struktur data
internal dan fungsi dari sebuah sistem operasi, dan prosedur monitor
sebagai panggilan sistem. Program-program, tentu saja, benang yang
membuat permintaan layanan. Oleh karena itu, monitor bisa dianggap
sebagai mini-OS dengan layanan terbatas.
2. Persamaan dan perbedaannya:
Sejak menunggu operasi sinyal pada semaphores dan pada monitor
kondisi variabel yang sama, untuk membantu Anda membedakan perbedaan
mereka dan menggunakannya dengan benar, berikut ini adalah perbandingan
singkat.Semaphore Monitor – Kondisi Variabel
Dapat digunakan di mana saja dalam program, tetapi seharusnya tidak
digunakan dalam monitor Hanya dapat digunakan pada monitor
Wait() tidak selalu memblokir pemanggil (yaitu, ketika counter
semaphore lebih besar dari nol). Wait() selalu blok
pemanggil.
Signal() baik melepaskan thread yang diblokir, jika ada satu, atau
meningkatkan semaphore counter. Signal() baik melepaskan thread yang
diblokir, jika ada satu, atau sinyal hilang seolah-olah itu tidak
pernah terjadi.
Jika Signal () melepaskan thread yang diblokir, pemanggil dan thread
dirilis & keduanya melanjutkan. Jika Signal () melepaskan thread
yang diblokir, pemanggil hasil monitor (tipe Hoare) atau terus (Mesa
Type). Hanya satu dari pemanggil atau threadyang dirilis dapat
melanjutkan, tapi tidak keduanya.
Perbedaan:
operasi semaphore tersebar pada seluruh section program
pada monitor, sinkronosasi dikendalikan oleh prosedur tertentu, dimana shared data hanya bisa diakses melalui prosedur tersebut
dalam penggunaan semaphore mungkin timbul kesalahan yang sulit terdeteksi (misal: deadlock), yang dicegah oleh monitor
Di samping itu, sinyal operasi menunggu kondisi variabel monitor
mirip dengan P dan operasi V pada perhitungan semaphores. Sebuah
pernyataan tunggu dapat memblokir proses itu eksekusi, sedangkan
pernyataan sinyal dapat menyebabkan proses lain menjadi diblokir. Namun,
ada beberapa perbedaan di antara mereka. Ketika sebuah proses
mengeksekusi operasi P, tidak selalu menghalangi proses tersebut karena
semaphore penghitungan mungkin lebih besar dari nol. Sebaliknya, ketika
sebuah pernyataan menunggu dieksekusi, selalu blok proses. Saat tugas
yang mengeksekusi operasi V pada semaphore, itu baik unblocks suatu
tugas menunggu yang semaphore atau increment yang semaphore counter jika
tidak ada tugas untuk membuka. Di sisi lain, jika suatu proses
mengeksekusi pernyataan sinyal ketika tidak ada proses lain untuk
membuka blokir, tidak ada efek pada variabel kondisi.
Perbedaan lain antara semaphores dan monitor adalah bahwa pengguna
terbangun oleh operasi V dapat melanjutkan eksekusi tanpa penundaan.
Sebaliknya, pengguna terbangun oleh operasi sinyal restart hanya ketika
monitor terkunci.
Selain itu, solusi monitor terstruktur lebih banyak dari yang satu
dengan semaphores karena data dan prosedur yang dikemas dalam satu modul
tunggal dan bahwa pengecualian saling disediakan secara otomatis oleh
pelaksanaannya.
3. Pengertian Deadlock dan Starvation beserta contohnya:
a) Deadlock
Deadlock secara bahasa berarti buntu atau kebuntuan. Dalam definisi
lebih lengkap, deadlock berarti suatu keadaan dimana sistem seperti
terhenti dikarenakan setiap proses memiliki sumber daya yang tidak bisa
dibagi dan menunggu untuk mendapatkan sumber daya yang sedang dimiliki
oleh proses lain. Keadaan seperti ini hanya dapat terjadi pada akses
terhadap sumber daya yang tidak bisa dibagi atau non-sharable.
Contoh:
kasus ilustrasi dari kejadian deadlock pada dunia nyata, yaitu pada
lalu lintas dijembatan. Dapat dilihat bahwa kedua mobil yang berada di
tengah-tengah jembatan tidak dapat maju dan hanya
menunggu. Penyelesaian dari masalah tersebut adalah salah satu dari
mobil tersebut mundur, sehingga mobil yang lain dapat maju. Mobil pada
kasus ini adalah proses, sedangkan jembatan adalah sumber daya. Kedua
mobil berebut untuk menggunakan sumber daya, namun karena sumber daya
tersebut hanya dapat digunakan oleh satu proses saja, maka terjadilah
deadlock.
Ilustrasinya:
ü Dua Proses, P1 dan P2
ü Dua Resource kritis R1 dan R2
ü Proses P1 dan P2 harus mengakses kedua sumber daya.
Kondisi berikut dapat terjadi : R1 diberikan ke P1, sedang R2 di berikan ke P2.
Karena untuk melanjutkan ekssekusi memerlukan sumber daya sekaligus
maka kedua proses akan saling menunggu sumber daya yang lainnya,
selamanya. Tidak ada proses yang dapat melepaskan sumber daya yang telah
dipegangnya karena menunnggu sumber daya lain yang tidak pernah
diperolehnya. Keduanya tidak membuat proses kemajuan apapaun, kedua
proses tersebut dalam kondisi deadlock.
Kondisi deadlock merupakan kondisi terparah karena banyak proses
dapat terlibat dan semua yang terlibat tidak dapat mengakhiri prosesnya
secara benar. Beragam mekanisme diusulkan untuk mengatasi kondisi
deadlock.
b) Starvation
Ilustrasinya :
ü Terdapat tiga proses P1, P1, dan P3
ü P1, P2, dan P3 memerlukan pengaksesan sumber daya R secara periodik
Terjadi Skenario berikut:
ü P1 sedang di beri sumber daya R, P2, dan P3 Blocked menunggu sumber daya R.
ü Ketika P1 keluar daricritical section, P2 dan P3 diijinkan mengakse R.
ü Asumsi P3 diberi hak akses. Kemudian setelah selesai, hak akses
kembali diberikan ke P1 yang saat itu kembali membutuhkan sumber daya R.
Jika pemberian hak akses bergantian terus-menerus antara P1 dan P3,
maka P2 tidak pernah memperoleh pengaksesan sumber daya R. meskipun
tidak ada deadlock, pada sutuasi ini P2 mengalami starvation.
Untuk pemahaman lebih jelas, berikut detail dari penjelasannya:
Deadlock adalah situasi di mana dua atau lebih proses yang tidak
dapat dilanjutkan karena masing-masing sedang menunggu satu yang lain
untuk melakukan sesuatu.
Deadlock mengacu situasi di mana satu set dari dua atau lebih proses
yang menunggu untuk anggota lain dimana diset untuk menyelesaikan
operasi untuk memprosesnya, tapi tidak ada anggota yang mampu memproses.
Deadlock adalah fenomena yang sulit untuk mengantisipasi, dan tidak ada
solusi umum yang mudah untuk mengatasi masalah ini. Ada tiga pendekatan
utama untuk berurusan dengan deadlock: pencegahan, penghindaran, dan
deteksi.
Dalam Hal ini, dimungkinkan untuk dua atau lebih program yang akan
menutup telepon menunggu satu sama lain. Sebagai contoh, dua program
mungkin masing-masing memerlukan dua perangkat I / O untuk melakukan
beberapa operasi (misalnya, disk untuk menyalin tape). Salah satu
program telah
merebut kendali dari salah satu perangkat dan program lain yang
memiliki kontrol dari perangkat lain. Setiap menunggu program lain untuk
melepaskan sumber daya yang diinginkan. Deadlock tersebut mungkin
tergantung pada waktu kesempatan alokasi sumber daya dan pelepasannya.
Prinsip-Prinsip Deadlock
Deadlock dapat didefinisikan sebagai memblokir permanen dari
serangkaian proses yang baik bersaing untuk sumber daya sistem atau
berkomunikasi satu sama lain. Satu set proses adalah jalan buntu ketika
setiap proses dalam set diblokir menunggu suatu peristiwa (biasanya
membebaskan beberapa sumber daya yang diminta) yang hanya dapat dipicu
oleh lain diblokir proses dalam set. Deadlock adalah permanen karena
tidak ada peristiwa yang pernah dipicu. Tidak seperti masalah lain dalam
proses manajemen bersamaan, ada ada solusi efisien dalam kasus umum.
Semua kebuntuan melibatkan konflik akan kebutuhan sumber daya oleh
dua atau lebih proses. Sebuah contoh umum adalah kebuntuan lalu lintas.
Gambar 6.1a menunjukkan situasi di mana empat mobil telah tiba di sebuah
simpang empat arah berhenti di kurang lebih sama waktu. Keempat kuadran
dari persimpangan adalah sumber daya di mana kendali dibutuhkan. Secara
khusus, jika semua empat mobil ingin pergi langsung melalui
persimpangan itu, kebutuhan sumber daya adalah sebagai berikut:
• Mobil 1, bepergian ke utara, membutuhkan kuadran a dan b.
• Mobil 2, membutuhkan kuadran b dan c.
• Mobil 3, membutuhkan kuadran c dan d.
• Mobil 4, membutuhkan kuadran d dan a.
Aturan khas jalan di Amerika Serikat adalah bahwa mobil di halte
empat arah harus menunda untuk mobil segera haknya. Aturan ini bekerja
jika hanya ada dua atau tiga mobil di persimpangan. Misalnya, jika hanya
utara dan arah barat mobil tiba di persimpangan, mobil utara akan
menunggu dan mobil ke arah barat diterima. Namun, jika semua empat mobil
tiba pada waktu yang sama, masing-masing akan menahan diri dari
memasuki persimpangan, ini menyebabkan kebuntuan potensial. Kebuntuan
ini hanya potensial, tidak aktual, karena sumber daya yang diperlukan
tersedia untuk salah satu mobil untuk melanjutkan. Jika salah satu mobil
akhirnya melanjutkan, maka yang lain juga dapat melanjutkannya.
Namun, jika semua empat mobil mengabaikan aturan dan lanjutkan
(hati-hati) ke perempatan pada saat yang sama, maka setiap mobil merebut
satu sumber daya (satu kuadran) tetapi tidak dapat dilanjutkan karena
kedua sumber daya yang diperlukan telah disita oleh mobil lain. Ini
merupakan kebuntuan yang sebenarnya.
Mari kita lihat gambaran dari kebuntuan yang melibatkan proses-proses dan komputer
sumber daya. Gambar 6.2 (berdasarkan satu di [BACO03]), yang kami
sebut sebagai diagram kemajuan bersama, menggambarkan kemajuan dua
proses yang bersaing untuk dua sumber. Setiap proses membutuhkan
penggunaan eksklusif dari kedua sumber daya untuk sebuah tertentu jangka
waktu tertentu. Dua proses, P dan Q, mempunyai bentuk umum berikut:
Process P Process Q
• • • • • •
Get A Get B
• • • • • •
Get B Get A
• • • • • •
Release A Release B
• • • • • •
Release B Release A
• • • • • •
Sebagai contoh sederhana, Deadlock terjadi jika dua proses memerlukan
dua sumber daya yang sama untuk melanjutkan dan masing-masing memiliki
satu kepemilikan. Kecuali beberapa tindakan yang diambil, setiap proses
akan menunggu tanpa batas waktu untuk sumber daya yang hilang tersebut.
Starvation adalah situasi di mana proses runnable yang terlupakan
tanpa batas oleh penjadwal; meskipun mampu melanjutkan, tetapi tidak
pernah dipilih.
Starvation mengacu pada situasi di mana suatu proses siap untuk
mengeksekusi tetapi terus ditolak akses ke prosesor untuk mendahulukan
proses lainnya. Dalam sebagian besar, starvation ditangani sebagai isu
penjadwalan.
Contoh, perhatikan dua proses, P1 dan P2, dan dua sumber daya, R1 dan
R2. Misalkan bahwa setiap proses membutuhkan akses ke kedua sumber daya
untuk melakukan sebagian fungsinya. Maka mungkin untuk memiliki situasi
berikut ini:
OS menugaskan R1 untuk P2, dan R2 untuk P1. Setiap proses sedang
menunggu salah satu dari dua sumber daya. Tidak akan melepaskan sumber
daya yang sudah memiliki sampai telah mengakuisisi sumber daya lainnya
dan melakukan fungsi yang membutuhkan baik sumber daya. Kedua proses ini
menemui deadlock (jalan buntu).
Sebuah masalah pengendalian akhir ini adalah starvation. Misalkan
tiga proses (P1, P2, P3) masing-masing membutuhkan akses berkala kepada
sumber daya R. Pertimbangkan situasi di mana P1 adalah memiliki sumber
daya, dan kedua P2 dan P3 yang tertunda, menunggu sumber daya itu.
Ketika keluar dari critical section P1, baik P2 atau P3 harus diberi
akses ke R. Asumsikan bahwa OS memberikan akses ke P3 dan bahwa P1 lagi
membutuhkan akses sebelum P3 menyelesaikan critical section-nya. Jika OS
memberikan akses ke P3 P1 setelah selesai, dan kemudian bergantian
memberikan akses ke P1 dan P3, maka P2 dapat tanpa batas waktu menolak
akses ke sumber daya, meskipun tidak ada situasi deadlock.
Sumber Artikel:
1.http://blog.ub.ac.id/zarkazi/2011/03/26/semaphore-dan-monitor-algoritmanya-deker-peterson-dijkstra/
2. http://hasimhendra.blogspot.com/2012/10/semaphore-dan-monitor-algoritmanya.html
semaphore dan monitor algoritmanya. deker, peterson_dijkstra
Statistik dan Probabilitas, Teori dan Praktek Komputer
Ilmu statistik (statistika) merupakan salah satu ilmu pengetahuan dasar yang penting. Ilmu statistik banyak diterapkan dalam banyak bidang ilmu pengetahuan lainnya, seperti bidang teknik (rekayasa), sosial, manajemen, riset, pabrikasi, dan lainnya. Ilmu statistik (statistika) merupakan bidang ilmu yang mengungkapkan kebenaran dengan instrumen angka-angka hasil suatu pengamatan (measurement) atas sejumlah besar satuan telaah (aggregate).
Penelitian-penelitian di bidang teknik/rekayasa, sosial, dan lainnya banyak memanfaatkan ilmu statistik untuk mengungkap “kebenaran” dari sesuatu yang diteliti. Salah satu permasalahan dalam ilmu statistik adalah adanya sifat “nisbi”, yaitu suatu keterbatasan akal dan jangkauan penelitian, sehingga kebenaran hakiki sulit dicapai. Hal ini mengakibatkan lingkup dan jangkauan ilmu pengetahuan terbatas pada pengalaman yang bisa dilihat, diraba, dan dirasakan oleh indra manusia. Hal ini dikenal sebagai “pendekatan secara empirik”. Dalam statistik, “empirisme” dipertegas dengan menggunakan data yang diperoleh sebagai hasil pengamatan.
Ruang lingkup ilmu statistik dapat dikelompokkan menjadi dua bagian, yaitu “statistik deskriptif” (bersifat eksploratif) dan “statistik inferensi” (bersifat komparatif). Statistik deskriptif merupakan bagian dari ilmu statistik yang “memeras” hakekat kebenaran yang terungkap dari data hasil pengamatan melalui suatu abstraksi untuk penyederhanaan. Sedangkan statistik inferensi merupakan bagian ilmu statistik yang membahas tentang cara melakukan penyimpulan secara statistik melalui penarikan sejumlah sampel dengan jumlah dan kapasitas yang memadai, lalu melakukan pengamatan atas contoh satuan telaah yang terambil tersebut.
Pemanfaatan ilmu statistik pada proses penelitian dapat muncul dalam setiap langkah penelitian. Urutan langkah utama proses penelitian yang melibatkan ilmu statistik pada umumnya adalah sebagai berikut:
1. Pengumpulan data
Pengumpulan data merupakan suatu proses pengumpulan data-data yang diperlukan sebagai hasil pengamatan atas obyek permasalahan yang diteliti. Data-data yang dikumpulkan dapat berupa data primer atau data sekunder. Data primer adalah data yang diperoleh secara langsung dari obyek penelitian, sedangkan data sekunder diperoleh dari sumber tidak langsung. Proses pengumpulan data tersebut dapat dilakukan dengan menggunakan metoda tertentu, misal observasi, studi kepustakaan, atau lainnya.
2. Pengolahan data
Pengolahan data merupakan suatu proses pengolahan terhadap data-data yang berhasil dikumpulkan pada tahap sebelumnya.
3. Penyajian data
Penyajian data merupakan suatu proses menampilkan hasil pengolahan data dalam bentuk tertentu sehingga lebih mudah dibaca, lebih mudah dipahami, lebih mudah dianalisis, serta memberikan lebih banyak informasi.
4. Analisis data
Analisis data merupakan proses penelaahan terhadap data dengan tujuan untuk memperoleh “kebenaran” yang diharapkan.
5. Pengambilan kesimpulan
Pengambilan kesimpulan merupakan langkah terakhir untuk memperoleh suatu pernyataan yang benar sebagai hasil suatu penelitian berdasarkan pada data yang diperoleh.
Pemanfaatan ilmu statistik dalam tiga langkah pertama pada proses penelitian di atas termasuk dalam lingkup statistik deskriptif (eksploratif), sedangkan dua langkah terakhir termasuk dalam lingkup statistik inferensi (komparatif).
Untuk Modulnya Klik link dibawah
DOWNLOAD
CARA MEMBUAT ANTI VIRUS DI FLASHDISK
pertama-tama buatlah AUTORUN untuk menjalangkan antivirus pada fd (flashdisk) !, carax copy
antivirus yg berukurang kecil ke fd (flashdisk) kita, sembarang maunya antivirus apa
contonya PCMAV,ANSAV.dll (dicontoh kali ini saya menggunakan PCMAV karna ukurangx kecil
bangat ngak sampe 3 MB). oke deh kita buat scrip dulu untuk autorun di fd kita.
tinggal ketik or copy aja di notepad
============potong disini============
[AUTORUN]
open=nama antivirus.exe
shellexecute=nama antivirus.exe
shell\\scan_viruz_dulu_donkz:-)_!!!\\command=nama antivirus.exe
shell=scan_viruz_dulu_donkz:-)_!!!
============potong disini============
kalo udah kita save dengan nama "autorun.inf" (ngak pake tanda kutip) di fd kita
sekarang kita copy aja antivirusnya ke fd..!!!
(ingat kalo ngopy file autorun dan antivirusnya bukan di dalam folder, ingat yah!!!).
Jadi deh..^_^ kalo mau scan virus tinggal double click aja tuh drive fd-nya *=*
terus kalo kita klik kanan drive fd-nya BUKANKAH ADA TAMBAHAN KATA DI ATAS KATA AUTOPLAY.
attrib +h +s nama antivirusnya.exe (buat sembunyiin antivirusnya)
f:\\>attrib +h +s autorun.inf (buat hidden file autorunnya)
entar ..^_^..ilang deh filenya..*=*
fsnya siap dipergunakan
huh..selesai deh proyek kita.
kalo mau di simpan didalam folder gini scripnya
contoh nama foldernya hack
lalu nama anti virusnya ansav
[AUTORUN]
open=hack/ansav.exe
shellexecute=hack/ansav.exe
shell\\scan_viruz_dulu_donkz:-)_!!!\\command=hack/ansav.exe
shell=scan_viruz_dulu_donkz:-)_!!!
lalu save dengan nama autorun.inf
tambahan kalo mau mengganti icon fd anda gini juga caranya
contoh nama icon : newbie.ico
[AUTORUN]
open=hack/ansav.exe
shellexecute=hack/ansav.exe
shell\\scan_viruz_dulu_donkz:-)_!!!\\command=hack/ansav.exe
shell=scan_viruz_dulu_donkz:-)_!!!
icon=newbie.ico
kembali save dengan nama autorun.inf
ok deh kalo ada yg ngak di mengerti lagi tolong penjelasannya yg lengkap karna saya masih pelajar dan usia saya masih 16 jadi jangan di panggil mas yah . salam newbie kid ^_^
Cara Membuat Antivirus Di USB Flash Disk
Jengkel dengan Virus yang otomatis menginfeksi Flash Disk Anda saat Anda colokkan USB Flash Disk Anda ke port komputer yang terinfeksi virus?
Bagaimana tidak kita akali saja dengan Membuat Anti Virus AutoRun dari USB Removable Drive semacam Flash Disk?
Seringkali Virus akan membuat file autorun.inf yang ber-attribute file hidden dan system (dan/atau bisa juga termasuk file virus/trojan - server) begitu Anda memasangkan Flask Disk yang dijadikan target penginfeksian virus ataupun target pengintipan aktivitas user atau pencurian data user dengan Trojan.
file autorun.inf inilah command atau pemicu tereksekusinya file induk dan library virus/trojan yang sudah bersarang di komputer lokal atau jaringan tempat Flash Disk Anda berinteraksi dan berhubungan langsung.
Bila Anda pengguna OS Windows, seperti kita ketahui, Versi Windows sebelum generasi Windows Vista (termasuk Windows Windows XP), secara default tidak mengijinkan proses AutoRun executable files dari media USB Removable Drives seperti External Hardisk ataupun Flash Drive/Flash Disk (kecuali dari media cakram digital) yang kemungkinan besar ditujukan untuk kepentingan keamanan. Windows hanya mengijinkan proses AutoPlay media saja seperti AutoPlay Movie/Music dari DVD atau command seperti Open/View file melalui windows explorernya.
Untungnya (dari faktor kemudahan) sekaligus sayangnya (dari faktor keamanan), Windows Vista secara default telah memperkenankan proses AutoRun dilangsungkan dengan dafault opsi yang bisa Anda pilih secara permanen.
Lalu bagaimana mengakali Windows XP agar bisa mengijinkan proses AutoRun executable files dari removable drives seperti External Hardisk maupun Flash Disk?
Di bawah ini Penulis sampaikan teknis pembuatan AutoRun AntiVirus pada Flash Disk.
LANGKAH I - Download ANtiVirus yang bersifat Portable
Kenapa harus Portable? Karena tujuan dari pembuatan AutoRun File dari Flash juga bersifat portable, jadi program rujukan, dalam hal ini Anti Virus, bisa dijalankan langsung dari Flash Drive tanpa diperlukan instalasi.
Anda bisa menggunakan ANSAV (Ansav.exe - jangan ANSAV Security Guard) atau PCMAV (PCMAV-CLN.EXE - Jangan PCMAV-RTP.EXE)
Masukkan file Anti Virus Portable (plus file library pendukungnya - bila ada) tersebut ke dalam Flash Disk Anda. Dalam contoh kali ini, untuk mempermudah, letakkan saja di Root Flash Disk Anda tanpa perlu Anda masukkan ke dalam folder.
LANGKAH II - Pembuatan AutoRun Dari Flash Disk
Ada 2 (dua) opsi yang bisa Anda pilih:
1. Menggunakan bantuan software orang lain, atau
2. Menggunakan bantuan tangan Anda sendiri
Membuat anti virus flashdisk dengan Notepad
henkosuru.com-Membuat anti virus flashdisk dengan Notepad | penyebaran virus lewat flashdisk sangat marak dan biasa terjadi di kehidupan kita ada beberapa trik sederhana untuk mencegahnya yaitu dengan cara Membuat anti virus flashdisk dengan Notepad sangat simple kedengaranya dan Trik ini cukup menarik untuk di coba sangat sederhana untuk cara membuatnya.
sekarang kita akan membuat virus kesusahan untuk membuat file berupa Axe. Didalam Sistem Windows, sangat haram hukumnya ketika ada 2 buah file dengan nama yang sama pada satu tempat. Begitu juga dengan OS yang lain.
Sekarang mari kita coba untuk mencegah flashdisk Anda terkena serangan virus. Adapun langkah-langkah yang kita lakukan adalah sbb:
1. Masukkan flashdisk ke port USB pada komputer atau laptop anda.
2. Buat sebuah Folder baru didalam flashdisk Anda.
3. Beri nama folder tersebut dengan nama “autorun.inf” (tanpa tanda petik)
4. Masuklah kedalam folder tersebut, dan buat sebuah file .txt dari notepad, simpan dengan nama anda atau yang lainnya.
5. Lalu buka Aplikasi Character Map melalui Start > All Programs > Accessories > System Tools > Character Map.
6. Pilih jenis huruf yang berlabel Unicode, seperti Arial Unicode, Lucida Sans Unicode, atau jenis font yang mengandung karakter aneh lainnya.
7. Pilih beberapa karakter yang unik dan aneh, minimal 5 buah, double klik untuk memilihnya atau pilih tombol select. Setelah terpilih sekitar 5 buah tekan Ctrl+C atau klik tombol copy untuk mengambil karakter tersebut.
8. Rename file text yang dibuat tadi dengan menekan tombol F2, dan paste karakter aneh tersebut untuk mengganti nama file Notepad tersebut.
9. Nama file akan berganti menjadi karakter aneh atau berbentuk kotak-kotak.
Nama file dengan karakter Unicode yang aneh tersebut biasanya virus akan susah untuk mengenalinya sehingga virus akan sulit untuk mengubahnya. Selamat Mencoba .
Antivirus gratis khusus Flashdisk dan Media berbasis USB
Mx One antivirus
Seperti telah diketahui, bahwa flashdisk merupakan media yang paling sering digunakan sebagai penyebar virus, trojan, worm dan lainnya. Termasuk juga MP3, MP4 player, Memory Card dan media berbasis USB lainnya. Salah satu metode untuk mencegah aplikasi otomatis berjalan dari media tersebut adalah mematikan fasilitas autorun windows ( Bisa dibaca disini ).
Selain itu, antivirus biasanya juga otomatis mendeteksi Autorun yang ada di flashdiks, dan akan mengecek apakah ada virus atau tidak. Tetapi jika ingin cara lain dan lebih mudah untuk melindungi dari virus yang otomatis bisa berjalan dari flashdisk,Mp3/Mp4 player, ipod, MemoryCard (SD, MicroSD, MMC, Memori M2 dan sejenisnya) bisa mencoba freeware Mx One Antivirus
Mx One antivirus merupakan antivirus yang di design khusus untuk melindungi komputer dari virus yang sering menular dari flashdisk dan juga melindungi flashdisk iu sendiri dari berbagai virus, trojan, worm dan lainnya. Tampilannya sangat sederhana, sehingga cukup mudah bagi pengguna awam pun. Fasilitas selengkapnya sebagai berikut :
Melindungi dari Virus, Trojan, Worm dan lainnya
Kompatibel dengan antivirus lainnya, seperti NOD32, Kaspersky, BitDefender, AVG, Norton dan lainnya
Realtime protection
System “Check and Block” yang akan menetralkan semua virus yang akan menginfeksi media yang digunakan (seperti flashdisk), ketika dipasang di komputer yang terinfeksi virus, bahkan yang belum dikenal
Fasilitas “Guardian” untuk melindungi PC dari virus yang akan dijalankan dari flashdisk
Melindungi dari virus yang tidak dikenal dengan sistem “Check and Block”
Ukuran yang sangat kecil, hanya memerlukan sekitar 1 MB space
100% Gratis
Mx One antivirus bisa di install di PC dan di flashdisk. Hanya saja ketika di install di flashdisk sepertinya kurang banyak bermanfaat, terutama ketika fasilitas autorun dimatikan. Tetapi jika di install di PC cukup membantu dan bermanfaat. Ketika saya mencoba memasukkan flashdisk yang tidak ada virusnya (bersih), maka mx one menampilkan bahwa flashdisk clean. Seperti berikut
MX One antivirus juga menyediakan update, baik secara online maupun offline. Antivirus ini berasal dari Perancis (Mexico), Tetapi keterangan cara update disertakan dengan bahasa Perancis. Website resmi dan keterangannya sebagian dalam bahasa Perancis (Mexico)
Cara Update Manual :
Download file update dari alamat yang ada dibawah. Kemudian, setelah selesai, ikuti langkah berikut :
Buka file yang ada dalam zip
Di Icon Mx One yang ada di sistem tray (pojok kanan bawah), klik dan pilih “Open Guardian”
Pada bagian Update pilih tombol Update Offline kemudian cari file *.mou (MxOneGuardianUpdate.mou) dari yang ada di file update
Setelah itu antivirus akan diupdate
Perlu diingat bahwa antivirus ini jika di install di PC khusus untuk melindungi penyebaran atau menular-nya virus dari media seperti flashdisk, SD, MicroSD, MP3/MP4 player dan media sejenisnya. Jadi tidak memproteksi sepenuhnya dari virus di PC (http://ebsoft.web.id)
Informasi Download
Download ( 1 MB)
Download Update ( ~270KB)
Kunjungi websitenya disini : http://www.mxone.net/en/