Kamis, 28 Mei 2015

Penjadwalan Disk


Penjadwalan disk merupakan salah satu hal yang sangat penting dalam mencapai efisiensi perangkat keras. Bagi disk drives, efisiensi dipengaruhi oleh kecepatan waktu akses dan besarnya disk bandwith. Waktu akses memiliki dua komponen utama yaitu waktu pencarian dan waktu rotasi disk( rotational latency). Waktu pencarian adalah waktu yang dibutuhkan disk arm untuk menggerakkan head ke bagian silinder disk yang mengandung sektor yang diinginkan. Waktu rotasi disk adalah waktu tambahan yang dibutuhkan untuk menunggu perputaran disk agar head dapat berada di atas sektor yang diinginkan. Disk bandwith adalah total jumlah bytes yang ditransfer dibagi dengan total waktu dari awal permintaan transfer sampai transfer selesai. Kita bisa meningkatkan waktu akses dan bandwidth dengan menjadwalkan permintaan dari I/O dalam urutan tertentu.

Apabila suatu proses membutuhkan pelayanan I/O dari atau menuju disk, maka proses tersebut akan melakukan system call ke sistem operasi. Permintaan tersebut membawa beberapa informasi, antara lain:
1.    Apakah operasi input atau output.
2.    Alamat disk untuk proses tersebut.
3.    Alamat memori untuk proses tersebut
4.    Jumlah bytes yang akan ditransfer

Penjadwalan SCAN dan C-SCAN

Pada algoritma SCAN, head bergerak ke silinder paling ujung dari disk. Setelah sampai disana maka headakan berbalik arah menuju silinder di ujung yang lainnya. Head akan melayani permintaan yang dilaluinya selama pergerakannya ini. Algoritma ini disebut juga sebagai Elevator Algorithm karena sistem kerjanya yang sama seperti yang digunakan elevator di sebuah gedung tinggi dalam melayani penggunanya. Elevator akan melayani pengguna yang akan menuju ke atas dahulu sampai lantai tertinggi, baru setelah itu dia berbalik arah menuju lantai terbawah sambil melayani penggunanya yang akan turun atau sebaliknya. Jika melihat analogi yang seperti itu maka dapat dikatakan head hanya melayani permintaan yang berada di depan arah pergerakannya. Jika ada permintaan yang berada di belakang arah geraknya, maka permintaan tersebut harus menunggu sampai head menuju silinder di salah satu disk, lalu berbalik arah untuk melayani permintaan tersebut.

Jika head sedang melayani permintaan silinder 25, dan arah pergerakan disk arm-nya sedang menuju ke silinder yang terkecil, maka permintaan berikutnya yang akan dilayani secara berurutan adalah 20 dan 10 lalu menuju ke silinder 0. Setelah sampai disini head akan berbalik arah menuju silinder yang terbesar yaitu silinder 99. Dan dalam pergerakannya itu secara berurutan head akan melayani permintaan 35, 45, 50, 65, 80, 85, dan 90. Sehingga total pergerakan head-nya adalah 115 silinder.

Salah satu behavior yang dimiliki oleh algoritma ini adalah, dia memiliki batas atas untuk total pergerakanhead-nya, yaitu 2 kali jumlah silinder yang dimiliki oleh disk. Jika dilihat dari cara kerjanya yang selalu menuju ke silinder terujung, maka dapat dilihat kelemahan dari algoritma ini yaitu ketidakefisienannya. Mengapa head harus bergerak ke silinder 0, padahal sudah tidak ada lagi permintaan yang lebih kecil dari silinder 10?. Bukankah akan lebih efisien jika head langsung berbalik arah setelah melayani permintaan silinder 10.



Penjadwalan SCAN

Kelemahan lain dari algoritma SCAN adalah dapat menyebabkan permintaan lama menunggu pada kondisi-kondisi tertentu. Misalkan penyebaran banyaknya permintaan yang ada di queue tidak sama. Permintaan yang berada di depan arah pergerakan head sedikit sedangkan yang berada di ujung satunya lebih banyak. Maka head akan melayani permintaan yang lebih sedikit (sesuai arah pergerakannya) dan berbalik arah jika sudah sampai di ujung disk. Jika kemudian muncul permintaan baru di dekat head yang terakhir, maka permintaan tersebut akan segera dilayani, sehingga permintaan yang lebih banyak yang berada di ujung silinder yang satunya akan semakin kelaparan. Jadi, mengapa head tidak melayani permintaan-permintaan yang lebih banyak itu terlebih dahulu? Karena adanya kelemahan inilah maka tercipta satu modifikasi dari algoritma SCAN, yaitu C-SCAN yang akan dibahas berikutnya.
Algoritma C-SCAN atau Circular SCAN merupakan hasil modifikasi dari SCAN untuk mengurangi kemungkinan banyak permintaan yang menunggu untuk dilayani. Perbedaan yang paling mendasar dari kedua algoritma ini adalah pada behavior saat pergerakan head yang berbalik arah setelah sampai di ujung disk. Pada C-SCAN, saat head sudah berada di silinder terujung diskhead akan berbalik arah dan bergerak secepatnya menuju silinder di ujung disk yang satu lagi, tanpa melayani permintaan yang dilalui dalam pergerakannya. Sedangkan pada SCAN akan tetap melayani permintaan saat bergerak berbalik arah menuju ujung yang lain.
Untuk contoh permintaan seperti SCAN, setelah head sampai di silinder 99 (permintaan silinder 35, 45, 50, 65, 80, 85 dan 90 telah dilayani secara berurutan), maka head akan secepatnya menuju silinder 0 tanpa melayani silinder 20 dan 10. Permintaan tersebut baru dilayani ketika head sudah berbalik arah lagi setelah mencapai silinder 0.


Penjadwalan CSCAN

Jumat, 08 Mei 2015

Memory Management



Memory management adalah management untuk membagi suatu memory sehingga dapat digunakana atau diakomodasi oleh multiple proses

Memory management requirement       :
1.       Relocation
Dalam multiprogramming, main memory yang tersedia akan membagi memory tersebut ketika terdpaat banyak proses oleh sebab itu programmer tidak mengetahui dimana proses dieksekusi, karena letak dilakukannya eksekusi dapat berpindah-pindah. Oleh sebab itu kita perlu me-relokasi proses yang keluar dengan proses yang masuk di tempat atau diletakkan dalam meory yang sama, unnutk tetap memaksimalkan kerja dari memory
2.       Protection
Melakukan proteksi sehingga proses tidak dapat menghentikan proses lain yang sedang berjalan di daerah memory tertentu tanpa izin
3.       Sharing
Setiap proses saling berbagi memory, yang meaksudkan dimana hendaknya kita mengelompokkan proses-proses yang menggunakan struktur data yang sama untuk dapat diletakkan di tempat yang sama
4.       Logical operation
Program dibuat dalam bentuk modul atau fungsi, dan diletakkan berurutan karena biasanya bentuk dari memory adalah liner atau berurutan dan hendaknya setiap module dapat di compile secara independent
5.       Physical organization
Program dibuat berdasarkan memorynya, tergantung tingkatan dari program tersebut, jika ingin yang cepat maka menggunaka main memory akan tetapi dengan cost atau biaya yang relafit tinggi, atau jika ingin biaya yang lebih rendah yaitu dengan secondary memory, tetapi dengan kecepatan yang lebih rendah

Memory Partitioning      :
1.       Fix partitioning
Pembagian memory sudah pasti atau sudah fix ditentukan oleh OS
2.       Dynamic partitioning
Pembagian memory dilakukan secara dinamis yang disesuaikan dengan proses yang dikerjakan atau dengan ukuran dari prosesnya

Memory allocation algorithm      :
1.       First fit
2.       Next fit
3.       Best fit
4.       Worst fit
5.       Quick fit
6.       Buddy system

Deadlock



Deadlock merupakan suatu kondisi ketika terdapat proses-proses yang :
a.       Saling memperebutkan
b.      Saling menunggu
c.       Saling menghalangi



Kondisi Resource Deadlock
a.       Mutual exclusion: kondisi pada saat resource hanya dapat digunakan oleh resource
  1. Hold and wait:  kondisi pada saat proses tersebut sedang menggunakan resource, tapi proses tersebut juga sedang menggunakan resource
  2. No preemption:  kondisi pada saat tidak dapat meng-interrupt proses yang sedang menggunakan resource, ajdi harus menunggu samapai proses tersebut  melepas resourcenya
  3. Circular wait:  kondisi ketika proses saling menuggu resource yang lain, sehingga membentuk lingkaran
Solusi untuk mengatasi jenis-jenis deadlock        :
1.       Mutual exclusion
Dengan mmebuat perancangan atau key, yang memungkin dimana hanya ada satu yang dapat menulis, tapi bisa terdapat multiple access yang dapat mebaca
2.       Hold and wait
Setiap proses yang hendak meminta resource lain hendaknya melepas resource yang ia pakai terlebih dahulu, sebelum meminta resource lain
3.       No preemption
Jika terdapat suatu proses yang meminta resource dari proses lain, OS hendaknya me-preempt proses yang meminta resource, dan mengalihkannya untuk menggunakan resource yang lain
4.       Circular wait
Solusinya mirip dengan hold and wait, dimana hendaknya proses yang meminta resource harus melepaskan resourcenya terlebih dahulu sebelum meminta resource yang lain

Gambar deadlock modelling       :

Contoh deadlock              :


Solusi deadlock :

Srategi untuk mengatasi deadlock            :
1.       Gunakan Ostrich algorithm untuk menolak masalah (Resource graph allocation)
2.       Lakuakan deteksi dan pemulihan
3.       Hindari pengalokasian resource secara dinamis
4.       Lakukan pencegahan dengan memikirkan kondisi kondisi yang mungkin terjadi.

Cara melakukan deadlock avoidance :
1.       Kita perlu mengetahui terlebih dahulu maximum resource yang ada agar disesuaikan dengan jumlah resource yang dibutuhkan
2.       Buat blocking ketika resource sedang digunakan
3.       Tentukan jumlah pengalokasian

Deadlock avoidance dengan menggunakan Safe and Unsafe state :