BREAKING NEWS

Informatika

Jumat, 26 Maret 2021

Makalah sinkronisasi data

Makalah sinkronisasi data 




Disusun oleh:
 ARMELIA LUVITA SARI
PROGRAM STUDI  INFORMATIKA
UNIVERSITAS TEKNOKRAT INDONESIA



Kata Pengantar

Segala puji syukur kami panjatkan kehadirat Allah SWT yang telah melimpahkan segala rahmat dan karunia-Nya, tidak lupa kami ucapkan banyak terimakasih kepada Bapak heri haerudin Selaku dosen Pengantar Sistem Operasi, Sehingga kami dapat menyelesaikan Makalah yang berjudul “ SINKRONISASI DATA DAN DEADLOCK “ ini yang merupakan salah satu syarat untuk memenuhi nilai dari mata kuliah Sistem Operasi.

Dalam makalah ini membahas tentang Sinkronisasi data dan Deadlock, Jika Makalah ini masih kurang lengkap, kami selaku penyusun telah berusaha sebaik mungkin untuk menyusun makalah ini agar dapat dimengerti dan dipahami dan kami memerlukan kritik dan saran agar dapat meningkatkan makalah kami.

Semoga Allah SWT selalu memberikan petunjuk kepada kita dalam pembentukan generasi yang maju. Akhir kata kami ucapkan terima kasih


Bab 1

PENDAHULUAN


1 . 1 Latar Belakang

Sistem operasi adalah seperangkat program yang mengelola sumber daya perangkat keras komputer atau hardware, dan menyediakan layanan umum untuk aplikasi perangkat lunak. Sistem operasi adalah jenis yang paling penting dari perangkat lunak dalam sistem komputer. Tanpa sistem operasi, pengguna tidak dapat menjalankan program aplikasi pada komputer mereka, kecuali program aplikasi booting.

Untuk fungsi-fungsi perangkat keras seperti sebagai masukan dan keluaran dan alokasi memori, sistem operasi bertindak sebagai perantara antara program aplikasi dan perangkat keras komputer, meskipun kode aplikasi biasanya dieksekusi langsung oleh perangkat keras dan seringkali akan menghubungi OS atau terputus oleh itu. Sistem operasi yang ditemukan pada hampir semua perangkat yang berisi komputer-dari ponsel dan konsol permainan video untuk superkomputer dan server web.

Sistem Operasi yang ada pada jaman sekarang ini semakin banyak, canggih dan tentu saja semakin berkembang. Meskipun Sistem Operasi yang digunakan pada masa sekarang ini kebanyakan menggunakan Windows, bukan berarti Sistem Operasi yang lain mati ( tidak ada atau punah ). Sebagai contoh, masih ada Sistem Operasi yaitu Linux. Dalam Sistem Operasi, banyak hal yang harus dipahami. Bukan sekedar memahami bagaimana menginstall aplikasi, menghapus virus, memberikan proteksi virus bagi laptop maupun komputer. Bukan sekedar itu saja. Didalam Mata Kuliah Sistem Operasi ini, diajarkan mengenai manajemen memory, CPU, beberapa Algoritma seperti FCFS ( First Come First Served ), Round Robin, SJF, dan lain sebagainya. Sistem operasi mempunyai penjadwalan yang sistematis mencakup perhitungan penggunaan memori, pemrosesan data, penyimpanan data, dan sumber daya lainnya.


1.2 Tujuan

Mengetahui Sinkronisasi dan Deadlock

Mengetahui masalah critical section

Mengetahui Sinkronisasi Hardware

Mengetahui sinkronisasi software

Mengetahui semaphore

Mengetahui Masalah Masalah Klasik dalam Sinkronisasi

Mengetahui deadlock

Mengetahui Karakterisktik deadlock

Mengetahui Metode Penanganan deadlock

Mengetahui pencegahan deadlock


Bab 2

PEMBAHASAN

2.1 Sinkroniasi Data

Definisi sinkronisasi adalah suatu proses dimana proses tersebut saling bersamaan dan saling berbagi data bersama yang mengakibatkan race condition atau lebih dikenal dengan inkonsistensi data.

Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan baik dan sesuai apa yang di harapkan.


Sebab dan Menanggulangi:

Akses – akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten

Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan pemintaan ekseskusi dari proses yang bekerja.

Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir

Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan.


Masalah critical section

Critical section adalah segmen kode yang mengakses data yang digunakan proses secara bersama sama yang dapat membawa proses itu ke bahaya race condition. Biasanya sebuah proses sibuk melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang menuju ke race condition pada sebagian besar waktu. Akan tetapi, biasanya setiap proses memiliki segmen kode dimana proses itu dapat mengubah variabel, meng-update suatu tabel, menulis ke suatu file, dan lain-lainnya, yang dapat membawa proses itu ke bahaya race condition.


1.3 Prasyarat Solusi Critical Section


Mutual Exclusion. Mutual Exclusion merupakan sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersama-sama, proses lain akan dikeluarkan dari pekerjaan yang sama. Misal proses Pi sedang menjalankan critical section (dari proses Pi), maka tidak ada proses-proses lain yang dapat menjalankan critical section dari prosesproses tersebut. Dengan kata lain, tidak ada dua proses yang berada di critical section pada saat yang bersamaan.

a. do {

i. entry section

ii. critical section

iii. exit section

iv. remainder section

b. } while (1);

Setiap proses harus meminta izin untuk memasuki critical sectionnya. Bagian dari kode yang mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut exit section. Bagian kode selanjutnya disebut remainder section. Dari kode di atas, dapat kita lihat bahwa untuk bisa memasuki critical section sebuah proses harus melalui entry section.

Terjadi kemajuan (progress). Jika tidak ada proses yang sedang menjalankan critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section, maka hanya prosesproses yang tidak sedang menjalankan remainder section-nya yang dapat berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section, dan pemilihan siapa yang berhak masuk ke critical section ini tidak dapat ditunda secara tak terbatas (sehingga tidak terjadi deadlock).

Ada batas waktu tunggu (bounded waiting). Jika seandainya ada proses yang sedang menjalankan critical section, maka terdapat batasan waktu berapa lama suatu proses lain harus menunggu giliran untuk mengakses critical section. Dengan adanya batas waktu tunggu akan menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan).

Masalah sinkronisasi Software (perangkat lunak)

Solusi perangkat lunak(Software) Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada asumsi-asumsi lain, selain itu setiap proses berjalan pada kecepatan yang bukan nol.

Masalah sinkronisasi hardware (perangkat keras)

Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive, atau dengan kata lain, harus ada satu atau sekelompok instruksi yang tidak dapat diberhentikan pada waktu eksekusi (sifat mutual exclusive). Jadi, solusi untuk sinkronisasi dengan cara pendekatan hardware lebih menekankan kepada usaha-usaha untuk membuat suatu atau sekelompok instruksi menjadi mutual exclusive.

Pendekatan dari sisi Hardware dapat dibagi menjadi dua:

Processor Synchronous

Memory Synchronous

Processor Synchronous

Central Processing Unit, CPU, mempunyai suatu mekanisme yang dinamakan interrupt. Di dalam sistim operasi, mekanisme ini digunakan secara intensif, atau dengan kata lain, banyak konsep-konsep sistim operasi yang menggunakan mekanisme ini. Sebagai contoh : system call, process scheduling, dsb.

Berbicara mengenai sinkronisasi berarti kita mengasumsikan bahwa akan ada 2 atau lebih proses yang sedang berjalan di komputer secara concurrent, atau dengan kata lain konsep time-shared sudah diimplementasikan di sistim operasi.

Sistim time-shared yang sering diimplementasikan dengan algoritma RR (Round Robin), memanfaatkan mekanisme interrupt di CPU. Jadi di dalam RR ada suatu satuan waktu yg dinamakan quantum yang mana setiap quantum dibatasi oleh satu software interrupt.

Teknisnya, akan ada suatu interrupt – yang biasanya adalah timer interrupt – yang secara berkala akan menginterrupt sistim. Pada saat interrupt dilakukan sistim operasi akan segera melakukan proses pergantian dari proses yang satu ke proses yang lainnya sesuai dengan algoritma.

Seperti yang telah dikatakan di atas, isu yang ada di sini adalah, ada satu atau sekelompok instruksi yang tidak dapat diberhentikan sampai satu atau sekelompok instruksi tersebut selesai.

Adalah sangat jelas bahwa yang membuat suatu instruksi diberhentikan adalah mekanisme yang di sistim operasi (baca mengenai process scheduling ). Mekanisme ini sangat bergantung kepada mekanisme interrupt dari hardware. Jadi, jika kita dapat menon-aktifkan interrupt pada saat critical section tersebut, maka masalah sinkronisasi dapat terselesaikan.

Ternyata para designer komputer melihat celah ini, dan sekarang ini sudah hampir semua komputer yang ada telah mengimplementasi instruksi mesin yang mana instruksi ini akan menon-aktifkan serfis interrupt, dan ada instruksi yang lain yang akan mengaktifkan interrupt tersebut.

Sebagai contoh sederhana, kita akan melihat contoh program dari prosesor Atmel ARM tm (contoh ini diambil karena prosesor ini mudah didapatkan dan harganya tidak terlalu mahal, serta ada dev-kitnya, silahkan merujuk ke http://www.atmel.com ).

mainModul :

00 CLI ‘ masuk ke Critical Section dengan cara

‘ men-disable interrupt

01 ADD r1,r2 ‘ Critical Section

02 …. ‘ Critical Section

03 SBI ‘ pergi dari Critical Section dengan cara

‘ men-enable interrupt

04 .. ‘ Remainder Section


Pada baris ke 0, prosesor akan menon-aktifkan interrupt, instruksi – instruksi selanjutnya tidak akan diganggu oleh interrupt. Selanjut setelah keluar dari critical section, pada baris 3, prosesor akan mengaktifkan kembali interrupt sehingga mekanisme scheduling di sistim operasi dapat berjalan kembali.

Bila kita melihat dari yang di atas, terlihat bahwa dengan mekanisme ini saja sudah cukup mengatasi isu yang ada. Tetapi ternyata mekanisme ini tidak terlalu berhasil di dalam lingkungan multiprocessor. Jikalau kita menon-aktifkan interrupt, maka yang dinon-aktifkan hanya satu prosesor, hal ini dapat mengakibatkan hal – hal yang tidak diinginkan.

Memory Synchronous

Dilihat dari nama mekanismenya, maka kita sudah dapat memprediksi bahwa mekanisme ini akan menggunakan jasa memori. Memang hal tersebut benar, mekanisme memory synchronous memakai suatu nilai yang disimpan di memori, dan jikalau suatu proses berhasil mengubah nilai ini, maka proses ini akan meneruskan ke instruksi selanjutnya, jika tidak, maka proses ini akan berusaha terus untuk dapat mengubahnya.

Jika dilihat dari paragraf di atas, mekanisme ini lebih cocok dikategorikan sebagai pendekatan dari software. Tetapi, jika kita perhatikan lebih lanjut, ternyata mekanisme ini memerlukan jasa hardware. Syarat yang harus dipenuhi agar mekanisme ini dapat berjalan adalah perlunya hardware mempunyai kemampuan untuk membuat suatu instruksi dijalankan secara atomic. Pengertian dari instruksi atomic adalah satu atau sekelompok instruksi yang tidak dapat diberhentikan sampai instruksi tsb selesai. Detil mengenai hal ini akan dibicarakan di bagian – bagian selanjutnya.

Sebagai contoh, kita dapat memperhatikan contoh program Javatm yang ada di bawah ini :

00 boolean testAndSet( boolean variable[] )

01 {

02 boolean t = variable[0];

03 variable[0] = true;

04 return t;

05 }

…..

56 while (testAndSet(lock)) { /* do nothing */ }

57 // Critical Section

58 Lock[0] = false;

59

// Remainder Section


method testAndSet haruslah bersifat atomic , sehingga method ini dianggap sebagai satu instruksi mesin. Perhatikan pada baris 56 dimana method ini dipakai. Pada baris ini proses berusaha untuk mengubah nilai dari variable reference lock. Jikalau ia tidak berhasil maka akan terus mencoba, tapi jika berhasil maka proses akan masuk ke bagian kritis dan setelah ini proses akan mengubah nilai dari lock sehingga memberikan kemungkinan proses lain untuk masuk.

Janganlah bingung dengan lock, boolean [], yang terkesan aneh. Hal ini bukanlah bagian dari sinkronisasi tetapi hanyalah suatu bagian dari konsep pass-by-reference dan pass-by-value dari Javatm, untuk lebih lanjut mengenai konsep ini dapat dibaca buku – buku programming javatm. Satu catatan di sini adalah, contoh ini hanyalah sebuah ilustrasi dan tidak dapat dicompile dan dijalankan, karena Javatm konsep atomic instruction di Javatm bersifat transparan dari sisi programmer (akan dijelaskan pada bagian-bagian selanjutnya).

Keunggulan dari memory synchronous adalah pada lingkungan multiprocessor, semua processor akan terkena dampak ini. Jadi semua proses yang berada di processor, yang ingin mengakses critical section, meskipun berada di processor yang berbeda – beda, akan berusaha untuk mengubah nilai yang dimaksud. Sehingga semua processor akan tersinkronisasi.


Semaphore

Semaphore adalah 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.

● Operasi down

Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked. Operasi Down adalah atomic, tak dapat diinterupsi sebelaum diselesaikan.Emnurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore sampai operasi selesai atau diblocked.

● Operasi up

Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya semaphore mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion mempunyai bagan sebagai berikut:

Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehingga menjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-nya berhasil.


Masalah Masalah Klasik Dalam Sinkronisasi

Problem Klasik pada Sinkronisasi Ada tiga hal yang selalu menjadi masalah pada proses sinkronisasi:

Problem Bounded buffer

Problem Reades and Writer

Problem Dining Philosophers


Problem Bounded buffer

Bounded buffer merupakan suatu struktur data yang mampu untuk menyimpan beberapa nilai dan mengeluarkannya kembali ketika diperlukan . Jika dianalogikan bounded buffer ini akan mirip dengan sebuah tumpukan piring. Kita menaruh piring dan menaruh lagi sebuah piring, ketika ingin mengambil piring maka tumpukan yang paling atas yang akan terambil.Jadi piring terakhir yang dimasukan akan pertama kali diambil.

Solusi Bounded – Buffer : Solusi Shared Memory untuk Bounded – Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu waktu tertentu.

Problem Reades and Writer

Problem lain yang terkenal adalah readers-writer problem yang memodelkan proses yang mengakses database. Sebagai contoh sebuah sistem pemesanan sebuah perusahaan penerbangan, dimana banyak proses berkompetisi berharap untuk membaca (read) dan menulis (write). Hal ini dapat diterima bahwa banyak proses membaca database pada saat yang sama, tetapi jika suatu proses sedang menulis database, tidak boleh ada proses lain yang mengakses database tersebut, termasuk membaca database tersebut.

Solusi Readers and Writers Problem,Pembaca di prioritaskan

Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang sedang menunggu. Dengan katalain, Jika ada reader yang datang ketika reader lain sedang membaca dan sebuah writer sedang menunggu, maka reader yang baru datang tersebut akan langsung mendapat giliran untuk membaca.Writer akan ditunda pengerjaannya.

Penulis di prioritaskan,Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk membaca data.,Kedua jenis proses mempunyai prioritas yang sama. Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses.


Problem Dining Philosophers

Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang beliau sebut dengan dining philisophers problem. Dining philosophers dapat diuraikan sebagai berikut: Lima orang filosuf duduk mengelilingi sebuah meja bundar. Masing-masing filosof mempunyai sepiring spageti. Spageti-spageti tersebut sangat licin dan membutuhkan dua garpu untuk memakannya. Diantara sepiring spageti terdapat satu garpu. Kehidupan para filosof terdiri dari dua periode, yaitu makan atau berpikir. Ketika seorang filosof lapar, dia berusaha untuk mendapatkan garpu kiri dan garpu kanan sekaligus. Jika sukses dalam mengambil dua garpu, filosof tersebut makan untuk sementara waktu, kemudian meletakkan kedua garpu dan melanjutkan berpikir. Pertanyaan kuncinya adalah, dapatkah anda menulis program untuk masing-masing filosof yang melakukan apa yang harus mereka lakukan dan tidak pernah mengalami kebuntuan. Prosedur take-fork menunggu sampai garpu-garpu yang sesuai didapatkan dan kemudian menggunakannya. Sayangnya dari solusi ini ternyata salah. Seharusnya lima orang filosof mengambil garpu kirinya secara bersamaan. Tidak akan mungkin mereka mengambil garpu kanan mereka, dan akan terjadi deadlock.


2.2 Deadlock

Deadlock secara harfiah adalah kebuntuan, Di dalam sistem operasi berarti suatu kondisi di mana sekumpulan proses tidak dapat berjalan kembali atau tidak adanya komunikasi antar proses. Definisi lainnya yaitu sekumpulan proses yang terblok yang tiap proses tersebut memegang sumber daya dan menunggu untuk mendapatkan sumber daya yang dipegang oleh proses di dalam kumpulan tersebut.

.

Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang akan digunakan oleh proses-proses. Tiap proses berkompetisi untuk memperebutkan sumber daya yang ada. Jadideadlock berhubungan erat dengan tersedianya sumber daya dari

komputer.


Karakteristik Deadlock


Menurut Coffman(1971) ada empat kondisi yang dapat menyebabkan terjadinya deadloock. Keempat kondisi tersebut tidak dapat berdiri sendiri, saling mendukung.


Mutual Eksklusif: hanya ada satu proses yang bisa menggunakan sumber daya tersebut. Jika ada proses lain yang meminta sumber daya tersebut, maka proses itu harus menunggu sampai sumber daya dilepaskan.

Memegang dan Menunggu: proses yang meminta sumber daya sudah memegang sumber daya lainnya(meminta sumber daya tambahan).

Tidak ada Preemption: sumber daya yang sudah dialokasikan untuk sebuah proses tidak bisa diminta oleh proses lain. Sumber daya hanya bisa dilepaskan secara sukarela atau setelah proses tersebut selesai menggunakannya.

Circular Wait(menunggu berputar): kondisi seperti rantai yaitu saling menunggu smber daya yang dipakai oleh proses yang menunggu sumber daya tersebut.


Metode untuk Menangani Deadlock


Pada prinsipnya kita dapat menangani deadlock dengan beberapa cara:

Menggunakan protokol untuk pencegahan atau penghindaran deadlock, memastikan bahwa sistem tidak akan memasuki kondisi deadlock.

Kita bisa mendeteksi terjadinya deadlock lalu memperbaiki.

Kita juga bisa mengabaikan deadlock, hal ini dilakukan pada sistem operasi berbasis UNIX.


Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance system karena sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.


Pencegahan Deadlock


Pencegahannya sebagai berikut:

Masalah Mutual Eksklusif, Kondisi ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuk satu proses,maka hal ini harus didukung oleh kemampuan sistem operasi. Jadi diusahakan agar tidak menggunakan kondisi spesial tersebut sehingga sedapat mungkin deadlock dapat dihindari.


Masalah Kondisi Menunggu dan Memegang Penanggulangan deadlock, dari kondisi ini lebih baik dan menjanjikan, asalkan kita dapat memegang sumber daya untuk menunggu sumber daya lain, kita dapat mencegah deadlock. Caranya ialah dengan meminta semua sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidak mengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat menggunakan algoritma bankir. Sistem operasi atau sebuah protokol mengatur hal ini. Hasil yang dapat terjadi adalah sumber daya lebih harus dispesifikasikan dan kelaparan sumber daya, atau proses yang membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapatkan sumber daya yang ia butuhkan.


Masalah tidak preemption, Hal ketiga ialah jangan sampai ada preemption pada sumberv daya yang telah dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan protocol. Jadi jika sebuah proses meminta sumber daya yang tidak dapat ia penuhi saat itu juga, maka proses mengalami preempted. Dengan kata lain ada sumber daya dilepaskan dan diberikan ke proses yang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi. Cara lain yaitu dengan mengecek apakah sumber daya yang dicari proses tersedia atau tidak. Jika ada maka langsung dialokasikan tetapi jika tidak maka kita cek apakah ada proses lain yang sedang menunggu sumber daya juga. Jika ya maka kita ambil sumber daya dari proses yang sedang menunggu tersebut dan memberikan kepada proses yang meminta sumber daya tersebut. Jika tidak tersedia juga maka proses tersebut harus menunggu. Dalam menunggu beberapa dari sumber dayanya dapat saja dipreempted jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam memory atau register.


Masalah lingkaran tunggu, Masalah ini dapat ditangani oleh sebuah protocol yang menjaga agar sebuah proses tidak membuat lingkaran sikus yang dapat mengakibatkan deadlock dengan cara memberikan penomoran kepada sumber daya, dan bila suatu proses meminta sumber daya lagi maka ia hanya dapat meminta sumber daya yang nomornya lebih tinggi dari yang ia minta sebelumnya.


Penghindaran Deadlock


Algoritma Bankir Menurut Djikstra(1965) algoritma penjadwalan dapat menghindari deadlock dan algoritma penjadwalan tersebut dikenal dengan algoritma bankir. Algoritma ini dapat digambarkan, ada seorang bankir yang akan meminjamkan kepada peminjam-peminjamnya. Setiap peminjam memberikan batas pinjaman maksimum. Tentu saja bankir tahu bahwa peminjam tidak akan meminjam dana maksimum secara langsung melainkan bertahap. Bankir memprioritaskan kepada peminjam yang meminjam dana lebih banyak, sedangkan yang lain disuruh menunggu hingga peminjam yang lebih besar mengembalikan dananya, baru setelah itu ia meminjamkan kepada peminjam yang lain. Jadi algoritma bankir disini mempertimbangkan apakah permintaan proses sesuai dengan jumlah sumber daya yang ada dan sekaligus memperkirakan jumlah sumber daya yang mungkin diminta lagi. Jangan sampai ketika ada proses yang meminta sumber daya tetapi sumber dayanya habis atau tidak ada lagi jika tidak maka akan terjadi deadlock.

Secara umum algoritma bankir dibagi menjadi 4 struktur data:


Tersedia: jumlah sumber daya yang tersedia

Alokasi: jumlah sumber daya yang dialokasikan untuk setiap proses

Maksimum: jumlah permintaan sumber daya oleh proses

Kebutuhan: maksimum-alokasi(sisa sumber daya yang dibutuhkan oleh proses setelah dikurangi dengan yang dialokasikan)

Pemulihan Deadlock


Terminasi Proses

Abort semua proses yang deadlock Metode ini akan mematahkan deadlock cycle, tetapi bisa saja proses-proses yang deadlock telah dikomputasi dalam waktu yang lama dan hasil-hasil komputasi parsial harus dibuang, sehingga ada kemungkinan harus dikomputasi ulang. Abort satu proses pada satu waktu sampai deadlock tereliminir. Metode ini sangat mungkin mendatangkan overhead, setelah setiap proses di-abort, algoritma pendeteksian deadlock harus diminta kembali untuk menentukan apakah masih ada proses-proses yang deadlock. Jika terminasi parsial digunakan, kita harus menentukan proses-proses deadlock yang mana yang harus diterminasi. Penentuan ini pada dasarnya berkaitan dengan ekonomi. Kita harus abort proses-proses yang terminasinya minimum cost. Sayangnya, minimum cost tidak ditentukan satu hal. Banyak faktor yang mempengaruhi pemilihan proses, mencakup:

Apa prioritas dari proses

Berapa lama proses telah mengkomputasi dan berapa lama lagi proses akan mengkomputasi sebelum menyelesaikan tugasnya

Berapa banyak dan apa tipe dari sumber daya yang digunakan oleh proses

Berapa sumber daya lagi yang dibutuhkan proses supaya selesai

Berapa banyak proses yang perlu diterminasi Apakah proses interactive atau batch

Preempt Sumber Daya

Mengeliminasi deadlock menggunakan preempt sumber daya berarti kita berturut-turut preempt beberapa sumber daya dari suatu proses dan memberikan sumber daya ini ke proses lain sampai deadlock cycle patah.

Pada preempt sumber daya terdapat :

Memilih korban


Seperti pada terminasi proses, kita harus menentukan sumber daya dan proses mana yang akan dipreempt dengan minimum cost. Faktor cost mencakup parameter-parameter seperti jumlah dari sumber daya yang ditahan proses-proses yang deadlock dan jumlah waktu dari proses yang telah digunakan selama eksekusinya.


Rollback


Jika kita preempt sebuah sumber daya dari sebuah proses, proses tidak dapat berlanjut dengan eksekusi normal karena proses kehilangan beberapa sumber daya yang diperlukan. Kita harus rollback proses ke beberapa safe state dan restart dari state tersebut. Secara umum, sulit untuk menentukan safe state. Solusi termudah adalah dengan total rollback, abort proses, dan restart.


Starvation


Dalam sebuah sistem di mana pemilihan korban berdasar primer pada faktor cost, dapat terjadi suatu proses tidak pernah menyelesaikan tugasnya karena suatu sumber daya selalu di-preempt pada prose yang sama. Kita harus memastikan bahwa sebuah proses dapat dipilih sebagai korban hanya dengan batasan waktu tertentu. Solusi pada umumnya adalah dengan menambahkan jumlah rollback ke dalam faktor cost.


1

Bab 3

Penutup


3.1 Kesimpulan

Sinkronisasi adalah akses bebarengan untuk berbagi dua bersama dapat mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses kerjasama.

Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan baik dan sesuai apa yang di harapkan.

Deadlock adalah keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya. Analoginya seperti pada kondisi jalan raya dimana terjadi kemacetan parah. Deadlock adalah efek samping dari sinkronisasi, dimana satu variabel digunakan oleh 2 proses. Sinkronisasi dan Deadlock dapat ditanggulangi dengan cara cara tertentu dan dapat dicegah dalam proses proses tertentu.


3.2 Saran

Terima kasih sudah membaca makalah yang sudah kami buat, mohon maaf atas kesalahan dan kekurangan makalah kami. Kami membutuhkan kriktik dan saran agar makalah yang kami akan buat nanti bisa lebih baik lagi.


Sumber

http://arifmauu.blogspot.co.id/2016/11/sinkronisasi-deadlock-pada-sistem.html.

http://www.erllang.ga/teknik-informatika/makalah-sinkronisasi-data-dan-deadlock.html

https://aanazar.wordpress.com/2012/12/26/makalah-sinkronisasi-dan-deadlock/

https://ferliadi410.wordpress.com/2020/10/28/sinkronisasi-proses-yang-ada-pada-sistem-operasi/

http://opensource.telkomspeedy.


Alamat Blog Dosen : https://syaifulahdan.wordpress.com

Alamat web Program studi, Fakultas, Universitas : http://if.ftik.teknokrat.ac.id, http://ftik.teknokrat.ac.id, www.teknokrat.ac.id

Nama Mahasiswa :Armelia Luvita Sari

Sabtu, 13 Maret 2021

PROGRAM ARRAY 1 DIMENSI

 INPUT




OUTPUT



Rabu, 03 Maret 2021

PROGRAM SWITCH CASE MENGHITUNG GAJI KARYAWAN DAN MENGHITUNG NILAI

 Contoh Program Switch case Gaji Karyawan dan Menghitung nilai

 Contoh Program :








Contoh Output :


 
Copyright © 2014 Armelia Luvita. Designed by OddThemes