Rabu, 19 Juni 2013

Sistem Paging dan Sistem Segmentasi

PendahuluanYang dimaksud dengan pemberian halaman adalah suatu metoda yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidak berurutan. Pemberian halaman bisa menjadi solusi untuk pemecahan masalah luar. Untuk bisa mengimplementasikan solusi ini adalah melalui pengunaan dari skema pemberian halaman. Dengan pemberian halaman bisa mencegah masalah penting dari pengepasan besar ukuran memori yang bervariasi kedalam penyimpanan cadangan. Ketika beberapa pecahan kode dari data yang tersisa di memori utama perlu untuk ditukar keluar, harus ditemukan ruang untuk penyimpanan cadangan. Masalah pemecahan kode didiskusikan dengan kaitan bahwa pengaksesannya lebih lambat. Biasanya bagian yang menunjang untuk pemberian halaman telah ditangani oleh perangkat keras. Bagaimana pun, desain yang ada baru-baru ini telah mengimplementasikan dengan menggabungkan perangkat keras dan sistem operasi, terutama pada prosesormikro 64 bit .
Metoda Dasar
Jadi metoda dasar yang digunakan adalah dengan memecah memori fisik menjadi blok-blok berukuran tetap yang akan disebut sebagai frame. selanjutnya memori logis juga dipecah menjadi blok-blok dengan ukuran yang sama disebut sebagai halaman. Selanjutnya kita membuat suatu tabel halaman yang akan menterjemahkan memori logis kita kedalam memori fisik. Jika suatu proses ingin dieksekusi maka memori logis akan melihat dimanakah dia akan ditempatkan di memori fisik dengan melihat kedalam tabel halamannya. Untuk jelasnya bisa dilihat pada Gambar 30.1, “Penerjemahan Halaman”. Kita lihat bahwa setiap alamat yang dihasilkan oleh CPU dibagi-bagi menjadi dua bagian yaitu sebuah nomor halaman (p)
dan sebuah offset halaman (d). Nomor halaman ini akan digunakan sebagai indeks untuk tabel halaman. Tabel halaman mengandung basis alamat dari tiap-tiap halaman di memori fisik. Basis ini dikombinasikan dengan offset halaman untuk menentukan alamat memori fisik yang dikirim ke unit memori.
Gambar 30.1. Penerjemahan Halaman
 
 
Memori fisik dipecah menjadi beberapa blok berukuran yang tetap yang disebut frame (bingkai), sedangkan memori logis juga dipecah dengan ukuran yang sama yang disebut halaman. Suatu alamat memori yang digenerate oleh CPU terdiri dari 2 bagian yaitu halaman dan offset. Halaman berfungsi sebagai indeks dari suatu halaman table. Isi dari indeks yang ditunjuk pada halaman table (frame) digabungkan dengan offset maka akan membentuk suatu alamat asli dari suatu data pada memori fisik. Offset sendiri berfungsi sebagai penunjuk dari suatu blok data yang berada dalam suatu frame.
Dukungan Perangkat Keras
Setiap sistem operasi mempunyai caranya tersendiri untuk menyimpan tabel halaman. Biasanya sistem operasi mengalokasikan sebuah tabel halaman untuk setiap proses. sebuah penunjuk ke tabel halaman disimpan dengan nilai register yang lain didalam blok pengontrol proses. Akan tetapi penggunaannya menjadi tidak praktis karena ternyata tabel halaman disimpan pada memori utama yang tentu saja kecepatannya jauh lebih lambat dari dari register. Translation Lookaside Buffers (TLBs) dibuat untuk mengatasi masalah tersebut. TLBs adalah suatu asosiatif memori berkecepatan tinggi yang berfungsi hampir sama seperti cache memori tapi terjadi pada tabel halaman, TLBs menyimpan sebagian alamat-alamat data dari suatu proses yang berada pada tabel halaman yang sedang digunakan atau sering digunakan. TLBs biasanya terletak pada
Memori Manajement Unit (MMU). Salah satu feature dari TLBs adalah mampu membuat proteksi suatu alamat memori. Feature ini dinamakan address-space identifiers (ASIDs). ASIDs ini membuat suatu alamat memori hanya ada 1 proses yang bisa mengaksesnya. Contohnya adalah JVM. Pada saat program Java berjalan, Java membuat alokasi alamat memori untuk JVM dan yang bisa mengakses alamat tersebut hanya
program Java yang sedang berjalan itu saja. Suatu keadaan dimana pencarian alamat memori berhasil ditemukan pada TLBs disebut TLB hit. Sedangkan sebaliknya jika terjadi pada tabel halaman (dalam hal ini TLB gagal) disebut TLB miss. Effective Address Time adalah waktu yang dibutuhkan untuk mengambil data dalam memori fisik dengan persentase TLB hit (hit ratio) dan TLB miss (miss ratio). Persentasi dari beberapa kali TLB hit adalah disebut hit ratio. hit ratio 80% berarti menemukan nomor halaman yang ingin kita cari didalam TLB sebesar 80%. Jika waktu akses ke TLB memakan waktu 20 nanodetik dan akses ke memori memakan waktu sebesar 100 nanodetik maka total waktu kita memetakan memori adalah 120 nanodetik jika TLB hit. dan jika TLB miss maka total waktunya adalah 220 nanodetik. 
Jadi untuk mendapatkan waktu akses memori yang efektif maka kita harus membagi-bagi tiap kasus berdasarkan kemungkinannya:
Effective address time= hit ratio * (time search TLB + time access memori) + miss ratio * (time search TLB + time access tabel halaman + time access memori)

Suatu mesin yang efektif apabila memiliki effective address time yang kecil. Banyak cara yang telah dilakukan untuk optimal, salah satunya dengan mereduksi TLBs miss. Jadi sistem operasi memiliki intuisi untuk memprediksi halaman selanjutnya yang akan digunakan kemudian me-loadnya ke dalam TLB.
Proteksi Memori
Berbeda dengan poteksi memori pada bab sebelumnya, yang menggunakan Limit Register dan Relokasi Register, proteksi memori di lingkungan halaman dikerjakan oleh bit-bit proteksi yang berhubungan dengan tiap frame. Biasanya bit-bit ini disimpan didalam sebuah tabel halaman. Satu bit bisa didefinisikan sebagai baca-tulis atau hanya baca saja suatu halaman. Setiap referensi ke memori menggunakan tabel halaman untuk menemukan nomor frame yang benar. Pada saat alamat fisik sedang dihitung, bit proteksi bisa dicek untuk memastikan tidak ada kegiatan tulis-menulis ke Dukungan Perangkat Keras dalam 'read-only halaman'. Hal ini diperlukan untuk menghindari tejadinya 'memori-protection violation', suatu keadaan dimana terjadi suatu percobaan menulis di 'halaman read-only'. Ketika bit proteksi bernilai 'valid', berarti halaman yang dicari ada di dalam ruang alamat logika. Yang artinya halaman tersebut dapat diakses. Jika bit proteksi bernilai 'invalid', artinya halaman yang dimaksud tidak berada dalam ruang alamat logika. Sehingga halaman tersebut tidak dapat di akses.

Untung/Rugi Pemberian Halaman
• Jika kita membuat ukuran dari masing-masing halaman menjadi lebih besar.
• Keuntungan. Akses memori akan relatif lebih cepat.
• Kerugian. Kemungkinan terjadinya fragmentasi intern sangat besar.
• Jika kita membuat ukuran dari masing-masing halaman menjadi lebih kecil.
• Keuntungan. Kemungkinan terjadinya internal Framentasi akan menjadi lebih kecil.
• Kerugian. Akses memori akan relatif lebih lambat.

Keuntungan lainnya dari paging adalah, konsep memori virtual bisa diterapkan dengan menuliskan halaman ke disk, dan pembacaan halaman dari disk ketika dibutuhkan. Hal ini dikarenakan jarangnya pengunaan kode-kode dan data suatu program secara keseluruhan pada suatu waktu. Kerugian lainnya dari paging adalah, paging tidak bisa diterapkan untuk beberapa prosesor tua atau kecil (dalam keluarga Intel x86, sebagai contoh, hanya 80386 dan di atasnya yang punya MMU, yang bisa diterapkan paging). Hal ini dikarenakan paging membutuhkan MMU (Memory Management Unit). 
Tabel Halaman
Sebagian besar komputer modern memiliki perangkat keras istimewa yaitu unit manajemen memori (MMU). Unit tersebut berada diantara CPU dan unit memori. Jika CPU ingin mengakses memori (misalnya untuk memanggil suatu instruksi atau memanggil dan menyimpan suatu data), maka CPU mengirimkan alamat memori yang bersangkutan ke MMU, yang akan menerjemahkannya ke alamat lain sebelum melanjutkannya ke unit memori. Alamat yang dihasilkan oleh CPU, setelah adanya pemberian indeks atau aritmatik ragam pengalamatan lainnya disebut alamat logis (virtual address). Sedangkan alamat yang didapatkan fisik membuat sistem operasi lebih mudah pekerjaannya saat mengalokasikan memori. Lebih penting lagi, MMU juga mengizinkan halaman yang tidak sering digunakan bisa disimpan di disk.
           Cara kerjanya adalah sbb:
Tabel yang digunakan oleh MMU mempunyai bit sahih untuk setiap halaman di bagian alamat logis.
Jika bit tersebut di set, maka penterjemahan oleh alamat logis di halaman itu berjalan normal. Akan
tetapi jika dihapus, adanya usaha dari CPU untuk mengakses suatu alamat di halaman tersebut
menghasilkan suatu interupsi yang disebut page fault trap. Sistem operasi telah mempunyai
interrupt handler untuk kesalahan halaman, juga bisa digunakan untuk mengatasi interupsi jenis
yang lain. Handler inilah yang akan bekerja untuk mendapatkan halaman yang diminta ke memori.
 
Untuk lebih jelasnya, saat kesalahan halaman dihasilkan untuk halaman p1, interrupt handler melakukan hal-hal berikut ini:
  • Mencari dimana isi dari halaman p1 disimpan di disk. Sistem operasi menyimpan informasi ini di dalam tabel. Ada kemungkinan bahwa halaman tersebut tidak ada dimana-mana, misalnya pada kasus saat referensi memori adalah bug. Pada kasus tersebut , sistem operasi mengambil beberapa langkah kerja seperti mematikan prosesnya. Dan jika diasumsikan halamannya berada dalam disk:
  • Mencari halaman lain yaitu p2 yang dipetakan ke frame lain f dari alamat fisik yang tidak banyak dipergunakan.
  • Menyalin isi dari frame f keluar dari disk.
  • Menghapus bit sahih dari halaman p2 sehingga sebagian referensi dari halaman p2 akan menyebabkan kesalahan halaman.
  • Menyalin data halaman p1 dari disk ke frame f.
  • Update tabel MMU sehingga halaman p1 dipetakan ke frame f.
  • Kembali dari interupsi dan mengizinkan CPU mengulang instruksi yang menyebabkan interupsi tersebut.
Pada dasarnya MMU terdiri dari tabel halaman yang merupakan sebuah rangkaian array dari Untung/Rugi Pemberian Halaman masukan-masukan (entries) yang mempunyai indeks berupa nomor halaman (p). Setiap masukan terdiri dari flags (contohnya bit sahih dan nomor frame). Alamat fisik dibentuk dengan menggabungkan nomor frame dengan ofset, yaitu bit paling rendah dari alamat logis.
Gambar 30.2. Skema Tabel Halaman Dua tingkat
 

Setiap sistem operasi mempunyai metodanya sendiri untuk menyimpan tabel halaman. Sebagian besar mengalokasikan tabel halaman untuk setiap proses. Penunjuk ke tabel halaman disimpan dengan nilai register yang lain (seperti pencacah instruksi) di blok kontrol proses. Ketika pelaksana dispatcher mengatakan untuk memulai proses, maka harus disimpan kembali register-register pengguna dan mendefinisikan nilai tabel halaman perangkat keras yang benar dari tempat penyimpanan tabel halaman dari pengguna.
Pemberian Halaman Secara Bertingkat
Gambar 30.3. Tabel Halaman secara Bertingkat
 
Hierarchical paging atau pemberian halaman bertingkat merupakan metoda pemberian halaman secara maju (forward mapped paging). Pemberian halaman dengan cara ini menggunakan pembagian tingkat setiap segmen alamat logikal. Setiap segmen menunjukkan indeks dari tabel halaman, kecuali segmen terakhir yang menunjukkan langsung frame pada memori fisik. Segmen terakhir ini biasa disebut offset(D). Dapat disimpulkan bahwa segmen yang terdapat dalam alamat lojik menentukan berapa lapis paging yang digunakan yaitu banyak segmen-1. Selain itu dalam sistem ini setiap tabel halaman memiliki page table lapis kedua yang berbeda. Dengan metoda ini, isi pada indeks tabel halaman pertama akan menunjuk pada tabel halaman kedua yang bersesuaian dengan isi dari tabel halaman pertama tersebut. Sedangkan isi dari page table kedua menunjukkan tempat di mana tabel halaman ketiga bermula, sedang segmen alamat lojik kedua adalah indeks ke-n setelah starting point tabel halaman ketiga dan seterusnya sampai dengan segmen terakhir. Sedangkan segmen terakhir menunjukkan langsung indeks setelah alamat yang ditunjukkan oleh tabel halaman terakhir.
Hierarchical Paging 
 
Kekurangan dari metoda ini adalah borosnya memori karena setiap tabel halaman menunjuk pada page table lainnya yang berbeda. Jika segmen pertama berisi p bit, maka besar tabel halaman pertama sebesar 2 pangkat p. Bila segmen kedua berisi s bit, maka setiap tabel halaman pertama menunjuk pada 2 pangkat s banyaknya ruang pada memori. Sehingga sampai dengan tingkat dua ini ruang yang dibutuhkan untuk paging sudah mencapai 2 pangkat s+p. Dapat dikatakan bahwa
metoda ini sangat tidak cocok untuk diterapkan pada mapping besar seperti 64-bit walaupun dapat saja dilakukan.
Tabel Halaman secara Hashed
Tabel Halaman secara Hashed cukup cocok untuk paging berukuran besar, seperti 64-bit. Karakteristik dari metoda ini adalah digunakannya sebuah fungsi untuk memanipulasi alamat lojik. Selain sebuah fungsi, tabel halaman secara hashed juga menggunakan tabel hash dan juga pointer untuk menangani linked list. Hasil dari hashing akan dipetakan pada hash tabel halaman yang berisi linked list. Penggunaan linked list adalah untuk pengacakan data yang dikarenakan besar hash table yang sangat terbatas. Pada metoda ini offset masih sangat berperan untuk menunjukkan alamat fisik, yaitu dengan meng-concate isi dari linked list dengan offset tersebut. Sistem ini dapat dikembangkan menjadi Clustered Tabel Halaman yang lebih acak dalam pengalamatan dalam memori fisik.
Hashed Page Tabels
 
Tabel Halaman secara Inverted
Metoda ini berbeda dengan metode lainnya. Pada Tabel Halaman Inverted, proses pemberian halaman dipusatkan pada proses yang sedang ditangani. Alamat lojik yang menggunakan inverted tabel halaman merepresentasikan proses yang dimiliki. Sehingga tabel halaman pada metoda ini sama besar atau lebih dengan jumlah proses yang dapat ditangani dalam setiap kesempatan. Bila diasumsikan sistem dapat menangani n buah proses maka paling tidak tabel halaman juga sebesar n, sehingga setidaknya satu proses memiliki satu halaman yang bersesuaian dengan page tersebut. Metoda inverted ini bertumpu pada proses pencarian identitas dari proses di dalam tabel halaman tersebut. Jika proses sudah dapat ditemukan di dalam tabel halaman maka letak indeks di tabel halaman yang dikirimkan dan dikonketenasi dengan offset sehingga membentuk alamat fisik yang baru. Karena Inverted paging membatasi diri pada banyaknya proses maka jika dibandingkan dengan hierarchical paging metoda ini membutuhkan memori yang lebih sedikit.
Gambar 30.6. Tabel Halaman secara Inverted
 
 
Kekurangan pertama dari inverted paging ini disebabkan oleh fasilitas searching yang dimilikinya. Memori fisik sendiri tersusun secara berurutan di dalam tabel halaman, namun proses yang ingin dicari berasal dari alamat virtual sehingga ada kemungkinan dilakukan pencarian seluruh tabel halaman sampai akhirnya halaman tersebut ditemukan. Hal ini menyebabkan ketidakstabilan metoda ini sendiri. Kekurangan lain dari inverted tabel halaman adalah sulitnya menerapkan memori berbagi (shared). Memori sharing adalah sebuah cara dimana proses yang berbeda dapat mengakses suatu alamat di memori yang sama. Ini bertentangan dengan konsep dari inverted tabel halaman sendiri yaitu, setiap proses memiliki satu atau lebih frame di memori, dengan pasangan proses dan frame unik. Unik dalam arti beberapa frame hanya dapat diakses oleh satu buah proses saja. Karena perbedaan konsep yang sedemikian jauh tersebut maka memori sharing hampir mustahil diterapkan dengan inverted tabel halaman.
Gambar 30.7. Inverted Page Tables
 
 
Keuntungan lain dari pemberian halaman adalah kemungkinannya untuk berbagi kode yang sama. Pertimbangan ini terutama sekali penting pada lingkungan yang berbagi waktu. Pertimbangkan  sebuah sistem yang mendukung 40 pengguna, yang masing-masing menjalankan aplikasi pengedit teks. Jika editor teks tadi terdiri atas 150K kode dan 50K ruang data, kita akan membutuhkan 8000K untuk mendukung 40 pengguna. Jika kodenya dimasukan ulang, bagaimana pun juga dapat dibagi-bagi, seperti pada gambar. Disini kita lihat bahwa tiga halaman editor (masing-masing berukuran 50K; halaman ukuran besar digunakan untuk menyederhanakan gambar) sedang dibagi-bagi diantara tiga proses. Masing-masing proses mempunyai halaman datanya sendiri. Terlihat jelas selisih penggunaan memori sesudah dan sebelum berbagi halaman adalah sebesar 5850MB. Bingkai yang berisi editor diakses oleh banyak pengguna. Jadi hanya ada satu salinan editor yang ditaruh di memori. Tiap tabel halaman dari tiap proses mengakses editor yang sama, tapi halaman data dari tiap proses tetap ditaruh di frame yang berbeda. Inilah yang dimaksud dengan berbagi halaman.
Gambar 30.9. Share Page
 
 
Rangkuman
        Paging adalah suatu metoda yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidak berurutan. Prinsipnya adalah memecah memori fisik dan memori logika menjadi blok-blok dengan ukuran sama (disebut page). Setelah itu kita membuat page table yang akan menerjemahkan memori logika menjadi memori fisik dengan perantara Memory Management Unit (MMU), dan pengeksekusian proses akan mencari memori berdasarkan tabel tersebut. Paging atau pemberian halaman adalah salah satu teknik manajemen memori, dimana suatu memori komputer dibagi menjadi bagian-bagian kecil, yang disebut sebagai frame. Setiap sistem operasi mengimplementasikan paging dengan caranya masing-masing. Paging menjamin keamanan data di memori saat suatu proses sedang berjalan, dan dapat mempercepat akses ke memori, serta menghemat pemakaian memori. Untuk mencapai tujuan tersebut terdapat beberapa metoda pemberian hal aman seperti Hierarchical Paging, Inverted Halaman tables, dan Hashed tabel  halaman, yang masing-masing memiliki kelebihan maupun kekurangannya.
Rujukan
[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne. 2002. Applied Operating Systems. Sixth Edition. John Wiley & Sons.
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.
[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall.
[WEBAmirSch2000] YairTheo AmirSchlossnagle. 2000. Operating Systems 00.418: Memory Management – http://www.cs.jhu.edu/ ~yairamir/ cs418/ os5/ . Diakses 29 Mei 2006.
[WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to Programming Systems: Memory Paging – http://www.cs.princeton.edu/ courses/ archive /
spring02/ cs217/ lectures/ paging.pdf . Diakses 13 Juni 2013
[WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables – http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html . Diakses 13 Juni 2013
[WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture
Notes Part 7 – http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html . Diakses 13 Juni 2013

 
 
 
 

Selasa, 30 April 2013

MUTUAL EXCLUSION & DEADLOCK

MUTUAL EXCLUSION

Mutual exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada satu interval waktu tertentu. Sumber daya yang tidak dapat dipakai bersama pada saat bersamaan. Sering terjadi pada peralatan pencetakan (printer). Daemon printer adalah proses yang melakukan penjadwalan dan pengendalian pencetakan berkas-berkas di printer. Ruang disk ini disebut direktori spooler. Direktori spooler membagi disk menjadi sejumlah slot. Slot-slot diisi berkas yang akan dicetak. Terdapat variabel in yang menunjuk slot bebas pada ruang disk yang akan dipakai untuk menyimpan berkas yang ingin dijadwalkan untuk dicetak. Bagian program yang sedang mengakses memory atau sumber daya yang dipakai bersama disebut critical section. Jika proses pada critical section memblokir proses-proses lain dalam antrian, maka akan terjadi startvation dan deadlock.

Kesuksesan proses-proses konkurensi memerlukan pendefinisian critical section dan memaksakan mutual exclusion di antara proses-proses konkuren yang sedang berjalan. Pemaksaan mutual exclusion merupakan landasan pemrosesan konkuren. Fasilitas atau kemampuan menyediakan dukungan mutual exclusion harus memenuhi kriteria sbb:


a. Mutual exclusion harus dijamin, bahwa tidak ada proses lain, kecuali dirinya sendiri. Di sini terjadi proses tunggal.
b. Proses yang berada di noncritical section, dilarang mem-blocked proses-proses lain yang ingin masuk critical section. Hal ini bisa terjadi startvation.
c. Harus dijamin bhwa proses yang ingin masuk critical section tidak menunggu selama waktu yang tak terhingga. Ini bisa mengakibatkan masalah deadlock dan antrian proses bertambah panjang.
d. Ketika tidak ada proses pada critical section, maka proses yang ingin masuk critical section harus ijinkan masuk tanpa waktu tunda. 
e. idak ada asumsi mengenai kecepatan relatif proses atau jumlah yang ada. 
f. Proses hanya tinggal pada critical section selama satu waktu yang berhingga

Beberapa metode yang diusulkan untuk menjamin Mutual Exclusion, antara lain:
 

Metode Variable Lock

Locking adalah salah satu mekanisasi pengontrol konkuren. Konsep dasar : pada saat suatu transaksi memerlukan jaminan kalau record yang diinginkan tidak akan berubah secara mendadak, maka diperlukan kunci untuk record tersebut. Fungsi kunci (lock) adalah menjaga record tersebut agar tidak dimodifikasi transaksi lain.

Cara kerja dari kunci :
1. Pertama kita asumsikan terdapat 2 macam kunci :
- Kunci X : kunci yang eksklusif. 
- Kunci S : kunci yang digunakan bersama-sama.

2. Jika transaksi A menggunakan kunci X pada record R, maka permintaan dari transaksi B untuk suatu kunci pada R ditunda, dan B harus menungggu sampai A melepaskan kunci tersebut. 
3. Jika transaksi A menggunakan kunci S pada record R, maka :
  •      Bila transaksi B ingin menggunakan kunci X, maka B harus menunggu sampai A melepaskan kunci tersebut. 
  •      Bila transaksi B ingin menggunakan kunci S, maka B dapat menggunakan kunci S bersama A.
    Tabel Kunci
   
4. Bila suatu transaksi hanya melakukan pembacaan saja, secara otomatis ia memerlukan kunci S baca (S). Bila transaksi tersebut ingin memodifikasi record maka secara otomatis ia memerlukan kunci X memodifikasi (X). Bila transaksi tersebut sudah menggunakan kunci S, setelah itu ia akan memodifikasi record, maka kunci S akan dinaikan ke level kunci X. 
5. Kunci X dan kunci S akan dilepaskan pada saat synchpoint (synchronization point). Synchpoint menyatakan akhir dari suatu transaksi dimana basis data berada pada state yang konsisten. Bila synchpoint ditetapkan maka :
  • Semua modifikasi program menjalankan operasi commit atau rollback. 
  • Semua kunci dari record dilepaskan.


Metode ini sederhana ketika proses masuk critical section lebih dahulu memeriksa variable lock.
  • Jika variable lock bernilai 0, proses men-set variable locknya menjadi 1 kemudian masuk ke dalam critical section. 
  • Jika variable lock bernilai 1, maka proses menunggu sampai nilai variable lock nya menjadi 0.
  •  Metode ini tidak menjamin proses tidak masuk critical section yang telah dimasuki proses lain.  
  • Metode bergantian secara ketat
    Metode ini mengasumsikan dapat mengalir masuk critical section secara bergantian terus-menerus. Metode ini melakukan refleksi terhadap variabel yang berfungsi untuk memenuhi critical section.

DEADLOCK
Deadlock adalah suatu kondisi dimana dua proses atau lebih tidak dapat meneruskan eksekusinya oleh pemroses. Pada umumnya deadlock terjadi karena proses mengalami startvation, yaitu suatu job yang sedang dieksekusi dan eksekusi job tersebut tidak ada hentinya, tidak diketahui kapan berhentinya proses tersebut atau bahkan job yang antri bisa dikatakan mempunyai status mati, padahal proses-proses lain sedang menunggu sumber daya proses.
Deadlock merupakan kondisi terparah karena banyak proses dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar.
  • Resource
    Sistem operasi di sini berperan sebagai pengatur berbagai tipe resource yang berlainan,  krena  pada  dasarnya  proses-proses  maupun  job-job  tersebut  ingin mengakses resource yang sama. Shareable resource misalnya printer, tape drive.
  •  Karakteristik DeadlockKondisi yang dapat menimbulkan terjadinya deadlock:
    1. 
    Mutual exclusion.
    Apabila proses telah menggunakan suatu resource, mka tidak boleh ada proses lain yang menggunakan resource tsb. Hanya satu proses yang dapat menggunakan sebuah resource pada satu waktu.
    2.
    Hold & Wait.
    Pada suatu proses sedang mengakses suatu resource, proses tsb dapat
    meminta ijin untuk mengakses resource lain yang dipakai oleh proses lain.
    3.
    No Preemption.
    Jika suatu proses meminta ijin untuk mengakses resource, sementara resource tersebut tidak tersedia, maka permintaan ijin tidak dapat dibatalkan.
    4.
    Circular Wait Condition.
    Jika proses P0 sedang mengakses Resource R1 dan minta ijin untuk mengakses resource R1 dan minta ijin untuk mengakses resource R2, dan pada saat yang bersamaan P1 sedang mengakses resource R2 dan mint ijin untuk mengakses R1.
Metode Mengendalikan Deadlock

1.      Menggunakan suatu protokol untuk meyakinkan bahwa sistem tidak akan pernah mengalami deadlock.
2.      Mengijinkan sistem mengalami deadlock, namun kemudian harus segera dapat memperbaikinya.
3.      Mengabaikan semua masalah dan menganggap deadlock tidak akan pernah terjadi lagi di dalam sistem.

Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yaitu:

a.  Mengabaikan adanya  deadlock.
b.  Memastikan bahwa  deadlock tidak akan pernah  ada, baik  dengan metode Pencegahan, dengan mencegah empat kondisi  deadlock agar tidak akan  pernah terjadi. Metode Menghindari  deadlock, yaitu mengizinkan  empat kondisi deadlock,  tetapi  menghentikan setiap proses yang kemungkinan mencapai  deadlock.
c.  Membiarkan deadlock  untuk terjadi, pendekatan ini membutuhkan dua metode yang  saling mendukung, yaitu:
-       Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi.
-       Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.

Pencegahan Deadlock

1.      Mutual exclusion.
Harus tetap menjaga resource-resource yang bersifat non-shareable. Yaitu, proses menahan sebuah resource, proses lain yang meminta resource tsb harus menunggu sampai proses melepaskannya. Jika terjadi pada perangkat I/O dan berkas, maka sulit untuk menghindari mutual exclusion pada sumber daya non shareable.
2.      Hold & Wait.
Apabila suatu proses minta ijin untuk mengakses suatu resource, maka proses tersebut tidak boleh membawa resource yang lainnya. Sebleum proses meminta resource, maka harus melepas semua resource yang dibawa.
3.      Non Preemption.
Jika suatu proses minta ijin mengakses resource, sementara resource tersebut tidak dapat dipenuhi secepatnya, maka proses tersebut harus membebaskan semua resourcenya terlebih dahulu.
4.      Circular Wait.
Memberi nomor pada setiap resource yang ada, dan setiap resource hanya boleh mengakses resource2 secara berurutan.
5.      Untuk menghindari deadlock ikuti prinsip preemptive.

Tabel. Deadlock



sumber : iwansantosa.files.wordpress.com/2009/04/makalah-konkurensi-2.doc (1-5-13 pukul 00.30)




Selasa, 23 April 2013

Jalur Pendakian ke Puncak Merapi via Selo


I. Jalur Selo (1600 m dpl)Jalur ini mulai pada ketinggian ±1600 m merupakan lintasan terpendek menuju puncak, membutuhkan waktu rata-rata 4 jam. Pendakian dimulai dari Joglo II di atas Desa Plalangan, Kec. Selo, Kab. Boyolali. Ditempat ini disediakan tempat parkir yang cukup luas.




A. Terminal 1, Selokopo Ngisor (2000 m dpl )

Awal pendakian akan melewati jalan setapak yang kanan kirinya merupakan tanah pertanian penduduk. Kurang Iebih 30 menit, kita akan masuk kawasan hutan. Ada 2 percabangan menuju Selokopo Ngisor. Bila kita ambil arah kanan, akan melalui punggungan yang banyak tanjakan. Bila kita ambil arah kiri, kita akan melewati sisi tebing. Jalur ini awalnya agak datar, membelok, kemudian menemui percabangan lagi. Bila ambil jalur kanan, kemudian menanjak, berarti kita berada pada jalur menuju terminal I. Jalannya tidak curam. Menjelang sampai di terminal I, ada tanjakan yang tajam, sekitar 15 menit kita akan sampai di Selokopo Ngisor, pada elevasi 1800 M dpl. Apabila mengambil percabangan kedua yaitu ke kiri, kita akan melalui jalur Pogog. Jalur ini akan memotong lembah, kemudian naik melalui punggungan di sebelah timur Selokopo. Jalur ini akhirnya akan menyatu lagi pada jalur ke puncak di atas Selokopo Nduwur. 
 


B. Terminal II, Selokopo Nduwur (2400 m dpl )
 

Jalan menuju Selokopo Nduwur cukup tajam, melalui lereng yang banyak batuan lepas. Vegetasi sudah mulai berkurang. Dari terminal I diperlukan waktu sekitar 1 jam. Disini akan dijumpai titik triangulasi sebagai referensi pengukuran geodetik. 

C. Terminal III, Pasar Bubar ( 2600 m dpi )
 

Dari Selokopo Nduwur, jalannya tidak terjal. Jalan mulai naik tajam mendekati punggungan lava Gajah Mungkur. Setelah itu berbelok ke kiri agak datar menuju Pasar Bubar. Di tempat ini para pendaki mengambil istarahat panjang sebelum melanjutkan perjalanan.
Perjalanan selanjutnya mendaki Gunung Anyar menuju puncak Merapi. Kelerengannya tajam >70°. Dilihat dari Pasar Bubar, arah menuju puncak sedikit serong ke arah kiri (timur). Permukaan jalan tersusun atas material lepas. Mendekati puncak, bau belerang mulai menyengat tapi tidak berbahaya. Kita akan menjumpai titik-titik solfatara dengan suhu 80° C dan selalu berasap. Setelah itu kita akan sampai ditebing Kawah Mati yang terbentuk oleh letusan 1931. Kemudian berbelok ke kanan (barat) menuju puncak sekitar 5 menit, di sini kita akan jumpai tempat datar yang cukup luas, di bawah puncak Garuda. Kita bisa melihat pemandangan menakjubkan. Beberapa gunungapi utama di Jawa Tengah bisa dilihat diantaranya Sundoro, Sumbing, Pegunungan Dieng, dan Gunung Slamet di horison barat. Merbabu dapat dilihat di sebelah utara dan Lawu di sebelah Timur.