Tugas 1 Sistem Operasi (Teori) - Sinkronisasi Proses

                                         MAKALAH SISTEM OPERASI SINKRONISASI PROSES

 

Nama : Irham Iswanda Duhair

NPM : 19316018

Kelas : TK 19 C

 


KATA PENGANTAR

 

Puji syukur kehadirat Tuhan Yang Maha Esa yang telah memberikan rahmat dan hidayah-Nya. Dengan rahmat dan hidayah-Nya, Puji syukur Makalah yang berjudul “SINKRONISASI” ini dapat terselesaikan dangan tepat waktu. Makalah ini kami buat untuk memenuhi tugas dari mata kuliah Sistem Operasi.

Terima kasih juga kepada Bapak dosen Pembimbing Sistem Operasi yang telah memberi kami arahan untuk menyelesaikan tugas pembuatan makalah ini.

Kami berharap kepada semua pihak dengan segala kritik dan saran yang bersifat membangun, sangat kami harapkan untuk dimasa yang akan datang agar bisa menyempurnakan makalah ini, sebab makalah ini masih banyak kekurangannya.

 

                                                                      

BAB I PENDAHULUAN

 

1.1.             Latar Belakang

Sinkornisasi di perlukan untuk menghindari terjadinya ketidak konsistenan data akibat adanya akses secara konkuren. Proses-Proses tersebut disebut konkuren jika proses itu ada dan berjalan pada waktu yang bersamaan. Istilah Sinkronisasi sering terdengar ketika kita menggunakan alat elektronik. Sinkronisasi sendiri berasal dari bagian sistem operasi.

Sistem operasi adalah perangkat lunak sistem yang bertugas untuk melakukan kontrol dan manajemen perangkat keras serta operasi-operasi dasar sistem, termasuk menjalankan perangkat lunak aplikasi seperti program-program pengolah kata dan peramban web.

Jadi, agar sinkronisasi bisa berjalan, sangat di butuhkan yang namanya sistem operasi.Dalam kehidupan sehari-hari tanpa di sadari, kita sering melakukan sinkronisasi dalam berbagai hal.Mulai pada saat menggunakan smartphone, komputer dan lain sebagainya.

 

1.2.            Rumusan Masalah

1.      Apa pengertian dari Sinkronisasi ?

2.      Apa Tujuan Sinkronisasi ?

3.      Apa saja masalah Sinkronisasi dan solusinya ?

 

1.3.            Tujuan

1. Mengetahui apa itu Sinkronisasi.

2. Mengetahui tujuan Sinkronisasi.

3. Mengetahui Masalah dalam Sinkronisasi dan solusinya.

 

 

 

 

BAB II PEMBAHASAN

 

2.1.             Pengertian Sinkronisasi

    Sinkronisasi merupakan suatu proses pengaturan jalannya beberapa proses pada waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi inconsitensi (ketidak konsistenan) data akibat adanya akses data secara konkuren agar hasilnya bagus dan sesuai dengan apa yang diharapkan. Disini sinkronisasi diperlukan agar data tersebut tetap konsisten.



         Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklah sederhana. Dimisalkan kita memodifikasi producer-consumer code dengan menambahkan suatu variable counter, dimulai dari 0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada buffer. Sinkronisasi merupakan “issue” penting dalam rancangan/implementasi OS (shared resources, data, dan multitasking).

 

2.2.            Tujuan Sinkronisasi


    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.

 

2.3.            Masalah Dalam Sinkronisasi Beserta Solusinya


1.      Race Condition

Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk mencegah race condition, proses-proses yang berjalan besamaan harus di disinkronisasi.

Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.

 

2.      Critical Section

Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.

Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kritis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.

Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:

·         Tidak ada dua proses secara bersamaan masuk ke dalam citical section.

·         Tidak ada asumsi mengenai kecepatan atau jumlah cpu.

·         Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.

·         Tidak ada proses yang menunggu selamamya untuk masuk critical section.

Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari :

1)      Entry Section: kode yang digunakan untuk masuk ke dalam critical section.

2)      Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu.

3)      Exit Section: akhir dari critical section, mengizinkan proses lain.

4)      Remainder Section: kode istirahat setelah masuk ke critical section.


3.      Solusi ke Masalah Critical-Section

Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu:

·         Mutual exclution

Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka.

·         Progress

Jika tidak ada proses yang sedang dieksekusi dalam critical section  dan ada beberapa proses yang ingin masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya tidak bias ditunda.

·         Bounded Waiting

Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya proses yang meminta masuk ke critical section dan sebelum  permintaan itu diterima.

·         Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed.

·         Tidak ada asumsi mengenai kecepatan relative dan n proses.

Cara-cara memecahkan masalah, yaitu :

·         Hanya dua proses, Po dan P1

·         Struktur umum dari proses adalah Pi (proses lain Pj)

 

4.      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.

 

5.      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

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.

·         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.

 

6.      Bakery Algorithm

Critical section untuk n proses :

·       Sebelum memasuki critical Section-nya, proses menerima nomor pemilik nomor terkecil memasuki critical section.

·                Jika proses Pi dan Pj menerima nomor yang sama, jika i < j, maka Pi dilayani duluan, lainnya Pj dilayani duluan (if i< j, then Pi is served first; else Pj is served first).

·      Skema penomoran selalu menghasilkan angka –angka yang disebutkan satu per satu, yaitu 1,2,3,3,3,3,4,5….

 

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

 

a)      Operasi Down

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

 

b)      Operasi Up

Operasi Up menaikkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tidak 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 penyelesaian mutual exclusion mempunyai bagian 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.

 

8.      Problem Klasik pada Sinkronisasi

Ada tiga hal yang selalu menjadi masalah pada proses sinkronisasi:

·         Problem Bounded buffer.

            

            Hal yang harus diperhatikan pada proses produsen dan konsumen adalah ketika kedua proses tersebut mengakses variabel yang sama, yaitu variabel hitung. Jika diakses secara bersamaan, maka ada kemungkinan variabel hitung akan memiliki nilai yang tidak benar. Oleh karena itu harus ada sinkronisasi bagi produsen dan konsumen dalam mengakses variabel hitung.
Kita memakai 3 buah semafor untuk mensinkronisasi proses produsen dan konsumen. Semafor yang pertama adalah semafor bufferPenuh, yang menyatakan jumlah buffer yang terisi. Semafor yang kedua adalah semafor bufferKosong, yang menyatakan jumlah buffer yang masih kosong. Sedangkan semafor terakhir yang kita pakai adalah semafor mutex (mutual exclussion). Semafor mutex dipakai untuk menjamin bahwa hanya ada satu proses pada satu waktu yang dapat mengakses buffer. 
Untuk buffer berukuran n, kita inisialisasi semafor bufferPenuh = 0, semafor bufferKosong = n (ukuran buffer)dan semafor mutex = 1.
Produsen menaruh item pada buffer dengan memanggil method taruh ( ), konsumen memindahkan item dari buffer dengan memanggil method ambil ( ).


·         Problem Readers and Writers.

           


Solusi Readers and Writers Problem untuk mengatasi masalah tersebut, ada tiga macam solusi, yaitu 1.       Solusi dengan pembaca diprioritaskan
2.       Solusi dengan penulis yang diprioritaskan
3.       Solusi dengan pembaca dan penulis saling bergantian
Dari ketiga solusi tersebut, saya akan membahas solusi yang ketiga, yaitu Solusi dengan pembaca dan penulis saling bergantian(sama-sama menjadi prioritas), karena saya rasa solusi tersebut yang paling baik.
Pada solusi ini diusahakan sebuah metode yang mengakomodasi kedua belah pihak. Cara untuk melakukan ini cukup mudah yaitu dengan menerapkan metode gilir-menggilir. Sebuah penulis dapat mengakses berkas jika tidak ada thread pembaca yang sedang mengakses. Setelah selesai, thread ini memberikan giliran ke thread pembaca. Sebuah pembaca dapat mengakses berkas yang ada jika tidak ada penulis yang menunggu atau bila pada saat itu adalah giliran pembaca. Pembaca pertama yang pertama selesai mengakses berkas kemudian mengganti giliran sekarang menjadi giliran penulis.
Dengan metode giliran ini, tidak ada thread yang tertunda tanpa batas. Karena setiap syarat dari penyelesaian critical section yang baik dipenuhi, maka cara seperti ini merupakan cara yang baik untuk menyelesaikan masalah konkurensi.


·         Problem Dining Philosophers.

        


Dining Philosopher adalah salah satu masalah klasik sinkronisasi. Dining Philosopher digambarkan dengan 5 orang filsuf yang duduk mengelilingi sebuah meja bundar. Masing-masing filsuf memiliki 1 piring dan diantara setiap piring terdapat 1 sumpit. Di tengah meja bundar tersebut, terdapat 1 mangkuk berisi spageti. Kehidupan para filsuf terdiri dari 2 periode, yaitu makan atau berpikir. Untuk makan, seorang filsuf harus mengambil 2 sumpit di sisi kiri dan kanan dari piring yang berada di depannya, kemudian mengambil spageti di tengah meja dan memakannya. Setelah selesai makan, filsuf tersebut akan meletakkan masing-masing sumpit di tempat ia mengambilnya dan akan mulai untuk berpikir.
Masalahnya, dapatkah kita membuat program untuk masing-masing filsuf yang akan melakukan apa yang harus mereka lakukan tanpa mengalami deadlock. Jika semua filsuf mengecek secara bersamaan apakah di sisi kirinya terdapat sumpit, dan jika ada ia akan mengambil sumpit tersebut, kemudian ia akan mengecek apakah di sisi kanannya terdapat sumpit, dan jika ada ia akan mengambil sumpit tersebut. Namun karena mereka melakukannya secara bersamaan, dapat dipastikan tidak ada filsuf yang akan mendapatkan sumpit di sisi kanannya.

Solusinya adalah dengan membuat 1 filsuf yang melakukan hal yang berbeda dari filsuf lainnya. Filsuf tersebut akan memulai mengecek sumpit yang terletak disisi kanannya terlebih dahulu, jika ada maka filsuf tersebut akan mengambil sumpit di sisi kanannya dan kemudian mengecek sisi kirinya. Dengan cara ini, maka tidak akan terjadi deadlock. Solusi lain yang dapat dilakukan adalah dengan mengeluarkan 1 filsuf dari meja tersebut, sehingga dalam 1 meja akan terdapat 5 sumpit dan 4 filsuf. Namun solusi ini masih memungkinkan untuk terjadinya starvation. Kondisi ini dapat terjadi jika program memungkinkan filsuf untuk makan berulang kali yang akan menyebabkan filsuf lain tidak dapat menggunakan sumpit.

9.      Monitors

Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tidak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.

Properti-properti monitor adalah sebagai berikut:

a.    Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dalam monitor dan tidak oleh prosedur di luar monitor.

b.    Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).

c.  Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.

d.  Wait : Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.

e.   Signal : Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.

f.       Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.

g.  Versi Brinch Hansen : Setelah melakukan signal, proses segera keluar dari monitor.Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.


 

BAB III 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 utama sinkronisasi adalah menghindari terjadinya inkonsistensi data karena pengaksesan oleh beberapa proses yang berbeda (mutualexclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock atau starvation.

Sinkronisasi umumnya dilakukan dengan bantuan perangkat sinkronisasi.Beberapa perangkat sinkronisasi, yaitu : TestAndSet(), Semafor, dan Monitor.

 

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.


 

DAFTAR PUSTAKA

 

https://www.gurupendidikan.co.id/pengertian-sinkronisasi-sistem-operasi-lengkap/
http://rahmadican.blogspot.com/2017/01/makalah-sitem-operasi-sinkronisasi.html
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/
http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c43.html
http://ariskuliah.blogspot.com/2017/12/makalah-sinkronisasi-data-dan-deadlock.html
http://fathikahelnd31.blogspot.com/2017/05/masalah-klasik-dalam-sinkronisasi.html

 


Komentar

Postingan populer dari blog ini

Extreme Programming (XP)

Review Artikel " Perancangan Teknik Kriptografi Block Cipher Berbasis Pola Permainan Tradisional Rangku Alu"