Makalah Sinkronisasi Proses yang ada pada sistem operasi

Makalah Sinkronisasi Proses yang ada pada sistem operasi








Mata Kuliah Sistem Operasi 

Universitas Teknokrat Indonesia 

T.A 2020







"Proses Sinkronisasi Pada Sistem Operasi"




Pengertian Sinkronisasi Sistem Operasi - Id Jurnal





Konsep Interaksi

Dalam menjalankan fungsinya dalam sistem operasi, dibutuhkan interaksi antara beberapa

proses yang berbeda. Interaksi tersebut bertujuan agar terjadi kesinambungan antar proses

yang terjadi sehingga sistem operasi dapat berjalan sebagaimana mestinya. Interaksi tersebut

dapat melalui sistem berbagi memori atau dengan cara saling berkirim pesan. Terkadang,

beberapa pesan yang dikirim tidak dapat diterima seluruhnya oleh penerima dan menyebabkan

informasi yang lain menjadi tidak valid, maka dibutuhkanlah sebuah mekanisme sinkronasi

yang akan mengatur penerimaan dan pengiriman pesan sehingga kesalahan penerimaan pesan

dapat diperkecil. Pesan yang dikirim dapat ditampung dalam penyangga sebelum diterima

oleh penerima.

Interaksi antar proses dapat juga terjadi antara proses yang memiliki sistem berbeda.

Dalam interaksi tersebut dikenal sebutan client dan server yang memungkinkan sistem

yang berbeda untuk berinteraksi dengan menggunakan socket. Dalam interaksi tersebut

dikenal juga RPC (Remote Procedure Call) yaitu metode yang memungkinkan sebuah sistem

mengakses prosedur sistem lain dalam komputer berbeda. Dalam interaksi antar proses, terkadang

suatu proses saling menunggu proses yang lain sebelum melanjutkan prosesnya, sehingga

proses-proses tersebut saling menunggu tanpa akhir, hal ini disebut deadlock. Jika deadlock

terjadi dalam waktu lama, maka terjadilah starvation, yaitu suatu proses tidak mendapatkan

resource yang dibutuhkan.


Sinkronisasi

Suatu proses yang bekerja bersama-sama dan saling berbagi data dapat mengakibatkan

race condition atau pengaksesan data secara bersama-sama. Critical section adalah suatu

segmen kode dari proses-proses itu yang yang memungkinkan terjadinya race condition.

Untuk mengatasi masalah critical section ini, suatu data yang sedang diproses tidak boleh

diganggu proses lain.

Solusi prasyarat critical section:

  • Mutual Exclusion.
  • Terjadi kemajuan (progress).
  • Ada batas waktu tunggu (bounded waiting).

Critical section dalam kernel:

  • Interupsi.
  • Page Fault .
  • Kernel code memanggil fungsi penjadwalan sendiri.

Solusi Critical Section

Solusi critical section harus memenuhi ketiga syarat berikut:

  • Mutual Exclusion
  • Progress
  • Bounded Waiting

Algoritma I dan II terbukti tidak dapat memecahkan masalah critical section untuk dua

proses karena tidak memenuhi syarat progress dan bounded waiting. Algoritma yang dapat

menyelesaikan masalah critical section pada dua proses adalah Algoritma III. Sedangkan

untuk masalah critical section pada n-buah proses dapat diselesaikan dengan menggunakan

Algoritma Tukang Roti


Perangkat Sinkronisasi

v  Instruksi TestAndSet(). instruksi atomik yang dapat digunakan untuk menangani masalahcritical 

 section.

v  Semafor. sebuah variabel yang hanya dapat diakses oleh dua buah operasi standar yaituincrement 

dan decrement. Dua buah jenis semafor, yaitu Binary Semaphore dan Counting Semaphore.

 Semafor berfungsi untuk menangani masalah critical section, mengatur alokasiresource, dan

 sinkronisasi antarproses.

v  Monitor. digunakan untuk menangani masalah yang muncul karena pemakaian semafor. 

Monitor menjamin mutual exclusion. Untuk menangani masalah sinkronisasi yang lebih 

rumit monitor menyediakan condition variable.

v  JVM. mengimplementasikan monitor. Monitor JVM bekerja dengan object locking

 danmethod-method wait() serta notify(). Monitor JVM dapat digunakan dengan 

menggunakan keyword synchronized.


Transaksi Atomik

Transaksi merupakan sekumpulan instruksi atau operasi yang menjalankan sebuah fungsi logis 

dan memiliki sifat atomicity, consistency, isolation, dan durability. Sifat atomicity pada transaksi 

menyebabkan transaksi tersebut akan dijalankan secara keseluruhan atau tidak sama sekali. 

Operasi-operasi pada transaksi atomik disimpan dalam log agar dapat dilakukan rolled-back jika 

terjadi kegagalan sistem. Dengan memanfaatkan log, pemulihan data dapat dilakukan dengan 

melakukan undo atau redo. Untuk menghemat waktu pada saat rolled-back, kita dapat memberikan

 operasi checkpoint pada transaksi sehingga kita tidak perlu memeriksa keseluruhan transaksi untuk

 memutuskan melakukan undo/redo.


Serialisasi diperlukan ketika beberapa transaksi atomik dijalankan secara bersamaan. Hal ini 

dimaksudkan agar sifat konsistensi hasil eksekusi transaksi dapat terpenuhi. Ada dua cara untuk 

menjaga agar penjadwalan bersifat serializable, yaitu protokol penguncian dan protokol berbasis 

waktu. Pada protokol penguncian, setiap data yang akan diakses harus dikunci oleh transaksi yang 

akan memakainya agar transaksi lain tidak bisa mengakses data yang sama. Sedangkan, pada protokol 

berbasis waktu, setiap transaksi diberikan suatu timestamp yang unik, sehingga dapat diketahui 

apakah transaksi tersebut sudah dijalankan atau belum. Protokol berbasis waktu dapat mengatasi 

masalah deadlock, sedangkan protokol penguncian tidak.


Sinkronisasi Linux

ada suatu saat dalam sebuah kernel, tidak terkecuali kernel LINUX, dapat terjadi concurrent access. 

Dalam hal ini diperlukan proteksi dalam kernel yang bersangkutan. Proteksi dapat dilakukan dengan 

sinkronisasi. Sebuah proses memiliki bagian dimana bagian ini akan melakukan akses dan manipulasi

data. Bagian ini disebut dengan critical section. Ketika sebuah proses sedang dijalankan dalam 

 critical section nya, tidak ada proses lain yang boleh dijalankan dalam critical section nya. Ada dua 

jenis concurrency yaitu pseudo-concurrency dan true-concurrency. Ada beberapa penyebab 

konkurensi kernel, diantaranya interrupt, softirqs dan tasklets, kernel preemption,sleeping dan 

synchronization with user-space, dan symmetrical multiprocessing. Salah satu metode dalam kernel 

LINUX untuk sinkronisasi adalah atomic operations. Integer atomik adalah salah satu jenis dari 

atomic operations. Integer Atomik menyediakan instruksi yang dijalankan secara atomik (tanpa 

interrupt). Locking yang paling umum digunakan dalam LINUX adalah spin lock. Spin lock adalah 

lock yang hanya dapat dilakukan oleh satu thread. Ketika sebuah thread yang akan dijalankan 

meminta spin lock yang sedang digunakan, maka thread ini akan loops menunggu sampai spin lock 

tersebut selesai digunakan oleh thread yang sedang berjalan. Semafor dalam LINUX adalah sleeping 

locks. Ketika sebuah thread meminta semafor yang sedang digunakan, maka semafor akan meletakkan

thread tersebut dalam wait queue dan menyebabkan thread tersebut masuk status sleep. Symmetrical 

multiprocessing (SMP) mendukung adanya pengeksekusian secara paralel dua atau lebih thread oleh 

dua atau lebih processor. Kernel LINUX 2.0 adalah kernel LINUX pertama yang memperkenalkan 

konsep SMP.


Deadlocks

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

Starvation adalah keadaan dimana satu atau beberapa proses ‘kelaparan’ karena terus dan terus

menunggu kebutuhan sumber dayanya dipenuhi. Namun, karena sumber daya tersebut tidak tersedia 

atau dialokasikan untuk proses lain, akhirnya proses yang membutuhkan tidak bisa memilikinya. 

Kondisi seperti ini merupakan akibat dari keadaan menunggu yang berkepanjangan.


Karakteristik terjadinya deadlock:

  • Mutual Exclusion .
  • Hold and Wait .
  • No Preemption .
  • Circular 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.

 

Diagram Graf

Deadlock adalah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi

 antar proses di dalam sistem operasi. deadlock disebabkan karena proses yang satu menunggu 

sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang 

dipegang oleh proses tersebut. Untuk mendeteksi deadlock dan menyelesaikannya dapat digunakan 

graf sebagai visualisasinya. Jika dalam graf terlihat adanya perputaran, maka proses tersebut memiliki 

potensi terjadideadlock. Namun, jika dalam graf tidak terlihat adanya perputaran, maka proses 

tersebut tidak akan terjadi deadlock. Implementasi graf dalam sistem operasi, yaitu penggunaannya 

untuk penanganan deadlock pada sistem operasi. Diantaranya adalah graf alokasi sumber daya dan 

graf tunggu.Graf alokasi sumber daya dan graf tunggu merupakan graf sederhana dan graf berarah. 

Dua graf tersebut adalah bentuk visualisasi dalam mendeteksi masalah deadlock pada sistem operasi.

Untuk mengetahui ada atau tidaknya deadlock dalam suatu graf alokasi sumber daya dapat dilihat 

dari perputaran dan sumber daya yang dimilikinya. Jika tidak ada perputaran berarti tidak deadlock. 

Jika ada perputaran, ada potensi terjadi deadlock. Sumber daya dengan instans tunggal dan perputaran 

pasti akan mengakibatkan deadlock. Pada graf tunggu, deadlock terjadi jika dan hanya jika pada graf 

tersebut ada perputaran. Untuk mendeteksi adanya perputaran diperlukan operasi sebanyak n 2, 

dimana n adalah jumlah simpul dalam graf alokasi sumber daya.


Bounded-Buffer

Proses yang kooperatif bisa berbagi data melalui penukaran pesan. Pesan-pesan yang dikirim antar 

proses akan disimpan dalam sebuah antrian sementara, yaitu buffer. Jika kapasitas buffertersebut 

terbatas, maka dia disebut bounded-buffer. Untuk mencegah inkonsistensi data yang terjadi akibat 

akses data oleh proses kooperatif yang berjalan secara konkuren, maka diperlukan sinkronisasi antar 

proses-proses tersebut.

Permasalahan bounded-buffer ini diilustrasikan dalam proses produsen-konsumen. Masalah-masalah 

yang timbul adalah

  • buffer yang merupakan critical section
  • sehingga hanya boleh diakses satu proses pada satu waktu;
  • keadaan dimana produsen ingin menaruh data di antrian, namun antrian penuh
  • keadaan dimana konsumen ingin mengambil data dari antrian namun antrian kosong.

Untuk menyelesaikan masalah, digunakanlah perangkat sinkronisasi semafor. Semafor yang 

digunakan adalah

  • mutex. yang menjaga buffer hanya diakses satu proses pada satu waktu;
  • tempat_kosong. jumlah tempat kosong.
  • tempat_terisi. jumlah tempat terisi

Dengan demikian produsen yang ingin menaruh data atau konsumen yang ingin mengakses data 

harus memeriksa apakah proses lain sedang memakai buffer (menggunakan mutex) dan memeriksa 

 apakah buffer penuh atau kosong (menggunakan tempat_kosong dan tempat_terisi).


Readers/Writers

Readers/Writers merupakan sebuah masalah klasik dalam contoh sinkronisasi untuk menjaga validitas

 data. Jika reader sedang mengakses data, reader-reader yang lain boleh ikut mengakses data, tapi 

writer harus menunggu sampai data tidak diakses siapapun. Jika writer sedang mengakses data, tidak 

boleh ada thread lain yang mengakses data. Semaphore digunakan untuk sinkronisasi antar thread 

(baik readers maupun writers).


Sinkronisasi Dengan Semafor

Program Hompimpah merupakan ilustrasi dimana sebuah thread memegang kendali sinkronisasi 

thread lainnya. Seperti yang dijelaskan dalam program masing-masing dari pemain saling 

mengendalikan satu sama lain, dengan menggunakan alat sinkronisasi yang bernama semafor. 

Semafor dalam program adalah semafor buatan berupa class Semafor yang dibuat dalam bahasa Java.

Adapun di dalamnya terdapat 2 fungsi yaitu fungsi buka() dan fungsikunci() dengan fungsi-fungsi 

inilah masing-masing thread dapat mengendalikan satu sama lain.

Reference : https://sites.google.com/a/student.unsika.ac.id/karaos/pengertian-os/

proses-sinkronisasi-pada-sistem-operasi

 

Komentar

Postingan populer dari blog ini

Sejarah Perkembangan Random Access Memory (RAM)