Makalah Transaksi dan Pemulihan Sistem Operasi :
Makalah Transaksi dan Pemulihan Sistem Operasi |
Makalah Transaksi dan Pemulihan Sistem Operasi :
BAB II
PEMBAHASAN
A. TRANSAKSI
Transaksi merupakan
sekumpulan instruksi atau operasi yang menjalankan sebuah fungsi logis.
Transaksi merupakan bagian dari pengeksekusian
sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian
perubahan data. DBMS yang kita gunakan
harus menjamin bahwa setiap transaksi harus dapat dikerjakan secara utuh atau
tidak sama sekali. Tidak boleh ada
transaksi yang hanya dikerjakan sebagian, karena dapat menyebabkan
inkonsistensi basis data. Untuk itu
transaksi selalu merubah basis data dari satu kondisi konsisten ke kondisi
konsisten lain.
Transaksi harus memiliki sifat-sifat:
1. Atomik,
dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak
sama sekali.
2. Konsisten,
dimana eksekusi transaksi secara tunggal harus dapat menjamin data tetap
konsisten setelah transaksi berakhir.
3. Terisolasi,
jika pada sebuah sistem basis data terdapat sejumlah transaksi yang
dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan pada saat
yang bersamaan tersebut harus dapat dimulai dan bisa berakhir.
4. Bertahan,
dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan
baik, harus dapat bertahan bahkan jika seandainya sistem menjadi mati.
Salah
satu sifat yang harus dimiliki oleh transaksi adalah keatomikan. Sifat ini
menjadikan suatu transaksi sebagai suatu kesatuan sehingga pengeksekusian
instruksi-instruksi di dalamnya harus dijalankan secara keseluruhan atau tidak
dijalankan sama sekali. Hal ini dilakukan untuk menghindari terjadinya
kesalahan hasil eksekusi bila operasi-operasi yang ada dijalankan hanya
sebagian saja.
Transaksi yang perlu dipahami pengembang adalah atomicity, locking dan
isolation, dan model transaction flat.
1.
Atomicity
Transaksi
adalah atomic jika terdiri dari sejumlah operasi yang harus berhasil atau gagal
sebagai satu unit (tidak setengah berhasil atau setengah gagal).
Karena database
relational tidak memiliki konsep mentransfer uang, operasi ini harus
diselesaikan dalam dua langkah:
o
Mengurangi jumlah
uang di rekening bernama Account1
o
Menambah jumlah
uang di rekening bernama Account2
Jika kedua operasi
sukses, maka tidak ada alasan untuk menimbulkan persoalan. Jika kedua operasi
gagal, maka adalah penyebab untuk timbulnya persoalan, namun data harus berada
dalam kondisi yang konsisten. Jika satu operasi berhasil dan operasi lainnya
gagal, maka ada kemungkinan akan menjadi persoalan.
Lingkup dari sebuah
transaksi berawal mulai dari operasi yang pertama, yang disebut titik mulai,
hingga akhir dari operasi terakhir, yang disebut titik komit. Jika ada operasi
antara kedua titik tersebut ada yang gagal, maka sistem harus mengembalikan
state ke kondisi sebelum titik mulai. Secara internal, database menggunakan
mesin untuk menyimpan log untuk menyimpan state original dan memantau
keberhasilan operasi. Setiap perubahan yang dibuat pada saat transaksi dicatat,
dan jika ada operasi yang gagal, maka pencatatan log operasi dibatalkan dari akhir
kembali ke kondisi awal log. Proses ini disebut rolling back.
Dalam prakteknya,
beberapa transaksi dibuat sesederhana mungkin seperti contoh mentransfer uang
di atas. Dengan mempertimbangkan bahwa operasi untuk mengurangi jumlah uang
dalam Account1 itu sendiri tidak atomic. Artinya, ini langkah pertama dalam
mentransfer uang yang mungkin terdiri dari sejumlah langkah yang dilaksanakan
dalam aplikasi dan sejumlah operasi pada database.
Akibatnya, konsep
menentukan lingkup sangat penting karena bila anda menentukan rentang sebuah transaksi, bukan dari segi
jumlah operasi, anda akan jauh lebih mudah membuat model pemrograman.
Selain
itu, dalam transaksi yang kompleks, tidak setiap operasi yang dilakukan sepanjang
satu transaksi adalah kritis. Misalnya, jika transaksi tersebut terdiri dari sepuluh
operasi, salah satunya adalah dengan mengirim email pemberitahuan kepada
pengguna, tidak selalu bahwa jika terjadi kegagalan di sini harus mengakibatkan
kegagalan seluruh transaksi. Meskipun beberapa jenis kegagalan tertentu harus
menyebabkan transaksi rollback adalah masalah desain, yang harus diberikan
tanda dalam pelaksanaannya.
2.
Penguncian dan Isolasi
Mekanisme
penguncian memungkinkan database untuk menanganu beberapa transaksi yang
berbarengan, sambil tetap memastikan integritas data dapat dikelola.
Dengan
mekanisme penguncian, setelah transaksi tertentu telah melakukan update pada
data tertentu, transaksi lainnya dilarang memperbarui atau bahkan membaca kembali
sampai item yang pertama menyelesaikan transaksi. Transaksi selanjutnya dipaksa
untuk menunggu, dan mereka mengatakan diblokir oleh database. Proses ini disebut
dengan isolasi transaksi.
Gambar
9-2 menunjukkan contoh penguncian dalam transaksi.
Transaksi yang
ditunjukkan dalam gambar 9-2 memiliki tiga langkah berikut:
o
Transaksi pertama
mengupdate Account1 dalam database. Pada saat transaksi yang pertama dalam
proses, Account1 terkunci.
o Transaksi kedua berupaya untuk memperbarui
Account1, namun tidak dapat menyelesaikan pembaruan karena account terkunci.
Ketika
transaksi pertama selesai, kunci pada Account1 dilepaskan, yang memungkinkan
transaksi kedua untuk melanjutkan.
3.
Model Transaksi
Database
yang berbeda mendukung implementasi berbagai model manajemen transaksi. Secara
umum, pengelolaan transaksi model dapat dibagi menjadi tiga jenis:
§ Model transaksi Nested – transaksi yang
terdiri dari subtransactions yang beroperasi secara paralel. Jika transaksi
utama gagal, maka semua subtransactions akan di rolled back. Namun, kegagalan
dalam subtransaction tidak secara otomatis me-roll-back subtransactions lainnya.
Misalnya, jika transaksi 1 membuat transaksi 2, maka dalam model transaksi
nested, kegagalan dalam transaksi 1 akan me-roll-back transaksi 1 dan transaksi
2. Namun, kegagalan dalam transaksi 2 tidak secara otomatis me-roll-back
transaksi 1, karena transaksi 2 adalah subordinat dari transaksi 1.
§ Model transaksi Chained - transaksi yang
terdiri dari subtransactions yang dijalankan secara berurutan. Jika transaksi
utama gagal, maka subtransactions akan di-roll-back. Namun, kegagalan dalam
subtransaction hanya menyebabkan roll-back ke subtransaction tersebut saja.
Misalnya, jika transaksi 1 membuat transaksi 2, dan 2 transaksi membuat
transaksi 3, maka dalam chained model, kegagalan dalam transaksi 3 hanya
me-roll-back transaksi 3. Sebuah kegagalan dalam transaksi 2 akan meroll- back
transaksi 2 dan transaksi 3. Sebuah kegagalan dalam transaksi 1 akan me-roll-back
ketiga transaksi.
§ Model transaksi Flat – transaksi yang tidak
dapat dibuat dari subtransactions. Dalam urutan tertentu, hanya satu transaksi
yang berlaku pada suatu waktu. Spesifikasi Java EE hanya mendukung model
transaksi flat karena model ini secara universal didukung oleh semua vendor
database. Selain itu, model transaksi flat menggunakan API yang sederhana untuk
menentukan rentang sebuah transaksi. Ketika sebuah komponen memanggil method
untuk meng-commit sebuah transaksi, komponen tidak harus menentukan transaksi
yang mana yang akan di commit karena hanya satu transaksi dapat berlaku pada
suatu waktu. Model transaksi flat juga memungkinkan untuk model transaksi
secara deklaratif yang sederhana. Model transaksi yang lebih kompleks dapat
disimulasikan dalam kode jika diperlukan.
Protokol Kendali Konkurensi Berbasis
Lock ( Protokol
Penguncian )
Salah satu cara untuk
menjamin terjadi serialisasi adalah dengan menerapkan protokol penguncian (locking
protocol) pada tiap data yang akan diakses. Ada dua macam cara untuk
melakukan penguncian pada data:
- Shared . Jika
sebuah transaksi Ti melakukan shared-mode lock pada data
Q, maka transaksi tersebut dapat melakukan operasi read pada
Q tetapi tidak dapat melakukan operasi write pada Q.
- Exclusive . Jika
sebuah transaksi Ti melakukan exclusive-mode lock pada
data Q, maka transaksi tersebut dapat melakukan read dan write pada
Q.
Setiap transaksi harus melakukan penguncian pada data
yang akan diakses, bergantung pada kebutuhan operasi yang akan dilakukan.
Proses pengaksesan data Q sebuah transaksi Ti adalah sebagai berikut:
- Menentukan
mode penguncian yang akan dipergunakan
- Memeriksa
apakah data Q sedang dikunci oleh transaksi lain. Jika tidak, Ti dapat
langsung mengakses Q, jika ya, Ti harus menunggu (wait).
- Bila mode
penguncian yang diinginkan adalah exclusive-lock mode, maka Ti
harus menunggu sampai data Q dibebaskan.
- Bila mode
penguncian yang diinginkan adalah shared-lock mode, maka Ti
harus menunggu sampai data Q tidak berada dalam exclusive-mode
lock oleh data lain. Dalam hal ini data Q bisa diakses bila
sedang dalam keadaan bebas atau shared-mode lock.
Sebuah transaksi dapat melakukan pembebasan (unlock) pada
suatu data yang telah dikunci sebelumnya setelah data tersebut selesai diakses.
Namun, proses pembebasan data tidak langsung dilakukan sesegera mungkin karena
sifat serializable bisa tidak terjaga. Oleh karena itu, ada
pengembangan lebih lanjut dari protokol penguncian yang disebut two-phase
locking protocol. Protokol ini terdiri dari dua fase, yaitu:
- Growing
phase . Fase dimana sebuah transaksi hanya
boleh melakukan penguncian pada data. Pada fase ini, transaksi tidak boleh
melakukan pembebasan pada data lain.
- Shrinking
phase . Fase dimana sebuah transaksi
melakukan pembebasan pada data. Pada fase ini, transaksi tidak boleh
melakukan penguncian pada data lain.
Gambar 21.1. Two-Phase Locking
Protocol
|
Pada banyak kasus, two-phase locking protocol banyak
dipergunakan untuk menjaga sifat serializable dari suatu
penjadwalan, namun protokol ini belum dapat menjamin bahwa tidak akan
terjadi deadlockkarena masih ada transaksi yang berada dalam status
menunggu ( wait()).
Protokol Berbasis Waktu
Pada protokol penguncian,
transaksi-transaksi yang mengalami konflik ditangani dengan mengatur transaksi
yang lebih dulu melakukan penguncian dan juga mode penguncian yang digunakan.
Protokol berbasis waktu merupakan cara lain untuk melakukan pengaturan
transaksi agar sifat serializable penjadwalan tetap terjaga.
Pada protokol ini, setiap transaksi diberikan
sebuah timestamp yang unik yang diberi nama TS(Ti). Timestamp ini
diberikan sebelum transaksi Ti melakukan eksekusi. Bila Ti telah diberikan timestamp,
maka bila ada transaksi lain Tj yang kemudian datang dan diberikan timestamp yang
unik pula, akan berlaku TS(Ti) < TS(Tj). Ada dua metode yang digunakan untuk
melakukan protokol ini:
- Gunakan
waktu pada clock system sebagai timestamp.
Jadi, timestamp sebuah transaksi sama dengan clock
system ketika transaksi itu memasuki sistem.
- Gunakan
sebuah counter sebagai sebuah timestamp.
Jadi, timestamp sebuah transaksi sama dengan nilai counter ketika
transaksi mulai memasuki sistem.
Timestamp dari transaksi-transaksi
akan membuat sifat serializable tetap terjaga. Bila TS(Ti)
< TS(Tj), maka Ti akan dilakukan terlebih dahulu, baru kemudian Tj
dilakukan. Setiap data item yang akan diakses akan memiliki dua nilai timestamp:
- W-timestamp(Q),
berisi timestamp terbesar yang berhasil mengeksekusi
perintah write().
- R-timestamp(Q),
berisi timestamp terbesar yang berhasil mengeksekusi
perintah read().
Timestamp yang ada akan terus
diperbaharui kapan saja
instruksi read(Q) atau write(Q) dieksekusi. Berdasarkan protokol
berbasis waktu, semua konflik yang ada antara read dan write akan
dieksekusi berdasarkan urutan timestamp tiap instruksi.
Protokol pembacaan transaksi:
- Jika
TS(Ti) < W-timestamp(Q), maka Ti perlu membaca data yang sekarang
sudah ditulis dengan data lain. Maka, transaksi ini akan ditolak.
- Jika
TS(Ti) >= W-timestamp(Q), maka Ti akan membaca data
dan R-timestamp(Q) akan di-set menjadi maksimum, yaitu
sesuai timestamp Ti.
Protokol penulisan transaksi:
- Jika
TS(Ti) lebih kecil dari R-timestamp(Q), maka data Q yang akan ditulis
oleh Ti diperlukan sebelumnya, sehingga dianggap bahwa Ti tidak perlu
melakukan operasi write()(waktu eksekusi transaksi sudah lewat) dan
transaksi ini ditolak.
- Jika
TS(Ti) lebih kecil W-timestamp(Q), maka transaksi Ti melakukan operasi write() yang
hasilnya tidak diperlukan lagi (waktu Ti melakukan eksekusi sudah lewat)
sehingga transaksi ini ditolak.
- Selain dua
point di atas, maka transaksi akan dilakukan
T2
|
T3
|
Read (B)
|
|
|
Read (B)
|
|
Write (B)
|
Read (A)
|
|
|
Read (A)
|
|
Write (A)
|
|
Read (B)
|
|
Write (B)
|
Protokol berbasis waktu juga membantu dalam
mengatasi deadlock, karena tidak ada transaksi-transaksi yang
melakukan wait().
Mekanisme Penanganan Deadlock
·
Pengabaian. Ostrich Algorithm.
·
Pencegahan. Mencegah terjadinya salah satu kondisi deadlock.
·
Penghindaran. Memastikan sistem berada pada safe state dan dengan menggunakan deadlock avoidance algorithm.
·
Pendeteksian
dan Pemulihan. Mekanisme
pendeteksian menggunakan detection
algorithm, sedangkan pemulihan dengan cara rollback and restart sistem ke safe state.
A.
Penanganan DEADLOCK
1.
Pengabaian. Maksud dari pengabaian di sini adalah sistem
mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara
ini dikenal istilah ostrich
algorithm. Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis mematikan proses
atau program yang mengalami deadlock.
Kebanyakan sistem operasi yang ada mengadaptasi cara ini untuk menangani
keadaan deadlock. Cara
penanganan dengan mengabaikan deadlock banyak dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit
dan kompleks untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem
untuk kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukanrestart terhadap komputer.
2.
Pencegahan. Penanganan ini dengan cara mencegah terjadinya
salah satu karakteristik deadlock.
Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya
memastikan agar sistem tidak akan pernah berada pada kondisi deadlock. Akan dibahas secara
lebih mendalam pada bagian selanjutnya.
3.
Penghindaran. Menghindari keadaan deadlock. Bagian yang perlu
diperhatikan oleh pembaca adalah bahwa antara pencegahan dan penghindaran
adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari
empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi. Sedangkan
penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam
kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan
terjadi deadlock. Akan
dibahas secara lebih mendalam pada bagian selanjutnya.
4.
Pendeteksian
dan Pemulihan. Pada sistem
yang sedang berada pada kondisi deadlock,
tindakan yang harus diambil adalah tindakan yang bersifat represif. Tindakan
tersebut adalah dengan mendeteksi adanya deadlock,
kemudian memulihkan kembali sistem. Proses pendeteksian akan menghasilkan
informasi apakah sistem sedang deadlock atau tidak serta proses mana yang
mengalami deadlock. Akan
dibahas secara lebih mendalam pada bagian selanjutnya.
B.
Pencegahan Deadlock
Pencegahan deadlock dapat dilakukan dengan cara mencegah
salah satu dari empat karakteristik terjadinya deadlock. Berikut ini akan
dibahas satu per satu cara pencegahan terhadap empat karakteristik tersebut.
1.
Mutual
Exclusion . Kondisi mutual exclusion pada sumber daya adalah sesuatu yang
wajar terjadi, yaitu pada sumber daya yang tidak dapat dibagi (non-sharable).
Sedangkan pada sumber daya yang bisa dibagi tidak ada istilah mutual exclusive. Jadi,
pencegahan kondisi yang pertama ini sulit karena memang sifat dasar dari sumber
daya yang tidak dapat dibagi.
2.
Hold
and Wait . Untuk
kondisi yang kedua, sistem perlu memastikan bahwa setiap kali proses meminta
sumber daya, ia tidak sedang memiliki sumber daya lain. Atau bisa dengan proses
meminta dan mendapatkan sumber daya yang dimilikinya sebelum melakukan
eksekusi, sehingga tidak perlu menunggu.
3.
No
Preemption . Pencegahan
kondisi ini dengan cara membolehkan terjadinya preemption. Maksudnya bila
ada proses yang sedang memiliki sumber daya dan ingin mendapatkan sumber daya
tambahan, namun tidak bisa langsung dialokasikan, maka akan preempted. Sumber daya yang
dimiliki proses tadi akan diberikan pada proses lain yang membutuhkan dan
sedang menunggu. Proses akan mengulang kembali eksekusinya setelah mendapatkan
semua sumber daya yang dibutuhkannya, termasuk sumber daya yang dimintanya
terakhir.
4.
Circular
Wait . Kondisi
'lingkaran setan' ini dapat 'diputus' dengan jalan menentukan total kebutuhan
terhadap semua tipe sumber daya yang ada. Selain itu, digunakan pula mekanisme
enumerasi terhadap tipe-tipe sumber daya yang ada. Setiap proses yang akan
meminta sumber daya harus meminta sumber daya dengan urutan yang menaik.
Misalkan sumber daya printer memiliki nomor 1 sedangkan CD-ROM memiliki nomor 3. Proses boleh
melakukan permintaan terhadap printer dan kemudian CD-ROM, namun tidak boleh
sebaliknya.
C. Penghindaran Deadlock
Penghindaran
terhadap deadlock adalah cara penanganan yang selanjutnya.
Inti dari penghindaran adalah jangan sembarangan membolehkan proses untuk
memulai atau meminta lagi. Maksudnya adalah, jangan pernah memulai suatu proses
apabila nantinya akan menuju ke keadaan deadlock. Kedua, jangan
memberikan kesempatan pada proses untuk meminta sumber daya tambahan jika
penambahan tersebut akan membawa sistem pada keadaan deadlock.
Tidak mungkin akan terjadi deadlock apabila sebelum terjadi sudah
kita hindari.
Langkah lain untuk menghindari adalah dengan
cara tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber
daya yang ada. Selanjutnya terdapat deadlock-avoidance algorithm yang
secara rutin memeriksa state dari sistem untuk memastikan
tidak adanya kondisi circular wait serta sistem berada pada
kondisi safe state. Safe state adalah suatu
kondisi dimana semua proses mendapatkan sumber daya yang dimintanya dengan
sumber daya yang tersedia. Apabila tidak bisa langsung, ia harus menunggu
selama waktu tertentu, kemudian mendapatkan sumber daya yang diinginkan,
melakukan eksekusi, dan terakhir melepas kembali sumber daya tersebut. Terdapat
dua jenis algoritma penghindaran yaitu resource-allocation graph untuk single
instances resources serta banker's algorithm untukmultiple
instances resources.
Algoritma penghindaran yang pertama yaitu resource-allocation
graph akan dijelaskan secara mendalam pada bab selanjutnya yaitu
Diagram Graf. Untuk algoritma yang kedua yaitu banker's algorithmakan
dibahas pada bab ini dan dilengkapi oleh pembahasan di bab selanjutnya.
Dalam banker's algorithm, terdapat
beberapa struktur data yang digunakan, yaitu:
- Available . Jumlah sumber daya yang
tersedia.
- Max . Jumlah sumber daya maksimum
yang diminta oleh tiap proses.
- Allocation . Jumlah sumber daya yang sedang
dimiliki oleh tiap proses.
- Need . Sisa sumber daya yang masih
dibutuhkan oleh proses, didapat dari max- allocation.
Kemudian terdapat safety algorithm untuk
menentukan apakah sistem berada pada safe state atau tidak.
01 work dan finish adalah vektor yang diinisialisasi:
work = available
finish[i] = FALSE untuk
i= 1,2,3,..,n-1.
02 cari i yang memenuhi finish[i] == FALSE dan needi <= work
jika tak ada, ke tahap 04
03 work = work + allocationi
finish [i] = TRUE
kembali ke tahap 02
04 jika finish[i]==TRUE untuk semua i, maka sistem safe state.
Terdapat juga algoritma lainnya yang menentukan
apakah proses boleh melakukan permintaan terhadap sumber daya tambahan atau
tidak. Algoritma yang bertujuan memastikan sistem tetap pada keadaansafe
state ini dinamakan resource-request algorithm.
Request = sumber daya yang dibutuhkan proses Pi. Pada request,
Pi membutuhkan k instances dari Rj.
01 Jika Requesti <= Needi, ke tahap 02.
Selain itu error karena
melebihi maximum permintaan
02 Jika Requesti <= Available, ke tahap 03.
Selain itu Pi harus
menunggu karena tidak tersedia
03 Ubah kondisi state setelah request dikabulkan
Available = Available
- Requesti
Allocationi =
Allocationi + Requesti
Needi = Needi -
Requesti
if safe => sumber daya
dialokasikan pada Pi
if unsafe => Pi
menunggu, state kembali sebelumnya
Algoritma-algoritma tersebut bertujuan untuk
menghindarkan sistem dari terjadinya deadlock. Keadaan dimana
sistem bebas dari deadlock disebut safe state.
Jadi, semua kebutuhan proses akan sumber daya terpenuhi. Dampaknya adalah
sistem tidak mengalami deadlock. Selain safe state,
terdapat pula keadaan unsafe state. Pada keadaan ini, sistem
mempunyai kemungkinan untuk berada pada kondisideadlock. Sehingga cara
yang paling jitu untuk menghindari deadlock adalah memastikan
bahwa sistem tidak akan pernah mengalami keadaan unsafe state.
D.
Pendeteksian Deadlock
Pada dasarnya
kejadian deadlock sangatlah jarang terjadi. Apabila
kondisi tersebut terjadi, masing-masing sistem operasi mempunyai mekanisme
penanganan yang berbeda. Ada sistem operasi yang ketika terdapat kondisi deadlock dapat langsung mendeteksinya. Namun,
ada pula sistem operasi yang bahkan tidak menyadari kalau dirinya sedang
mengalami deadlock.
Untuk sistem operasi yang dapat mendeteksideadlock, digunakan
algoritma pendeteksi. Secara lebih mendalam, pendeteksian kondisi deadlock adalah cara penanganan deadlock yang dilaksanakan apabila sistem telah
berada pada kondisi deadlock.
Sistem akan mendeteksi proses mana saja yang terlibat dalam kondisi deadlock. Setelah diketahui
proses mana saja yang mengalami kondisi deadlock,
maka diadakan mekanisme untuk memulihkan sistem dan menjadikan sistem berjalan
kembali dengan normal.
Mekanisme pendeteksian adalah
dengan menggunakan detection
algorithm yang akan
memberitahu sistem mengenai proses mana saja yang terkena deadlock. Setelah diketahui
proses mana saja yang terlibat dalam deadlock,
selanjutnya adalah dengan menjalankan mekanisme pemulihan sistem yang akan
dibahas pada bagian selanjutnya. Berikut ini adalah algoritma pendeteksian deadlock.
E.
Pemulihan Deadlock
Pemulihan kondisi
sistem terkait dengan pendeteksian terhadap deadlock.
Apabila menurut algoritma pendeteksian deadlock sistem berada pada keadaan deadlock, maka harus segera
dilakukan mekanisme pemulihan sistem. Berbahaya apabila sistem tidak segera
dipulihkan dari deadlock,
karena sistem dapat mengalami penurunan performance dan akhirnya terhenti.
Cara-cara yang ditempuh untuk
memulihkan sistem dari deadlock adalah sebagai berikut:
1.
Terminasi
proses. Pemulihan sistem
dapat dilakukan dengan cara melalukan terminasi terhadap semua proses yang
terlibat dalam deadlock.
Dapat pula dilakukan terminasi terhadap proses yang terlibat dalam deadlock secara satu per satu sampai 'lingkaran
setan' atau circular wait hilang. Seperti diketahui bahwa circular wait adalah salah satu karakteristik
terjadinya deadlock dan merupakan kesatuan dengan tiga
karakteristik yang lain. Untuk itu, dengan menghilangkan kondisi circular wait dapat memulihkan sistem dari deadlock.Dalam melakukan
terminasi terhadap proses yang deadlock,
terdapat beberapa faktor yang menentukan proses mana yang akan diterminasi.
Faktor pertama adalah prioritas dari proses-proses yang terlibat deadlock. Faktor kedua adalah
berapa lama waktu yang dibutuhkan untuk eksekusi dan waktu proses menunggu
sumber daya. Faktor ketiga adalah berapa banyak sumber daya yang telah
dihabiskan dan yang masih dibutuhkan. Terakhir, faktor utilitas dari proses pun
menjadi pertimbangan sistem untuk melakukan terminasi pada suatu proses.
2.
Rollback
and Restart . Dalam
memulihkan keadaan sistem yang deadlock,
dapat dilakukan dengan cara sistem melakukan preempt terhadap sebuah proses dan kembali ke state yang aman. Pada keadaan safe state tersebut, proses masih berjalan dengan
normal, sehingga sistem dapat memulai proses dari posisi aman tersebut. Untuk
menentukan pada saat apa proses akan rollback,
tentunya ada faktor yang menentukan. Diusahakan untuk meminimalisasi kerugian
yang timbul akibat memilih suatu proses menjadi korban. Harus pula dihindari
keadaan dimana proses yang sama selalu menjadi korban, sehingga proses tersebut
tidak akan pernah sukses menjalankan eksekusi.
B.
PEMULIHAN ( RECOVERY )
Backup : proses secara periodik untuk mebuat duplikat dari database dan
melakukan logging file (atau program) ke media penyimpanan eksternal.
Recovery merupakan
upaya untuk mengembalikan basis data ke keadaaan yang dianggap benar setelah
terjadinya suatu kegagalan.
1.
Pemulihan
terhadap kegagalan transaksi
2.
Pemulihan
terhadap kegagalan system
3.
Pemulihan
terhadap kegagalan media
Jenis – jenis kegagalan :
1.
Kegagalan system
Kegagalan yang mempengaruhi semua
transaksi yang sedang berjalan tetapi tidak merusak database secara fisik.
Contoh : system error, software error
2.
Kegagalan media
Kegagalan yang merusak database dan semua
transaksi yang sedang berjalan pada saat itu.
Contoh :
head crash
Berbagai kemungkinan yang harus diantisipasi :
·
Gangguan
Listrik
·
Kerusakan
Disk
·
Kesalahan
Perangkat Lunak
·
Pengaksesan
oleh orang yang tidak berhak
·
Dua
Pengguna/ lebih mengubah data yang
sama
3.
Fasilitas
recovery
Fasilitas recovery didalam DBMS :
o Back up mechanism
Membuat back up database dan
log file secara periodic
o Looging facility
Mencatat semua transaksi
yang sedang berjalan
o Checkpoint facility
Synchronization point antara
database dengan transaksi log file
o Recovery manager
Mengijinkan system untuk
merestore database kekondisi yang tepat
Sejumlah control yang disediakan oleh DMBS :
o Pemulihan (recovery)
o Pengamanan (security)
o Integritas (integrity)
o Konkurensi (concurency)
Teknik
Pemulihan
1.
Defered upate / perubahan yang ditunda
Perubahan
pada basis data tidak akan berlangsung sampai transaksi ada pada poin disetujui
(COMMIT). Jika terjadi kegagalan maka tidak akan terjadi perubahan,
tetapi diperlukan operasi redo untuk mencegah
akibat dari kegagalan tersebut.
2.
Immediate
Upadte / perubahan langsung
Perubahan pada basis data akan segera tanpa harus menunggu sebuah
transaksi tersebut disetujui. Jika terjadi kegagalan diperlukan operasi UNDO
untuk melihat apakah ada transaksi yang telah disetujui sebelum terjadi
kegagalan.
3.
Shadow
Paging
Menggunakan page bayangan dimana pada prosesnya terdiri dari 2
tabel yang sama, yang satu menjadi tabel transaksi dan yang lain digunakan
sebagai cadangan. Ketika transaksi mulai berlangsung kedua tabel ini sama dan
selama berlangsung tabel transaksi yang menyimpan semua perubahan ke database,
tabel bayangan akan digunakan jika terjadi kesalahan. Keuntungannya adalah
tidak membutuhkan REDO atau UNDO, kelemahannya membuat terjadinya fragmentasi.
Pemulihan Transaksi
Sebuah transaksi adalah suatu kesatuan
prosedur di dalam program yang mungkin memperbaharui data pada sejumlah tabel.
Sebuah transaksi dikatakan telah disetujui (committed) kalau seluruh rangkaian proses dalam transaksi tersebut berhasil
dilaksanakan. Dalam prakteknya, bisa saja sesuatu proses di dalam sebuah
transaksi gagal dilaksanakan.
Keterangan :
a. Mulai
: menyatakan keadaan awal
b. Disetujui
sebagian : keadaan setelah suatu pernyataan berhasil dilaksanakan
c. gagal :
menyatakan keadaan setelah suatu pernyataan gagal melaksanakan tugas
d. batal : keadaan setelah transaksi dibatalkan. Setelah
dibatalkan, keadaan dipulihkan seperti keadaan awal transaksi.
e. disetujui
: keadaan setelah transaksi berhasil dijalankan
f. berakhir
: terjadi setelah transaksi disetujui atau dibatalkan
active
|
partially
committed
|
committed
|
failed
|
aborted
|
System mempunyai catatan yang disebut
log atau jurnal pada disk, yang dijadikan pedoman untuk membatalkan suatu
pengubahan basisdata prosedur konsep pencatatan pada log:
Baca (X, xi) menyatakan prosedur untuk membaca item X dan nilainya
berupa xi.
Tulis (Y, yi) menyatakan prosedur untuk menulis item Y dan
nilainya berupa yi.
Contoh catatan log :
mulai> : ditulis ke dalam log
sebelum Ti dimulai
: pengubahan item X dengan nilai baru
xi
: ditulis ke dalam log saat transaksi
disetujui
Log Basis Data
Pernyataan pada SQL :
a. COMMIT :
menyetujui pengubahan data secara permanen dan membawa ke keadaan akhir
b. ROLLBACK : membatalkan pengubahan data dan
membawa ke keadaan akhir .
Pemulihan
Terhadap Pembatalan Transaksi (Rollback)
Terdapat dua metode dasar, yaitu :
1. pendekatan update-in-place.
2. pendekatan deferred-update
Transaksi pada dasarnya melibatkan empat aksi, yaitu :
1. update – membaca dan memodifikasi sistem.
2. read - hanya membaca sistem.
3. commit - membuat permanent seluruh modifikasi terhadap sistem.
4. abort - membatalkan aksi-aksi yang telah dilakukan.
1.
Pendekatan update – in – place
Pendekatan ini melibatkan pembaharuan sistem
sebagaimana transaksi berjalan dan meniadakan pembaruan-pembaruan jika
transaksi dibatalkan. Implementasi aksi-aksi transaksi pada pendekatan ini
adalah :
1.
Update – merekam undo terhadap record (contoh nilai lama objek yang
diperbarui) di file log undo dan memperbarui sistem.
2. Read - membaca nilai objek disistem.
3. Commit - mengabaikan file log undo.
4. Abort – menggunkan record-rekord undo di
file log undo untuk mengembalikan system ke kondisi semula sebelum
transaksi dengan membalik operasi-operasi yang telah dilakukan.
2.
Pendekatan deferred – update
Melibatkan penyimpanan
pembaruan-pembaruan transaksi saat dijalankan dan menggunakan
pembaruan-pembaruan yang disimpan untuk memperbarui system saat transaksi di –
commit. Implementasi aksi-aksi transaksi pada pendekatan ini adalah :
1. Update – merekam rekor redo ( contoh nilai baru dari objek yang
sedang diperbarui) di file log redo (juga disebut intention list).
2. Read –
menggabungkan file log redo dan system untuk menentukan nilai objek.
3. Commit - memperbarui system dengan menerapkan file log redo
secara berurut (dimulai dengan opersi pertama yang dilakukan transaksi).
4. Abort -
mengabaikan file log redo dan transaksi.
Pemulihan Sistem
Karena gangguan
sistem, hang, listrik terputus alirannya. Kegagalan pada system menyebabkan
data yang berada dalam RAM hilang.
Implikasi :
Transaksi tidak selesai : dibatalkan pada saat system aktif
(prosesnya bisa disebut Undo).
Transaksi yang telah berakhir (disetujui) :ditulis ke
basis data (prosesnya biasa disebut Redo).
Pemulihan Media
Pemulihan
karena kegagalan media dengan cara mengambil atau memuat kembali salinan basis
data (backup) atau Pemulihan dengan cara restore dari backup Bagian tak
terpisah dari sistem basisdata adalah skema pemulihan (recovery). Pemulihhan
bertanggung-jawab terhadap pendeteksian kegagalan dan mengembalikan basis data
ke keadaan konsisten sebelum terjadinyya kegagalan. Kegagalan media (misalnya
disk rusak) dan proses pemulihannya Kegagalan disebabkan penyimpanan permanent
adalah jarang terjadi. Meskipun demikian perlu dipersiapkan untuk mengatasi
kejadian kegagalan ini. Teknik utama untuk mengatasi ini adalah backup atau
dump.
Kegagalan pada
media disebabkan data di disk hhilang karena terkorupsi sewaktu sistem crash
atau penulisan acak atau karena rusaknya head dari disk. Kalau kejadian ini
berlangsung , kita dapat memperoleh data dari penyimpanan stabil (yang
berpeluang kecil gagal karena dilakukan secara mirrored disks, atau mempunyai
banyak kopian dibanyak lokasi jaringan).Data yang disimpan dipenyimpanan stabil
adalah data itu sendiri dan file log. Kapan arsip yang konnsisten sulit
dilakukan karena berarti harus menghentikan semua transaksi untuk perekaman
kopian arsip. Pendekatan yang lebih baik adalah teknik “fuzzy dump” yaitu perekaman
dilakukan secara asinkron selagi aktivitas transaksi berlangsung dilakukan
secara konkuren sebagai aktivitas background. Skema dasar untuk mengatasai
adalah backup seluruh isi basisdata ke penyimpan stabil (stabile storage)
secara periodic. Penyimpan stabil adalah penyimpan yang tak pernah kehilangan
isinya. Transfer blok antara memori dan penyimpan disk dapat menghasilkan
beberapa kemungkinan hasil berikut :
·
sukses seluruhnya
·
informasi yang ditransfer tiba dengan selamat ditujuan
·
terjadi kegagalan persial
kegagalan.
terjadi ditengah-tengah transfer dan blok tujuan memuat informasi yang salah.
·
terjadi kegagalan total
kegagalan terjadi
diawal transfer sehingga blok tujuan tidak berubah. Sistem harus dapat
mendeteksi terjadinya kegagalan transfer data dan melakukan prosedur pemulihan
untuk mengembalikan blok ke keadaan konsisten . untuk melakukan hal ini, system
harus mengelola dua blok fisik untuk tiap blok basisdata logik. Operasi
penulisan sebagai berikut :
1.
Tulis informasi ke blok fisik pertama.
2. Saat penulisan pertama sukses secara
lengkap, tulis informasi yang sama ke blok fisik kedua.
3. Penlisan dinyatakan sukses secara
hanya setelah penulisan kedua sukses secara lengkap.
Prosedur pemulihan
Selama pemulihan,
masing-masing pasangan blok fisik diperiksa. Jika keduanya sama dan tidak
terdeteksi kesalahan, maka tak ada aksi yang dilakukan. Jika salah satu blok
terdeteksi kesalahan, maka gantikan isisnya dengan blok yang tak terdeteksi
kesalahan. Jika kedua blok tak terdeteksi kesalahan tapi berada maka gantikan
blok pertama dengan nilai blok kedua.
Pemulihan berbasis log
Bentuk yang palingn
sering digunakan untuk merekam mamodifikasi yang dilakukan terhadap basisdata
adalah log. Rekaman log mendeskripsikan satu penulisan ke basisdata dan
memiliki field-field berikut :
1.
nama transaksi
nama transaksi untuk yang melakukan operasi
penulisan.
2. nama item data
nama item data unik yang ditulis.
3. nilai nama
nilai ite data sebelum
penulisan.
4. nilai baru
nilai item data yang seharusnya
terjadi setelah penulisan.
Prosedur pemulihan
Setelah kegagalan
maka basisdata dikembalikan ke keadaan terakhir yang di backup. Kemudian
barisan transaksi stelah backup terakhir yang tercatat dilog dieksekusi ulang.
Pemulihan dengan checkpoint
Saat terjadi
kegagalan system, maka diperlukan mengkonsultasi log untuk menetukan
transaksi-transaksi yang perlu dijalankan kembali dan transaksi-trsansaksi yang
perlu dijalankan kembali dan transaksi-transaksi yang tak perlu dijalankan
ulang. Seluruh log perlu ditelusuri untuk menetukan hal ini. Terdapat dua
kesulitan dengan pendekatan ini :
• Proses pencairan memerlukan banyak
waktu.
• Kebanyakan transaksi yang perlu
dilakukan telah dituliskan ke basisdata.
Meskipun menjalankan
ulang transaksi-transaksi itu tidak merusak, tapi pemulihan menjadi lebih lama.
Meruduksi overhead ini diperlukan checkpoint. System mengelolah log menggunakan
salah satu teknik-teknik diatas. Sistem secara periodik membuat checkpoint
sebagai berikut :
• Tulis semua rekaman log yang saat itu
berada dimemori utama kepenyimpan stabil.
• Ttulis semua blok buffer yang telah
dimodifikasi ke disk.
• Tulis record log ke penyimpn stabil.
Terimakasih telah membaca Makalah Transaksi dan Pemulihan Sistem Operasi semoga bermanfaat.
keywords: Makalah Transaksi dan Pemulihan Sistem Operasi, Transaksi dan Pemulihan Sistem Operasi
nice share..
ReplyDeletethanks share makalahnya...
ReplyDelete