Pada saat mendesain skema kontrol konkurensi, kita harus tunjukan bahwa
jadwal yang dibuat oleh skema tersebut adalah serializable. Terdapat metode
simpel dan efisien untuk menentukan conflict serializability dari suatu jadwal.
Misalkan sebuah jadwal S. Kita dapat membuat suatu grafik langsung yang
diberi nama grafik preseden (presedence
graph). Grafik preseden terdiri dari sepasang G = (V,E), dimana V adalah
serangkaian simpul dan E adalah serangkaian tepian / busur. Serangkaian simpul
terdiri dari semua transaksi yang berperan serta di dalam penjadwalan.
Serangkaian tepian / busur terdiri dari semua bentuk Ti -> Tj
untuk masing – masing dari ketiga kondisi berikut :
§ Ti
eksekusi write(Q) sebelum Tj eksekusi read(Q)
§ Ti
eksekusi read(Q) sebelum Tj eksekusi write(Q)
§ Ti
eksekusi write(Q) sebelum Tj eksekusi write(Q)
Jika bentuk Ti -> Tj ada di dalam grafik
preseden, maka di setiap jadwal S’ serial yang ekivalen ke jadwal S, Ti harus muncul sebelum Tj
preseden, maka di setiap jadwal S’ serial yang ekivalen ke jadwal S, Ti harus muncul sebelum Tj
Sebagai contoh, grafik preseden untuk penjadwalan 1 digambarkan di (a),
terdiri dari bentuk dasar T1 -> T2 , dimana semua
instruksi T1 dieksekusi sebelum instruksi pertama pada T2
dieksekusi. Begitu juga sebaliknya untuk contoh yang digambarkan di (b).
Grafik preseden untuk jadwal 4, terdiri dari bentuk T1 -> T2
, karena T1 mengeksekusi
read(A) sebelum T2 mengeksekusi write(A). Grafik ini jg terdiri dari bentuk T2 -> T1 , karena T2 mengeksekusi read(B) sebelum T1 eksekusi write(B). Jika grafik preseden untuk S membentuk suatu lingkaran, maka jadwal S tidak conflict serializable. Jika sebaliknya, maka jadwal S conflict serializable
read(A) sebelum T2 mengeksekusi write(A). Grafik ini jg terdiri dari bentuk T2 -> T1 , karena T2 mengeksekusi read(B) sebelum T1 eksekusi write(B). Jika grafik preseden untuk S membentuk suatu lingkaran, maka jadwal S tidak conflict serializable. Jika sebaliknya, maka jadwal S conflict serializable
Tidak ada komentar :
Posting Komentar