Rabu, 14 Maret 2018

Makalah sistem operasi

STRUKTUR SISTEM OPERASI

MAKALAH INI DIBUAT UNTUK MEMENUHI TUGAS YANG DIBERIKAN OLEH    DOSEN MATA KULIAH SISTEM OPERASI



DISUSUN OLEH :
ARIS FAHRUDIN (2016140046)

JURUSAN INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS PAMULANG
DAFTAR ISI


i.KATA PENGANTAR ................................................
ii. BAB I PENDAHULUAN ........................
iii.BAB II PEMBAHASAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
Sistem Program.................................................
2.Struktur Sistem Operasi......................................
a. Struktur Sederhana........................................
b. Mono Lithic System.......................................
c. Pendekatan Berlapis (Layered Approach)..........
d. Mesin Virtual................................................
e. Cliend System Model......................................
   iv. BAB IV PENUTUP...............................................
       iv.1.KESIMPULAN..............................................
iv.2.  DAFTAR PUSTAKA......................................






















KATA PENGANTAR 

Puji syukur kami panjatkan Kehadirat Tuhan Yang Maha Esa, karena kami dapat menyelesaikan Makalah ini. Penyusunan Makalah ini disusun untuk memenuhi tugas mata kuliah Sistem Operasi mengenai pembahasan Struktur Sistem Operasi. Selain itu tujuan dari penyusunan Makalah ini untuk membantu dalam memahami dan mewujudkan suatu bangsa betapa pentingnya Pendidikan, Makalah ini diharapkan dapat membantu sebagai salah satu sarana untuk memecahkan pemerataan pendidikan yang ada di Indonesia. Penulis juga mengucapkan terima kasih kepada Bpk Heri Haerudin. selaku Dosen Sistem Operasi yang telah membimbing agar dapat menyelesaikan makalah ini. Akhirnya penulis menyadari bahwa makalah ini sangat jauh darikesempurnaan. Oleh karena itu, dengan segala kerendahan hati, penulis menerimakritik dan saran agar penyusunan Makalah selanjutnya menjadi lebih baik. Untuk itu penulis mengucapkan terima kasih dan semoga makalah ini bermanfaat.


Tangerang Selatan, 9 Desember 2017


BAB I
PENDAHULUAN
ii.            Latar belakang
Sistem operasi merupakan sebuah penghubung antara pengguna dari komputer dengan perangkat keras komputer. Sebelum ada sistem operasi, orang hanya mengunakan komputer dengan menggunakan sinyal analog dan sinyal digital. Seiring dengan berkembangnya pengetahuan dan teknologi, pada saat ini terdapat berbagai sistem operasi dengan keunggulan masing-masing. Untuk lebih memahami sistem operasi maka sebaiknya perlu diketahui terlebih dahulu beberapa konsep dasar mengenai sistem operasi itu sendiri.
Pengertian sistem operasi secara umum ialah pengelola seluruh sumber-daya yang terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya sistem komputer.














BAB III.
Pembahasan
1. Sistem Program
Sistem program menyediakan lingkungan untuk pengembangan dan eksekusi program. Kebanyakan user melihat system operasi yang didefinisikan oleh system program dan bukan system call sebenarnya. System program adalah masalah yang relatif kompleks, namun dapat dibagi menjadi beberapa kategori, antara lain:

a. Manipulasi File. Meliputi: membuat, menghapus, mengcopy, rename, print, dump, list pada file dan direktori.
b. Status Informasi. Meliputi: tanggal, waktu (jam, menit, detik), penggunaan memori atau disk space, banyaknya user.
c. Modifikasi File. Ada beberapa editor yang sanggup digunakan sebagai sarana untuk menulis atau memodifikasi file yang tersimpan dalam disk atau tape.
d. Bahasa Pemrograman yang mendukung. Meliputi: Compiler, assambler, dan interpreter untuk beberapa bahasa pemrograman (seperti: Fortran, Cobol, Pascal, Basic, C, dan LISP).
e. Pemanggilan dan Eksekusi Program. Pada saat program dicompile, maka harus dipanggil ke memori untuk dieksekusi. Suatu sistem biasanya memiliki absolute loader, melokasikan loader, linkage editor, dan overlay loader. Juga dibutuhkan debugging sistem untuk bahasa tingkat tinggi.
f. Komunikasi. Sebagai mekanisme untuk membuat hubungan virtual antar proses, user, dan sistem komputer yang berbeda.
g. Program-program aplikasi. Sistem operasi harus menyokong program-program yang berguna untuk menyelesaikan permasalahan secara umum, atau membentuk operasi-operasi secara umum, seperti kompiler, pemformat teks, paket plot, sistem basis data, spreadsheet, paket analisis statistik, dan games.


2.
Struktur Sederhana

Banyak sistem operasi komersial yang tidak terstruktur dengan baik. Kemudian sistem operasi dimulai dari yang terkecil, sederhana dan terbatas lalu berkembang dengan ruang lingkup originalnya. Contoh dari sistem operasi ini adalah MS-DOS dan UNIX. MS-DOS merupakan sistem operasi yang menyediakan fungsional dalam ruang yang sedikit sehingga tidak dibagi menjadi beberapa modul, sedangkan UNIX menggunakan struktur monolitik dimana prosedur dapat saling dipanggil oleh prosedur lain di sistem bila diperlukan dan kernel berisi semua layanan yang disediakan sistem operasi untuk pengguna [Bambang2002]. Inisialisasi-nya terbatas pada fungsional perangkat keras yang terbagi menjadi dua bagian yaitu kernel dan sistem program. Kernel terbagi menjadi serangkaian interface dan device driver dan menyediakan sistem file, penjadwalan CPU, manajemen memori, dan fungsi-fungsi sistem operasi lainnya melalui system calls.


Gambar 1 Struktur Lapisan MS-DOS
Kelebihan Struktur Sederhana:
Layanan dapat dilakukan sangat cepat karena terdapat di satu ruang alamat. 
Kekurangan Struktur Sederhana:
Pengujian dan penghilangan kesalahan sulit karena tidak dapat dipisahkan dan dilokalisasi.
Sulit dalam menyediakan fasilitas pengamanan.
Merupakan pemborosan bila setiap komputer harus menjalankan kernel monolitik sangat besar sementara sebenarnya tidak memerlukan seluruh layanan yang disediakan kernel.
Tidak fleksibel.
Kesalahan pemograman satu bagian dari kernel menyebabkan matinya seluruh sistem.
 
Evolusi : 
Kebanyakan UNIX sampai saat ini berstruktur monolitik. Meskipun monolitik, yaitu seluruh komponen/subsistem sistem operasi terdapat di satu ruang alamat tetapi secara rancangan adalah berlapis. Rancangan adalah berlapis yaitu secara logik satu komponen/subsistem merupakan lapisan lebih bawah dibanding lainnya dan menyediakan layanan-layanan untuk lapisan-lapisan lebih atas. Komponen-komponen tersebut kemudia dikompilasi dan dikaitkan (di-link) menjadi satu ruang alamat. Untuk mempermudah dalam pengembangan terutama pengujian dan fleksibilitas, kebanyakan UNIX saat ini menggunakan konsep kernel loadable modules,yaitu:
Bagian-bagian kernel terpenting berada di memori utama secara tetap.
Bagian-bagian esensi lain berupa modul yang dapat ditambahkan ke kernel saat diperlukan dan dicabut begitu tidak digunakan lagi di waktu jalan (run time).
Contoh : UNIX berstruktur monolitik, MS-DOS



Pengertian Sistem Monolitik
Sistem Monolitik ini merupakan sistem yang paling umum di dalam struktur sistem operasi. Pendekatan sistem monolitik ini biasa juga disebut dengan “The Big Mess“. Sistem ini pada dasarnya tidak memiliki struktur. Sistem operasi ditulis sebagai sekumpulan prosedur, yang mana dapat dipanggil oleh yang lain pada saat prosedur itu diperlukan. Pada saat teknik ini digunakan, tiap prosedur dalam sistem mempunyai penjelasan tersendiri dari tiap parameter dan hasil yang ada. Masing-masing dapat secara bebas memanggil satu sama lain, apabila terdapat beberapa komputasi yang berguna dari kebutuhan yang sebelumnya,
Di dalam Sistem Monolitik, terdapat struktur yang kecil, yaitu Systemcalls. Systemcalls ini disediakan oleh sistem operasi yang mana permintaannya disediakan dengan meletakan parameter-parameter yang tersedia, seperti register atau pada stack dan kemudian mengeksekusi setiap instruksi yang dikenal sebagai kernel call atau supervisor call.
Didalam sistem monolitik terdapat struktur dasar untuk sistem operasi, yaitu :
- utama membuat permintaan dari service procedure
- Sekumpulan service procedure membawa keluar system call
- Sekumpulan utilitas procedure membantu service procedure
Pada model ini, untuk setiap system call hanya tedapat satu service procedure yang ada. Prosedur utilitas sendiri berfungsi untuk memenuhi kebutuhan dari beberapa service prosedure, seperti mengambil data dari program user. Divisi ini dibagi menjadi 3 layer, yaitu :
>Kelemahan dari Sistem Monolitik

Ada beberapa kelemahan dari sistem monolitik itu sendiri, yaitu :
* Disappearance dan pengujian dari eror sangatlah sulit, karena sistem tidak dapat dipisahkan dan dilokalisasikan.
* Sistem sulit untuk menyediakan fasilitas pengamanan (security).
* Merupakan pemborosan yang sangat besar apabila setiap komputer harus menjalankan kernel monolitik. Sementara sistem tersebut sebenarnya tidak memerlukan seluruh layanan yang disediakan oleh kernel. (Tidak Fleksibel) * Apabila adanya kesalahan pemrograman pada suatu bagian dari kernel, maka menyebabkan matinya seluruh sistem.
Sedangkan untuk keunggulan dari sistem ini adalah layanan sistem monolitik dapat dilakukan sangat cepat karena terdapat pada satu address space.
Nah, itu adalah pembahasan mengenai Sistem Monolitik (Monolithic System). Sistem Monolitik merupakan salah satu sistem yang terdapat pada struktur sistem operasi. Sistem ini biasanya merupakan sistem yang paling umum yang menggunakan address space di dalam penggunaannya.

Pendekatan Berlapis (Layer Approach)

Sistem operasi dibagi menjadi beberapa lapisan. Lapisan terbawah (layer 0) adalah hardware dan yang tertinggi (layer N) adalah user interface. Lapisan N memberi layanan untuk lapisan N+1 sedangkan proses-proses di lapisan N dapat meminta layanan lapisan N-1 untuk membangun layanan lapisan N+1. Lapisan N dapat meminta layanan lapisan N-1 namun lapisan N tidak dapat meminta layanan lapisan N+1. Masing-masing berjalan pada lapisannya sendiri.


Gambar 2. Lapisan Sistem Operasi
Menurut Tanenbaum dan Woodhull, sistem terlapis terdiri dari enam lapisan, yaitu:
Lapisan 0. Mengatur alokasi prosesor, pertukaran antar proses ketika interupsi terjadi atau waktu habis dan lapisan ini mendukung dasar multi-programming pada CPU.
Lapisan 1. Mengalokasikan ruang untuk proses di memori utama dan pada 512 kilo word drum yang digunakan untuk menahan bagian proses ketika tidak ada ruang di memori utama.
Lapisan 2. Menangani komunikasi antara masing-masing proses dan operator console. Lapisan ini masing-masing proses secara efektif memiliki operator console sendiri.
Lapisan 3. Mengatur peranti I/O dan menampung informasi yang mengalir dari/ke proses tersebut.
Lapisan 4. Tempat program pengguna. Pengguna tidak perlu memikirkan tentang proses, memori, console, atau manajemen I/O.
Lapisan 5. Merupakan operator sistem.
Contoh sistem operasi yang menggunakan pendekatan berlapis adalah THE yang dibuat oleh Djikstra dan mahasiswa-mahasiswanya, serta sistem operasi MULTICS.
Kelemahan struktur ini adalah fungsi-fungsi sistem operasi harus diberikan ke tiap lapisan secara hati-hati. Sedangkan keunggulannya adalah memeliki semua kelebihan rancangan modular, yaitu sistem dibagi menjadi beberapa modul dan tiap modul dirancang secara independen. Tiap lapisan dapat dirancang, dikode dan diuji secara independen. Pendekatan berlapis menyederhanakan rancangan, spesifikasi dan implementasi sistem operasi.



Virtual Machine

Dalam struktur ini user seakan-akan mempunyai seluruh komputer dengan simulasi atas pemroses yang digunakan. Sistem operasi melakukan simulasi mesin nyata yang digunakan user, mesin virtual ini merupakan tiruan seratus persen atas mesin nyata


Gambar 4 (a) Non virtual machine (b) Virtual machine

Teknologi ini awalnya digunakan pada IBM S/370. VM/370 menyediakan mesin virtual untuk tiap user dengan membuat mesin virtual baru pada saat user tersebut melakukan log sistem. Kemudian teknik ini berkembang menjadi operating system emulator sehingga sistem operasi dapat menjalankan aplikasi-aplikasi untuk sistem operasi lain.
Dalam lingkungan ini terdapat proteksi berbagai sumber daya sistem. Setiap virtual-machine secara lengkap mengisolasi dari semua virtual-machine yang lain, sehingga tidak ada masalah proteksi. Ada dua pendekatan dalam penyediaan sharing yang diimplementasikan, pertama hal ini memungkinkan share minidisk dan share files. Kedua, memungkinkan pendefinisian jaringan virtual-machine, sehingga dapat mengirim informasi melalui virtual jaringan komunikasi.

Struktur Mesin maya ( CP/CMS, VM/370 ) terdiri atas komponen dasar utama :
Control Program, yaitu virtual machine monitor yang mengatur fungsi ari prosessor, memori dan piranti I/O. Komponen ini berhubungan langsung dengan perangkat keras.
Conventional Monitor System, yaitu sistem operasi sederhanayang mengatur fungsi dari proses, pengelolaan informasi dan pengelolaan piranti
Kelebihan Mesin Maya ( Virtual Machine ):
Konsep mesin virtual menyediakan proteksi yang lengkap untuk sumber daya system sehingga masing-masing mesin virtual dipisahkan mesin virtual yang lain. Isolasi ini tidak memperbolehkan pembagian sumber daya secara langsung.
Sistem mesin virtual adalah mesin yang sempurna untuk riset dan pengembangan system operasi. Pengembangan system dikerjakan pada mesin virtual, termasuk di dalamnya mesin fisik dan tidak mengganggu operasi system yang normal. 
Kekurangan Mesin Maya ( Virtual Machine ):
Konsep mesin virtual sangat sulit untuk mengimplementasikan kebutuhan dan duplikasi yang tepat pada mesin yang sebenarnya.
 
Contoh: 
Sistem operasi MS-Windows NT dapat menjalankan aplikasi untuk MS-DOS, OS/2 mode teks dan aplikasi WIN16.
IBM mengembangkan WABI untuk meng-emulasikan Win32 API sehingga sistem operasi yang menjalankan WABI dapat menjalankan aplikasi-aplikasi untuk MS-Windows.
Para pengembang Linux membuat DOSEMU untuk menjalankan aplikas-aplikasi DOS pada sistem operasi Linux, WINE untuk menjalankan aplikasi-aplikasi MS-Windows.
VMWare merupakan aplikasi komersial yang meng-abstraksikan perangkat keras intel 80×86 menjadi virtual mesin dan dapat menjalan beberapa sistem operasi lain (guest operating system) di dalam sistem operasi MS-Windos atau Linux (host operating system). VirtualBox merupakan salah satu aplikasi sejenis yang opensource.


Gambar 5 Arsitektur Virtual Machine


Pengertian Client System Model (Client System Server)
Pengertian client server tentunya tak lepas dari dua kata ini, yaitu kata client dan server. Client adalah sistem atau proses yang melakukan permintaan (request) data ke server. Sedangkan server yaitu sistem atau proses yang menyediakan data yang diminta oleh client tersebut. Jadi bisa disimpulkan bahwa client server merupakan sebuah paradigma dalam teknologi informasi yang merujuk pada cara menyalurkan aplikasi antara kedua pihak tersebut, yaitu client dan server.
Bisa diartikan juga bahwa client server adalah sebuah pembagian kerja didalam mengakses server sebuah jaringan tertentu antara client dan server. Sebagai bagian dari konteks data, client server mengatur interface yang fungsinya sebagai tempat menjalankan aplikasi basis data.
Client menerima permintaan, lalu pesan diteruskan ke server dan menunggu respon, setelah itu server menerima dan memprosesnya permintaan basis data tersebut hingga kemudian hasilnya diberikan ke client. Dalam proses tersebut tentunya melibatkan banyak hal seperti jaminan integritas, pemeriksaan autorisasi, proses update dan lain sebagainya.
Fungsi Client Server
Fungsi client server akan dijelaskan secara secara terpisah, yang pertama fungsi dari client dan yang kedua fungsi server. Fungsi client yang pertama yaitu mengatur user interface. Fungsi kedua yaitu, memproses aplikasi. Dalam pemrosesan aplikasi, client server inilah yang berperan di dalamnya. Ketiga, menyediakan akses basis data secara bersamaan, menerima dan memeriksa sintaks input dari pengguna, menyediakan kontrol recovery, dan sebagainya.
Sedangkan fungsi server diantaranya; menerima dan memproses basis data yang diminta dari client, memeriksa autorisasi, memelihara data dictionary, melakukan query atau pemrosesan update dan memindahkan respon ke client, dan sebagainya.
Contoh Client Server
Contoh client server mengacu pada desain aplikasi atau macam dari arsitektur aplikasi client server tersebut, diantaranya; (one-tier) standalone, pada arsitektur ini semua pemrosesan dilakukan pada mainframe. Tipe model ini adalah dimana semua proses terjadi secara terpusat yang dikenal sebagai basis-host. Kekurangan yang terjadi pada tipe ini yaitu semakin banyak user yang mengakses, maka akan semakin kewalahan.
Model kedua yaitu client server (two-tier) adalah model aplikasi yang pemrosesannya terjadi pada client dan server. Model ini adalah tipikal aplikasi degnan banyak client dan server yang dihubungkan melalui sebuah jaringan.
Ketiga yaitu, three-tier merupakan sebuah arsitektur dari client-server yang sudah di inovasi. Pada arsitektur tipe ini terdapat application server yang berdiri diantara client dan database server. Arsitektur semacam ini banyak diterapkan dengan menggunakan web application karena dengan demikian komputer client akan melakukan instalasi web browser.

Model keempat adalah multi-tier. Model ini sangat mirip dengan model sebelumnya yaitu three tier. Perbedaannya terletak pada adanya business logic server. Model keempat yang merupakan arsitektur dari client server ini memberikan bentuk tree-tier yang diperluas dalam bentuk fisik yang terdistribusi.




BAB IV.
KESIMPULAN
Komputer adalah sebuah mesin elektronik yang secara cepat .menerima informasi masukan digital dan mengolah informasi tersebut menurut seperangkat instruksi yang tersimpan dalam komputer dan menghasilkan keluaran informasi yang dihasilkan setelah diolah.  Organisasi Komputer adalah bagian yang terkait erat dengan unit–unit operasional dan interkoneksi antar komponen penyusun sistem komputer dalam merealisasikan aspek arsitekturalnya.  Arsitektur Komputer lebih cenderung pada kajian atribut–atribut sistem komputer yang terkait dengan seorang programmer.  Struktur internal komputer meliputi: Central Processing Unit(CPU),Memori Utama, I/O, Sistem Interkoneksi.  Struktur internal CPU meliputi: Control Unit, Aritmetic And Logic Unit(ALU), Register, CPU Interkoneksi.  Fungsi dasar sistem komputer adalah Fungsi Operasi Pengolahan Data, Penyimpanan Data, Fungsi Operasi Pemindahan Data Fungsi Operasi Kontrol. 




DAFTAR PUSTAKA
https://www.google.co.id/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&uact=8&ved=0ahUKEwimloCH6PrXAhUEvI8KHcEGBWsQFghdMAY&url=http%3A%2F%2Falfarizzi08.blogspot.com%2F2013%2F03%2Fperbedaan-sistem-operasi-dan-program.html&usg=AOvVaw2Hw_7vPBHtYf5VvRWyk8rj
   https://www.google.com/url?q=http://bierpinter.com/pengetahuan/pengertian-sistem-monolitik-monolithic-system/&sa=U&ved=2ahUKEwjChbPbsfbXAhXCto8KHdm6ADQQFjAHegQIChAA&usg=AOvVaw0oDuwqWFnC3D23yIeZPicX
http://rangga-stemsi.blogspot.co.id/2011/05/pengertian-lebih-dalam-tentang-sistem.html
https://www.google.co.id/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&cad=rja&uact=8&ved=0ahUKEwjw3-fN3_rXAhUJPY8KHYeyAiAQFgg4MAM&url=http%3A%2F%2Fberbagiittips.blogspot.com%2F2013%2F07%2Fpengertian-clientserver-peertopeer.html&usg=AOvVaw3lMOBJtdPiAXPLVrcf1FYQ
https://depemaginting.wordpress.com/2011/03/24/struktur-sistem-operasi/

Rabu, 06 Desember 2017

Makalah sinkronisasi data dan deadlock

Tugas makalah
Sinkronisasi data dan deadlock






Disusun oleh: Aris fahrudin
PROGRAM STUDI TEKNIK INFORMATIKA
UNIVERSITAS PAMULANG
PAMULANG  2017







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 menysun 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
1.      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.
2.      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:

1. Tersedia: jumlah sumber daya yang tersedia

2. Alokasi: jumlah sumber daya yang dialokasikan untuk setiap proses

3. Maksimum: jumlah permintaan sumber daya oleh proses

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


Pemulihan Deadlock

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


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


                                                                 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/
http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c43.html