Interrupt Disabling

Dalam sistem uniprocessor, proses konkuren tidak dapat memiliki eksekusi tumpang tindih; mereka hanya dapat disisipkan. Selain itu, proses akan terus berjalan sampai memanggil layanan OS atau sampai terganggu. Oleh karena itu, untuk menjamin saling pengecualian, itu sudah cukup untuk mencegah proses dari diganggu. Kemampuan ini dapat diberikan dalam bentuk primitif didefinisikan oleh kernel OS untuk menonaktifkan dan memungkinkan interupsi. Sebuah proses kemudian dapat menegakkan saling pengecualian dengan cara berikut

(true) {
while
/* disable interrupts */;
/* critical section */;
/* enable interrupts */;
/* remainder */;
}

Karena bagian kritis tidak dapat terganggu, saling pengecualian dijamin. Harga pendekatan ini, bagaimanapun, adalah tinggi. Efisiensi eksekusi bisa
akan tampak rusak karena prosesor terbatas pada kemampuannya untuk interleave proses.

Special Machine Instructions

Pada tingkat perangkat keras, seperti yang disebutkan, akses ke lokasi memori mengecualikan setiap akses lain ke lokasi yang sama. Dengan ini sebagai landasan, prosesor desainer telah mengusulkan beberapa instruksi mesin yang melakukan dua tindakan atomically, 2 seperti membaca dan menulis atau membaca dan pengujian, dengan memori tunggal lokasi dengan satu instruksi mengambil siklus. Selama pelaksanaan instruksi, akses
ke lokasi memori yang diblokir untuk referensi instruksi lainnya yang lokasi.

Compare&Swap Instruction

int compare_and_swap (int *word, int testval, int newval)
{
int oldval;
oldval = *word
if (oldval == testval) *word = newval;
return oldval;
}

Versi dari cek instruksi lokasi memori (* kata) terhadap nilai tes (testval). Jika nilai sekarang lokasi memori adalah testval, itu diganti

dengan newval, kalau dibiarkan tidak berubah. Nilai memori tua selalu kembali; demikian, lokasi memori telah diperbarui jika nilai dikembalikan adalah sama dengan nilai tes. Oleh karena itu instruksi atom ini memiliki dua bagian: A membandingkan adalah dibuat antara nilai memori dan nilai tes, jika nilai berbeda swap terjadi. The membandingkan seluruh & swap fungsi dilakukan atomically, yaitu, tidak tunduk untuk interupsi. Versi lain dari instruksi ini mengembalikan nilai Boolean: true jika swap terjadi; palsu sebaliknya. Beberapa versi dari instruksi ini tersedia di hampir semua prosesor keluarga (x86, IA64, sparc, / 390, dll), dan sebagian besar sistem operasi menggunakan instruksi untuk mendukung konkurensi.

Exchange Instruction

void exchange (int register, int memory)
{
temp;
int
temp = memory;
memory = register;
register = temp;
}

Instruksi pertukaran isi register dengan sebuah lokasi memori. Kedua arsitektur Intel IA-32 (Pentium) dan arsitektur IA-64 (Itanium)
mengandung instruksi XCHG. Menunjukkan protokol pengecualian timbal balik yang didasarkan pada penggunaan pertukaran
instruksi. Sebuah baut bersama variabel diinisialisasi ke 0. Setiap proses menggunakan lokal variabel kunci yang diawali dengan 1. Proses hanya yang dapat masuk critical section adalah salah satu yang menemukan baut sama dengan 0. Ini termasuk semua proses lain dari kritis bagian dengan mengatur baut ke 1. Ketika sebuah proses meninggalkan critical section, ia ulang baut untuk 0, memungkinkan proses lain untuk mendapatkan akses ke critical section.

Properties of the Machine-Instruction Approach

Penggunaan khusus instruksi mesin untuk menegakkan pengecualian saling memiliki sejumlah keuntungan:
• Hal ini berlaku untuk sejumlah proses di kedua prosesor tunggal atau beberapa prosesor berbagi memori utama.
• Sangat sederhana dan karena itu mudah untuk memverifikasi.
• Hal ini dapat digunakan untuk mendukung beberapa bagian kritis; setiap bagian kritis dapat didefinisikan oleh variabel sendiri. Ada beberapa kelemahan serius:
• Sibuk menunggu digunakan. Jadi, sementara proses sedang menunggu akses ke bagian kritis, terus untuk mengkonsumsi waktu prosesor.
• Kelaparan adalah mungkin. Ketika sebuah proses meninggalkan critical section dan lebih dari satu proses sedang menunggu, pemilihan proses menunggu adalah sewenang-wenang. Dengan demikian, beberapa proses tanpa batas bisa mengakses.
• Deadlock adalah mungkin. Pertimbangkan skenario berikut pada prosesor-tunggal sistem. Proses P1 mengeksekusi instruksi khusus (misalnya, membandingkan & swap,pertukaran) dan memasuki critical section. P1 kemudian menyela untuk memberikan prosesor untuk P2, yang memiliki prioritas lebih tinggi. Jika P2 sekarang mencoba untuk menggunakan sumber daya yang sama dengan P1, itu tidak akan dapat mengakses karena saling eksklusi mekanisme. Oleh karena itu akan masuk ke dalam lingkaran menunggu sibuk. Namun, P1 akan pernah dikirim karena prioritas lebih rendah daripada proses lain siap, P2.

sumber

William Stallings.2001.CONCURRENCY: MUTUAL EXCLUSION AND SYNCHRONIZATION, Fourth Edition. Prentice Hall.

Anggota Kelompok

Joko Saputra (08.04.111.00019)

Lynda Octavia S (08.04.111.00120)

Rendra Rizky P(08.04.111.00017)