Selasa, 29 November 2016

SINKRONISASI DAN DEADLOCK PADA SISTEM OPERASI

SINKRONISASI  DAN DEADLOCK 

PADA SISTEM OPERASI


Sinkronisasi dan deadlock merupakan permasalahan sistem operasi. Dimana jika sinkronisasi dibutuhkan untuk menghindari terjadinya ketidak-konsistenan data akibat adanya akses data secara konkuren. Proses-proses disebut konkuren jika proses-proses itu ada dan berjalan pada waktu yang sama, proses-proses konkuren ini bisa bersifat independen atau bisa juga saling berinteraksi. Prosesproses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar. Dan sedangkan deadlock suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set  sedang menunggu.

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.

Sinkronisasi diperlukan untuk menghindari terjadinya ketidak-konsistenan data akibat adanya akses data secara konkuren. Proses-proses disebut konkuren jika proses-proses itu ada dan berjalan pada waktu yang sama, proses-proses konkuren ini bisa bersifat independen atau bisa juga saling berinteraksi. Proses-proses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar.

1.1 Race Condition
Race condition adalah suatu kondisi dimana dua atau lebih proses mengakses shared memory/sumber daya pada saat yang bersamaan dan hasil akhir dari data tersebut tergantung dari proses mana yang terakhir selesai dieksekusi sehingga hasil akhirnya terkadang tidak sesuai dengan yang dikehendaki. Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan memori bersama, berkas bersama, dan sumber daya lain yang digunakan secara bersama-sama adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses melakukan proses tulis dan baca kepada data yang sama pada saat yang sama. Dengan kata lain, kita membutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersama-sama, proses lain akan dikeluarkan dari pekerjaan yang sama. Cara untuk menghindari race condition adalah kita harus dapat menjamin bahwa jika suatu proses sedang menjalankan critical section, maka proses lain tidak boleh masuk ke dalam critical section tersebut.

1.2 Critical Section
Critical section adalah segmen kode yang mengakses data yang digunakan proses secara bersamasama 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).

2. Deadlock

Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu. Kejadian deadlock selalu tidak lepas dari sumber daya, bahwa hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. Oleh karena itu, kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber daya dapat digunakan lagi berulang-ulang dan sumber daya yang dapat digunakan dan habis dipakai atau dapat dikatakan sumber daya sekali pakai.

2.1 Faktor Penyebab Terjadinya Deadlock
Ada empat kondisi yang dapat menyebabkan terjadinya deadlock. Keempat kondisi tersebut tidak dapat berdiri sendiri, namun saling mendukung.
·         Mutual exclusion. Hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut.
·         Hold and wait. Proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama.
·         No preemption. Sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan.
·         Circular wait. Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.
Ketiga kondisi pertama merupakan syarat perlu (necessary conditions) bagi terjadinya deadlock. Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi diatas, tak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock. Deadlock baru benar-benar terjadi bila kondisi keempat terpenuhi. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu saja dari kondisi tidak terpenuhi maka deadlock tidak terjadi.

2.2 Metode Menangani Deadlock
Terdapat tiga metode untuk menangani permasalahan deadlock yaitu :
1.      Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki status deadlock.
2.      Mengijinkan sistem memasuki status deadlock dan kemudian memperbaikinya.
3.      Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah terjadi pada sistem. Model ini yang banyak digunakan pada sistem operasi termasuk UNIX.
2.2.1 Strategi Burung Onta
Strategi ini mengasumsikan kejadian deadlock jarang terjadi, sehingga mengabaikan kemungkinan deadlock. Jika terjadi deadlock, maka reboot sistem. Strategi ini berarti sama sekali tidak berusaha mengatasi deadlock.
2.2.2Mencegah Deadlock (Deadlock Prevention)
Metode ini berkaitan dengan pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Metode ini sering menghasilkan utilisasi sumber daya yang buruk. Pencegahan deadlock merupakan metode yang banyak dipakai. Untuk mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat perlu sebagai berikut :
a. Mencegah Mutual Exclusion
Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersamasama.
b. Mencegah Hold and Wait
Untuk mencegah hold and wait, sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukan sebelum proses memulai eksekusi atau mengijinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain.
c. Mencegah Non Preemption
Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu menunggu. Cara mencegah kondisi non preemption :
·         Jika suatu proses yang membawa beberapa sumber daya meminta sumber daya lain yang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut, maka semua sumber daya yang sedang dibawa proses tersebut harus dibebaskan.
·         Proses yang sedang dalam keadaan menunggu, sumber daya yang dibawanya ditunda dan ditambahkan pada daftar sumber daya.
·         Proses akan di-restart hanya jika dapat memperoleh sumber daya yang lama dan sumber daya baru yang diminta.
d. Mencegah Kondisi Menunggu Sirkular
Sistem mempunyai total permintaan global untuk semua tipe sumber daya. Proses dapat meminta proses kapanpun menginginkan, tapi permintaan harus dibuat terurut secara numerik. Setiap proses yang membutuhkan sumber daya dan memintanya maka nomor urut akan dinaikkan. Cara ini tidak akan menimbulkan siklus. Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.

2.2.3Menghindari Deadlock (Deadlock Avoidance)
Metode alternatif untuk menghindari deadlock adalah digunakan informasi tambahan tentang bagaimana sumber daya diminta. Misalnya pada sistem dengan satu tape drive dan satu printer, proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. Sebaliknya proses Q pertama meminta printer kemudian tape drive. Dengan mengetahui urutan permintaan dan pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak. Setiap permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia, sumber daya sedang dialokasikan untuk proses dan permintaan kemudian serta pelepasan oleh proses untuk menentukan apakah permintaan dapat dipenuhi atau harus menunggu untuk menghindari deadlock. Model yang sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan. Algoritma deadlock avoidance secara dinamis memeriksa status sumber daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah sumber daya yang tersedia dan yang dialokasikan dan maksimum permintaan oleh prosesproses.

2.2.4. Mendeteksi Deadlock
Jika sistem tidak menyediakan algoritma mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan :
·         Algoritma yang menguji state sistem untuk menentukan apakah  deadlock telah terjadi.
·         Algoritma untuk memperbaiki dari deadlock.

2.2.5 Pemulihan Deadlock
Terdapat dua pilihan untuk membebaskan deadlock. Satu solusi sederhana adalah dengan menghentikan satu atau beberapa proses untuk membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda beberapa sumber daya dari satu atau lebih proses yang deadlock.

Sabtu, 25 Oktober 2014

Cara Mencari Bilangan Genap dengan PHP

halo sobat blogger.. gimana kabarnya? semoga baik-baik saja ya, hehe.. oke langsung ke topik nya yang kali ini saya akan memberi tutorial bagaimana cara membuat program sederhana untuk mencari bilangan genap dengan menggunakan PHP. Pada tutorial ini saya akan menggunakan for untuk menyelesaikan masalah tersebut.

Ketikkan kode program berikut pada notepad++ atau yang lain. Kenapa cuma saya kasih screenshoot kode nya? supaya kalian tidak hanya langssung copy paste saja, tapi juga berlatih untuk mengetik :). karena untuk menjadi programmer sobat blogger harus bisa mengetik dengan baik, hehe.. (alesan). Oke selanjutnya simpan dengan nama bilangan_genap.php. Simpan pada folder htdocs sobat bogger masing-masing. Lalu aktifkan XAMPP nya dan ketikkan localhost/(nama folder yang akan dipilih)  pada browser./bilangan_genap.php. Sebagai contoh : localhost/latihan/bilangan_genap.php
bilangan_genap.php
berikut hasilnya :

Sekian tutorial dari saya,, apabila ada yang mau ditanyakan bisa langsung comment aja..
Thanks.. :D

Jumat, 17 Oktober 2014

tips backpacker


Berminat untuk menjadi backpackerBackpacker identik dengan liburan asyik tetapi dengan dana minimal. Mempersiapkan fisik yang prima dan pemilihan barang yang tepat untuk masa liburan salah satu faktor penting bagibackpacker. Backpacker juga kerap kali membawa tas sepraktis mungkin dan dibawa kemana-mana sepanjang perjalanan, sehingga tas ringan dan isi lengkap penting untuk diperhatikan. Simak tips backpacker pemula berikut ini :

1. Pilih tas yang ringan, mudah dibawa, tapi berisi banyak. Design atau stylish bukanlah hal utama untuk tasbackpacker, yang penting adalah tas dengan fungsi yang tepat dan mampu menampung semua keperluan backpackerselama liburan. Cara mengemas baju dan perlengkapan lainnya juga bisa berdampak pada cukup atau tidaknya tasbackpacker. Smart packing dan pilihan barang tepat, penting untuk diperhatikan.

2. Berapa jumlah pakaian yang dibawa? Untuk backpacker cowok mungkin hal ini bukan suatu masalah, tapi untuk cewek, harus pintar memilih mana barang yang perlu dan mana yang tidak. Lebih baik membawa pakaian yang ringan, mudah dilipat, bukan bahan yang mudah kusut dan mudah kering. Jika diperlukan, backpacker bisa mencuci pakaian sendiri, sehingga bahan yang mudah kering dan tidak perlu setrika adalah pilihan yang tepat!

3. Cash money. Ini wajib dibawa, cash money dalam pecahan yang kecil. Kenapa? Liburan ala backpacker berarti travelers siap-siap untuk pergi ke tempat yang murah dan tidak menyediakan fasilitas debet atau kartu kredit. Cash money pecahan kecil juga sangat dibutuhkan saat travelers melakukan perjalanan dengan angkutan umum lokal atau tradisional.

4. Jangan lupa untuk browsing, mencari dan memesan hotel murah di daerah tujuan sebelum berangkat, karena bisa saja travelers kesulitan untuk mencari hotel setibanya disana.Pemesanan jauh hari juga bisa memangkas anggaran liburan jadi lebih kecil. Tak usah bingung, tinggal search saja hotel murah di RajaKamar :)

5. Peta petunjuk lengkap. GPS bisa menjadi alternatif lain untuk pengganti peta, tapi berhubung backpacker belum tentu mudah untuk menemukan tempat charge GPS, sebaiknya persiapkan peta perjalanan yang dilengkapi dengan informasi wisata untuk kelancaran traveling.

6. Backpacker, menikmati wisata tanpa banyak mengeluarkan uang. Jadi tahanlah keinginan belanja atau hapus daftar souvenir yang ingin dibeli :). Kenang-kenangan travelers cukup dengan jepretan atau rekaman dari kamera video travelers.

7. Perlengkapan P3K ringan harus tetap dibawa, plester, betadine, minyak kayu putih atau balsam, obat anti mabuk, obat pusing & pilek, lotion nyamuk dan perlengkapan P3K lainnya sesuai dengan tujuan wisata travelers.
bacak
8. Siapkan fisik! Traveling ala backpacker membutuhkan kesiapan fisik yang kuat, karena biasanya backpacker lebih memilih untuk berjalan kaki daripada naik taksi atau angkutan berbayar untuk jarak dekat. Pilihan hotel murah untukstay juga biasanya terletak agak sedikit jauh dari tempat wisata yang ingin dikunjungi. Bawaan tas yang cukup berat di punggung juga membutuhkan stamina extra untuk menikmati perjalanan ala backpacker.
http://content.rajakamar.com/7-tips-backpacker-pemula/

Selasa, 03 September 2013

Dinus Inside 2013

DINUS INSIDE 2013

 

Halo sahabat blogger, perkenalkan nih nama saya Arif Maulana mahasiswa baru UDINUS dari Fakultas Ilmu Komputer Progam Sudi Manajemen Informatika - D3 tahun akademik 2013/2014 (ga nanya) hehe.. 
Oke introducing nya cukup sekian aja ya, sekarang disini saya akan menjelaskan tentang apa sih DINUS INSIDE itu? pasti sahabat blogger pada penasaran kan?? hehe.. Dinus Inside adalah kegiatan pelantikan mahasiswa baru dan pengenalan kehidupan kampus Universitas Dian Nuswantoro yang WAJIB diikuti oleh setiap mahasiswa baru Universitas Dian Nuswantoro tahun akademik 2013/2014. Tema Dinus Inside tahun ini adalah "MENJADI INSAN YANG CERDAS, BERKARAKTER, DAN BERINTEGRITAS", Widih denger tema nya saja langsung salut dan antusias.
Pertama kali mau Dinus Inside ini saya pikir akan banyak gojlokan-gojlokan dari kaka-kaka senior, terus bakal di marah-marahin, terus ada senioritas, tapi semua yang saya pikirkan itu SALAH BESAR, ternyata Dinus Inside itu enak banget pemirsah (walaupun agak sedikit boring sih) karena isi nya cuma duduk-duduk mendengarkan kaka-kaka senior dan para dosen menyampaikan isi materi, hehehe. Di Dinus Inside ini di jamin ga bakalan ada yang namanya kekerasan terhadap maba, salut banget deh pokoknya sama UDINUS ini, apa lagi sama kaka-kaka pendamping nya yang baik, lucu, dan kece-kece ini :).
Di hari pertama ini acaranya cuma duduk-duduk terus dari pagi sampe pulang, bayangin aja tuh gimana pegelnya duduk selama itu, hahaha... tapi tenang di sini para maba di jamin ga bakalan kepanasan deh, karena dikasih banyak kipas dan AC, hehehe. Di hari pertama ini, para maba di perkenalkan nama-nama  staf-staf yang ada di udinus, mulai dari Rektor sampe BEM. Terus juga diperkenalkan apa aja sih UKM yang ada di Udinus ini, ternyata buanyak banget UKM nya pemirsa. Oh ya yang bikin istimewanya lagi Bapak Gubernur Jawa Tengah dan Bapak Wali kota Semarang hadir langsung di acara Dinus Inside ini untuk mengucapkan selamat datang dan memberikan kuliah umum untuk para maba Udinus, kapan lagi broo isa tatap muka langsung sama pemimpin-pemimpin Jawa Tengah ini. Terus di lanjutkan sama hiburan musik dan dilanjutkan dengan  Launching UDINUS MOBILE, acara launching nya meriah banget bray. Di hari pertama ini masih ga disuruh bawa barang yang aneh-aneh sih, paling cuma di suruh bawa bibit pohon sengon, yang sempat bikin saya pusing harus cari kemana pada saat itu hahaha...
Nah saat hari ke -2 itu mulai disuruh bawa barang yang namanya aneh-aneh, ada kue lilin, "narkoba", air mineral merk udinus, sama baksos. Dan yang parah nya lagi disuruh buat topi toga, kalung dari permen warna biru sebanyak 9 buah dengan merk yang berbeda-beda, tas dari karung, sama co-card. Coba bayangkan aja suruh buat barang sebanyak itu dalam waktu 1 hari aja pemirsa, sampai-sampai saya begadang sampai jam 1 malam (maaf curcol dikit) hehe.. tapi semua itu saya lakukan dengan rasa senang hati, kapan lagi broo kita kita di beginiin?? kan ospek hanya sekali seumur hidup, hehehe... Hari ke -2 ini juga hampir sama kaya hari pertama, banyak duduk nya (sampe pantat nya tepos) hihihi...tapi tetep seru kok dinus inside nya.
Di hari ketiga juga di suruh bawa barang yang namanya aneh-aneh seperti snack fans 2pm, nasi pocong bunting, nasi ayam seksi, dan teh 17-an, alhamduliah saya bisa bawa semuanya hehehe. Di hari terakhir Dinus Inside ini acara nya juga tidak jauh beda dari hari-hari sebelumnya, tapi tetep seru dan menyenangkan, apalagi pada saat sesi penalaran, games yang di berikan seru banget sampai-sampai bikin maba pada keringetan.
Akhirnya masa-masa Dinus Inside telah selesai, dan saatnya tinggal menunggu Dinus expo yang akan di isi oleh acara-acara yang seru, banyak stand-stand dari UKM Udinus, dan lomba-lomba yang di selenggarakan oleh panitia, doakan ya semoga saya bisa menang lomba nya hehehe... dan yang tidak kalah di tunggu-tunggu oleh para maba yaitu malam inagurasi yang akan di laksanakan pada jumat 6 Agustus 2013 besok. Saya doakan untuk kaka-kaka senior semoga acara Dinus Expo besok bisa berjalan dengan lancar dan sesuai dengan rencana nya (amin). Dan semoga Dinus Inside dan Dinus Expo Tahun 2013 ini bisa menjadi kenangan yang tidak akan terlupakan oleh saya.
Saya ingin mengucapkan terima kasih yang sebesar-besarnya kepada kaka-kaka senior dan pendamping yang telah menyelenggarakan Dinus Inside ini hingga sukses seperti ini.
Nah gimana udah jelas kan tentang Dinus Inside nya?? maaf ya kalo saya sering curcol dalam artikel ini, hahaha.
SALAM MABA UDINUS TAHUN 2013!!