Sabtu, 26 Mei 2012

PENJADWALAN DISK


Penjadwalan FCFS
Bentuk algoritma penjadwalan disk yang paling sederhana adalah First Come First Served (FCFS). Sistem kerja dari algoritma ini adalah melayani permintaan yang lebih dulu datang di queue. Algoritma ini pada hakekatnya adil bagi permintaan M/K yang mengantri di queue karena penjadwalan ini melayani permintaan sesuai waktu tunggunya di queue. Tetapi yang menjadi kelemahan algoritma ini adalah bukan merupakan algoritma dengan layanan yang tercepat. Sebagai contoh, misalnya di queue disk terdapat antrian permintaan blok I/O di silinder


Gambar Penjadwalan FCFS
85, 35, 10, 90, 45, 80, 20, 50, 65 secara berurutan. Jika posisi head awal berada pada silinder 25, maka pertama kali head akan bergerak dari silinder 25 ke 85, lalu secara berurutan bergerak melayani permintaan di silinder 35, 10, 90, 45, 80, 20, 50, dan akhirnya ke silinder 65. sehingga total pergerakanhead-nya adalah 400 silinder.

Penjadwalan SSTF
Shortest-Seek-Time-First (SSTF) merupakan algoritma yang melayani permintaan berdasarkan waktu pencarian yang paling kecil dari posisi head terakhir. Sangat beralasan untuk melayani semua permintaan yang berada dekat dengan posisi head yang sebelumnya, sebelum menggerakan head lebih jauh untuk melayani permintaan yang lain.


Gambar Penjadwalan SSTF
Untuk contoh permintaan di queue kita, permintaan yang terdekat dari head awal (25) adalah permintaan silinder 20. maka silinder itu akan dilayani terlebih dahulu. Setelah head berada di silinder 20, maka permintaan yang terdekat adalah silinder 10. Secara berurutan permintaan silinder berikutnya yang dilayani adalah silinder 35, lalu 45, 50, 65, 80, 85, dan akhirnya silinder 90. dengan menggunakan algoritma ini, maka total pergerakan head-nya menjadi 95 silinder. Hasil yang didapat ternyata kurang dari seperempat jarak yang dihasilkan oleh penjadwalan FCFS

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 disk, head 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 C-SCAN

Pemilihan Algoritma Penjadwalan

Performa dari suatu sistem biasanya tidak terlalu bergantung pada algoritma penjadwalan yang kita pakai, karena yang paling mempengaruhi kinerja dari suatu sistem adalah jumlah dan tipe dari pemintaan. Dan tipe permintaan juga sangat dipengaruhi oleh metoda pengalokasian file, lokasi direktori dan indeks blok. Karena kompleksitas ini, sebaiknya algoritma penjadwalan disk diimplementasikan sebagai modul yang terpisah dari OS, sehingga algoritma tersebut bisa diganti dengan algoritma lain sesuai dengan jumlah dan tipe permintaan yang ada. Namun biasanya, OS memiliki algoritma default yang sering dipakai, yaitu SSTF.
Penerapan algoritma penjadwalan di atas berdasarkan hanya pada jarak pencarian saja. Tapi untuk diskmodern, selain jarak pencarian, rotation latency (waktu tunggu untuk sektor yang diinginkan untuk berrotasi di bawah disk head) juga sangat berpengaruh. Tetapi algoritma untuk mengurangi rotation latency tidak dapat diterapkan oleh OS, karena pada disk modern tidak dapat diketahui lokasi fisik dari blok-blok logikanya. Tapi masalah rotation latency ini dapat ditangani dengan mengimplementasikan algoritma penjadwalan disk pada hardware controller yang terdapat dalam disk drive, sehingga kalau hanya kinerja I/O yang diperhatikan, maka sistem operasi dapat menyerahkan algoritma penjadwalan diskpada perangkat keras itu sendiri.
Dari seluruh algoritma yang sudah kita bahas di atas, tidak ada algoritma yang tebaik untuk semua keadaan yang terjadi. SSTF lebih umum dan memiliki perilaku yang lazim kita temui. SCAN dan C-SCAN memperlihatkan kemampuan yang lebih baik bagi sistem yang menempatkan beban pekerjaan yang berat pada disk, karena algoritma tersebut memiliki msalah starvation yang paling sedikit. SSTF sering dipakai sebagai algoritma dasar dalam OS.

RAID


PENGERTIAN RAID
RAID, singkatan dari Redundant Array of Independent Disks merujuk kepada sebuah teknologi di dalam penyimpanan data komputer yang digunakan untuk mengimplementasikan fitur toleransi kesalahan pada media penyimpanan komputer (terutama hard disk) dengan menggunakan cara redundansi (penumpukan) data, baik itu dengan menggunakan perangkat lunak, maupun unit perangkat keras RAID terpisah. Kata “RAID” juga memiliki beberapa singkatan Redundant Array of Inexpensive Disks, Redundant Array of Independent Drives, dan juga Redundant Array of Inexpensive Drives. Teknologi ini membagi atau mereplikasi data ke dalam beberapa hard disk terpisah. RAID didesain untuk meningkatkan keandalan data dan meningkatkan kinerja I/O dari hard disk.
RAID juga merupakan organisasi disk memori yang mampu menangani beberapa disk dengan sistem akses paralel dan redudansi ditambahkan untuk meningkatkan reliabilitas. Kerja paralel ini menghasilkan resultan kecepatan disk yang lebih cepat.
KONSEP RAID
Sejak pertama kali diperkenalkan, RAID dibagi ke dalam beberapa skema, yang disebut dengan "RAID Level". Pada awalnya, ada lima buah RAID level yang pertama kali dikonsepkan, tetapi seiring dengan waktu, level-level tersebut berevolusi, yakni dengan menggabungkan beberapa level yang berbeda dan juga mengimplementasikan beberapa level proprietary yang tidak menjadi standar RAID.
RAID menggabungkan beberapa hard disk fisik ke dalam sebuah unit logis penyimpanan, dengan menggunakan perangkat lunak atau perangkat keras khusus. Solusi perangkat keras umumnya didesain untuk mendukung penggunaan beberapa hard disk secara sekaligus, dan sistem operasi tidak perlu mengetahui bagaimana cara kerja skema RAID tersebut. Sementara itu, solusi perangkat lunak umumnya diimplementasikan di dalam level sistem operasi, dan tentu saja menjadikan beberapa hard disk menjadi sebuah kesatuan logis yang digunakan untuk melakukan penyimpanan.
Ada beberapa konsep kunci di dalam RAID: mirroring (penyalinan data ke lebih dari satu buah hard disk), striping (pemecahan data ke beberapa hard disk) dan juga koreksi kesalahan, di mana redundansi data disimpan untuk mengizinkan kesalahan dan masalah untuk dapat dideteksi dan mungkin dikoreksi (lebih umum disebut sebagai teknik fault tolerance/toleransi kesalahan).
Level-level RAID yang berbeda tersebut menggunakan salah satu atau beberapa teknik yang disebutkan di atas, tergantung dari kebutuhan sistem. Tujuan utama penggunaan RAID adalah untuk meningkatkan keandalan/reliabilitas yang sangat penting untuk melindungi informasi yang sangat kritis untuk beberapa lahan bisnis, seperti halnya basis data, atau bahkan meningkatkan kinerja, yang sangat penting untuk beberapa pekerjaan, seperti halnya untuk menyajikan video on demand ke banyak penonton secara sekaligus.
Konfigurasi RAID yang berbeda-beda akan memiliki pengaruh yang berbeda pula pada keandalan dan juga kinerja. Masalah yang mungkin terjadi saat menggunakan banyak disk adalah salah satunya akan mengalami kesalahan, tapi dengan menggunakan teknik pengecekan kesalahan, sistem komputer secara keseluruhan dibuat lebih andal dengan melakukan reparasi terhadap kesalahan tersebut dan akhirnya "selamat" dari kerusakan yang fatal.
Teknik mirroring dapat meningkatkan proses pembacaan data mengingat sebuah sistem yang menggunakannya mampu membaca data dari dua disk atau lebih, tapi saat untuk menulis kinerjanya akan lebih buruk, karena memang data yang sama akan dituliskan pada beberapa hard disk yang tergabung ke dalam larik tersebut.
Teknik striping, bisa meningkatkan performa, yang mengizinkan sekumpulan data dibaca dari beberapa hard disk secara sekaligus pada satu waktu, akan tetapi bila satu hard disk mengalami kegagalan, maka keseluruhan hard disk akan mengalami inkonsistensi. Teknik pengecekan kesalahan / koreksi kesalahan juga pada umumnya akan menurunkan kinerja sistem, karena data harus dibaca dari beberapa tempat dan juga harus dibandingkan dengan checksum yang ada. Maka, desain sistem RAID harus mempertimbangkan kebutuhan sistem secara keseluruhan, sehingga perencanaan dan pengetahuan yang baik dari seorang administrator jaringan sangatlah dibutuhkan. Larik-larik RAID modern umumnya menyediakan fasilitas bagi para penggunanya untuk memilih konfigurasi yang diinginkan dan tentunya sesuai dengan kebutuhan.
Beberapa sistem RAID dapat didesain untuk terus berjalan, meskipun terjadi kegagalan. Beberapa hard disk yang mengalami kegagalan tersebut dapat diganti saat sistem menyala (hot-swap) dan data dapat diperbaiki secara otomatis. Sistem lainnya mungkin mengharuskan shutdown ketika data sedang diperbaiki. Karenanya, RAID sering digunakan dalam sistem-sistem yang harus selalu on-line, yang selalu tersedia (highly available), dengan waktu down-time yang, sebisa mungkin, hanya beberapa saat saja.
Patterson menulis lima buah RAID level di dalam papernya, pada bagian 7 hingga 11, dengan membagi ke dalam beberapa level, sebagai berikut:
• RAID level pertama: mirroring
• RAID level kedua : Koreksi kesalahan dengan menggunakan kode Humming
• RAID level ketiga : Pengecekan terhadap disk tunggal di dalam sebuah kelompok disk.
• RAID level keempat: Pembacaan dan penulisan secara independen
• RAID level kelima : Menyebarkan data dan paritas ke semua drive (tidak ada pengecekan terhadap disk tunggal)
TINGKATAN RAID
RAID level 0
RAID level 0 menggunakan kumpulan disk dengan striping pada level blok, tanpa redundansi. Jadi hanya menyimpan melakukan striping blok data ke dalam beberapa disk. Level ini sebenarnya tidak termasuk ke dalam kelompok RAID karena tidak menggunakan redundansi untuk peningkatan kinerjanya. Menggunakan kumpulan disk dengan striping pada level blok, tanpa redundansi. jadi hanya melakukan striping blok data kedalam beberapadisk. kelebihan level ini antara lain akses beberapa blok bisa dilakukan secara paralel sehingga bis lebih cepat. kekurangan antara lain akses perblok sama saja seperti tidak ada peningkatan, kehandalan kurang karena tidak adanya pembekc-upan data dengan redundancy. Berdasarkan definisi RAID sebagai redudancy array maka level ini sebenarnya tidak termasuk kedalam kelompok RAID karena tidak menggunakan redundansy untuk peningkatan kinerjanya.

RAID level 1RAID level 1 ini merupakan disk mirroring, menduplikat setiap disk. Cara ini dapat meningkatkan kinerja disk, tetapi jumlah disk yang dibutuhkan menjadi dua kali lipat, sehingga biayanya menjadi sangat mahal. Pada level 1 (disk duplexing dan disk mirroring) data pada suatu partisi hard disk disalin ke sebuah partisi di hard disk yang lain sehingga bila salah satu rusak , masih tersedia salinannya di partisi mirror. Merupakan disk mirroring, menduplikat data tanpa striping. Cara ini dapat meningkatkan kinerja disk, tapi jumlah disk yang dibutuhkan menjadi dua kali lipat kelebihannya antara lain memiliki kehandalan (reliabilitas) yang baik karena memiliki back up untuk tiap disk dan perbaikan disk yang rusak dapat dengan cepat dilakukan karena ada mirrornya. Kekurangannya antara lain biaya yang menjadi sangat mahal karena membutuhkan disk 2 kali lipat dari yang biasanya.

RAID level 2RAID level 2 ini merupakan pengorganisasian dengan error-correcting-code (ECC). Seperti pada memori di mana pendeteksian terjadinya error menggunakan paritas bit. Setiap byte data mempunyai sebuah paritas bit yang bersesuaian yang merepresentasikan jumlah bit di dalam byte data tersebut di mana paritas bit=0 jika jumlah bit genap atau paritas=1 jika ganjil. Jadi, jika salah satu bit pada data berubah, paritas berubah dan tidak sesuai dengan paritas bit yang tersimpan. Dengan demikian, apabila terjadi kegagalan pada salah satu disk, data dapat dibentuk kembali dengan membaca error-correction bit pada disk lain. Merupakan pengorganisasian dengan error correction code (ECC). Seperti pada memory dimana pendeteksian mengalami error mengunakan paritas bit. Sebagai contoh, misalnya misalnya setiap byte data, memiliki paritas bit yang bersesuaian yang mempresentasikan jumlah bit "1" didalm byte data tersebut dimana paritas bit = 0 jika bit genap atau paritas bit = 1 jika bit ganjil. Jadi, jika salah satu bit pada salah satu data berubah dan tidak sesuai dengan paritas bit yang tersimpan. Dengan demikian, apabila terjadi kegagalan pada salah satu disk, data dapat dibentuk kembali dengan membaca error correction bit pada disk lain. Kelebihannya antara lain kehandalan yang bagus karena dapat membentuk kembali data yang rusak dengan ECC tadi, dan jumlah bit redundancy yang diperlukan lebih sedikit jika dibandingkan dengan level 1 (mirroring). Kelemahannya antara lain prlu adanya perhitungan paritas bit, sehingga menulis atau perubahan data memerlukan waktu yang lebih lama dibandingkan dengan yang tanpa menggunakan paritas bit, level ini memerlukan disk khusus untuk penerapannya yang harganya cukup mahal.
RAID level 3RAID level 3 merupakan pengorganisasian dengan paritas bit interleaved. Pengorganisasian ini hampir sama dengan RAID level 2, perbedaannya adalah RAID level 3 ini hanya memerlukan sebuah disk redundan, berapapun jumlah kumpulan disk-nya. Jadi tidak menggunakan ECC, melainkan hanya menggunakan sebuah bit paritas untuk sekumpulan bit yang mempunyai posisi yang sama pada setiap disk yang berisi data. Selain itu juga menggunakan data striping dan mengakses disk-disk secara paralel. Merupakan pengorganisasian dengan paritas bit yang interleaved. Pengorganisasian ini hamper sama dengan RAID level 2, perbedaanya adalah pada level 3 ini hanya memerlukan sebuah disk redudan, berapapun kumpulan disknya, hal ini dapt dilakukan karena disk controller dapat memeriksa apakah sebuah sector itu dibaca dengan benar atau tidak (mengalami kerusakan atau tidak). Jadi tidak menggunakan ECC, melainkan hanya membutuhakan sebuah bit paritas untuk sekumpulan bit yang mempuntai sekumpulan bit yang mempunyai posisi yang sama pada setiap dis yang berisi data. Selain itu juga menggunakan data striping dan mengakses disk-disk secara parallel. Kelebihannya antara lain kehandalan (rehabilitas) bagus, akses data lebih cepat karena pembacaan tiap bit dilakukan pada beberapa disk (parlel), hanya butuh 1 disk redudan yang tentunya lebih menguntungkan dengan level 1 dan 2. kelemahannya antara lain perlu adanya perhitungan dan penulisan parity bit akibatnya performannya lebih rendah dibandingkan yang menggunakan paritas.

RAID level 4RAID level 4 merupakan pengorganisasian dengan paritas blok interleaved, yaitu menggunakan striping data pada level blok, menyimpan sebuah paritas blok pada sebuah disk yang terpisah untuk setiap blok data pada disk-disk lain yang bersesuaian. Jika sebuah disk gagal, blok paritas tersebut dapat digunakan untuk membentuk kembali blok-blok data pada disk yang gagal tadi. Kecepatan transfer untuk membaca data tinggi, karena setiap disk-disk data dapat diakses secara paralel. Demikian juga dengan penulisan, karena disk data dan paritas dapat ditulis secara paralel. Merupakan pengorganisasian dengan paritas blok interleaved, yaitu mengunakan striping data pada level blok, menyimpan sebuah parits blok pada sebuah disk yang terpisah untuk setiap blok data pada disk-disk lain yang bersesuaian. Jka sebuah disk gagal. Blok paritas tersebut dapat digunakan untuk membentuk kembali blok-blok data pada disk yang bisa lebih cepat karena bisa parlel dan kehandalannya juga bagus karena adanya paritas blok. Kelemahannya antara lain akses perblok seperti biasa penggunaan 1 disk., bahkan untuk penulisan ke 1 blok memerlukan 4 pengaksesan untuk membaca ke disk data yag bersangkutan dan paritas disk, dan 2 lagi untuk penulisan ke 2 disk itu pula (read-modify-read)

RAID level 5RAID level 5 merupakan pengorganisasian dengan paritas blok interleaved tersebar. Data dan paritas disebar pada semua disk termasuk sebuah disk tambahan. Pada setiap blok, salah satu dari disk menyimpan paritas dan disk yang lainnya menyimpan data. Sebagai contoh, jika terdapat kumpulan dari 5 disk, paritas blok ke n akan disimpan pada disk (n mod 5) + 1; blok ke n dari empat disk yang lain menyimpan data yang sebenarnya dari blok tersebut. Sebuah paritas blok tidak menyimpan paritas untuk blok data pada disk yang sama, karena kegagalan sebuah disk akan menyebabkan data hilang bersama dengan paritasnya dan data tersebut tidak dapat diperbaiki. Penyebaran paritas pada setiap disk ini menghindari penggunaan berlebihan dari sebuah paritas disk seperti pada RAID. Merupakan pengorganisasian dengan paritas blok interleaved terbesar. Data dan paritas disebr pada semua disk termasuk sebuah disk tambahan. Pada setiap blok, salah satu dari disk menyimpan paritas dan disk yang lainnya menyimpan data. Sebagai contoh, jika terdapt kumpulan dari 5 disk, paritas paritas blok ke n akan disimpan pada disk (n mod 5) +1, blok ke n dari 4 disk yang lain menyimpan data yang sebenarnya dari blok tersebut. Sebuah paritas blok tidak disimpan pada disk yang sama dengan lok-blok data yang bersangkutan, karena kegagalan disk tersebut akan menyebabkan data hilang bersama dengan paritasnya dan data tersebut tidak dapat diperbaiki. Kelebihannya antara lain seperti pada level 4 ditambah lagi dengan pentebaran paritas seoerti ini dapat menghindari penggunaan berlebihan dari sebuah paritas bit seperti pada RAID level 4. kelemahannya antara lain perlunya mekanisme tambahan untuk penghitungan lokasi dari paritas sehingga akan mempengaruhi kecepatan dalam pembacaan blok maupun penulisannya.

RAID level 6
Disebut juga redudansi P+Q, seperti RAID level 5, tetapi menyimpan informasi redudan tambahan untuk mengantisipasi kegagalan dari beberapa disk sekaligus. RAID level 6 melakukan dua perhitungan paritas yang berbeda, kemudian disimpan di dalam blok-blok yang terpisah pada disk-disk yang berbeda. Jadi. Jika disk data yang digunakan sebanyak n buah disk, maka jumlah disk yang dibutuhkan pada RAID level 6 ini adalah n+2 disk. Keuntungan dari RAID level 6 ini adalah kehandalan data yang sangat tinggi, karena untuk menyebabkan data hilang, kegagalan harus terjadi pada tiga buah disk dalam interval rata-rata data mean time to repair (MTTR). Kerugiannya yaitu penalty waktu pada saat penulisan data, karena setiap penulisan yang dilakukan akan mempengaruhi dua buah paritas blok.




RAID level 0+1 dan 1+0
Raid level 0+1 dan 1+0. Ini merupakan kombinasi dari RAID level 0 dan RAID level 1. RAID level 0 memiliki kinerja yang baik., sedangkan RAID level 1 memiliki kehandalan. Namun, dalam kenyataannya kedua hal ini sama pentingnya. Dalam RAID 0+1, sekumpulan disk di strip, kemudian strip tersebut di-mirror ke disk-disk yang lain, menghasilkan strip-strip data yang sama. Kombinasi lainnya adalah RAID 1+0, dimana disk-disk mirror secara berpasangan, dan kemudian hasil pasangan mirror-nya di-stri. RAID 1+0 ini mempunyai keuntungan lebih dibandingkan dengan RAID 0+1. sebagai contoh, jika sebuah disk gagal pada RAID 0+1, seluruh disknya tidak dapat di akses, sedangkan pada RAID 1+0, disk yang gagal tersebut tidak dapat diakses tetapi pasangan stripnya yang lain masih bisa, dan pasangan mirror-nya masih dapat diakses untuk menggantikannya sehingga disk-disk lain selain yang rusak masih bisa digunakan.

Jumat, 25 Mei 2012

UNIX SVR4 I/O


Buffer cache 
Buffer cache dalam UNIX secara esensial merupakan sebuah disket cache. Operasi dari I/O dengan disket, ditangani dengan buffer cache. Transfer data di antara buffer cache dan daerah proses user selalu terjadi  menggunakan DMA. Karena kedua buffer cache dan proses I/O berada dalam memori utama, fasilitasi DMA digunakan dalam kasus untuk melakukan pengopian memori ke memori.
Untuk mengelola cache buffer, tiga daftar dipelihara:
  • Daftar bebas : mendaftarkan seluruh slot dalam cache (sebuah slot yang direferensikan sebagai sebuah buffer dalam UNIX.
  • Daftar device : daftar dari seluruh buffer yang saat ini berhubungan dengan masing-masing disket.
  • Anteran driver I/O : mendaftarkan buffer yang saat ini  sedang digunakan menunggu untuk I/O  dalam sebuah device tertentu.


Antrian karakter.
Device berorientasi blok seperti sebuah disket dan tape, dapat secara efektif dilayani oleh buffer cache. Sebuah bentuk yang berbeda sesuai untuk device berorientasi karakter seperti terminal dan printer. Sebuah antrian karakter yang dituliskan oleh device I/O dan dibaca oleh prosesor atau dituliskan dalam proses dan dibaca oleh device. Antrean karakter hanya bisa dibaca sekali dan masing-masing dari karakter dibaca secara efektif kemudian dihancurkan. Hal ini kontras dengan buffer cache yang dibaca berkali-kali sehingga mengikuti model pembaca/penulis.
I/O yang Terbuffer
I/O yang tidak terbuffer sederhana merupakan DMA diantara device dan daerah proses selalu merupakan metode yang tercepat untuk sebuah proses guna melakukan I/O. untuk proses yang melakukan I/O yang tidak terbuffer yang dikunci dalam memori utama dan tidak dapat dipindahkan keluar. Ini mengurangi kesempatan untuk pemindahan dengan mengikatkan bagian memori utama, maka mengurangi kinerja sistem secara keseluruhan. Jika device I/O yang diikatkan dengan proses untuk durasi transfer yang membuat tidak tersedia untuk proses lainnya.
Device UNIX
UNIX di kenal dalam lima tipe dari device:  
  1.   Drive disket
  2.   Tape drive
  3.   Terminal
  4.   Garis komunikasi            
  5.   Printer






CACHE DISKET

CACHE DISKET

Istilah dari memori cache biasanya digunakan untuk menerapkan ke sebuah memori yang lebih kecil dan lebih cepat dibandingkan memori utama dan yang dihubungkan dengan memori utama dan prosesor. Cache memori mengurangi waktu akses memori dengan memperdalam prinsip lokalitas.
Prinsip yang sama dapat diterapkan ke memori disket. Khususnya, sebuah cache memeri merupakan sebuah buffer dalam memori utama untuk sektor disket. Cache mengandung sebuah kopi dari beberapa sektor dalam disket. Ketika sebuah permintaan I/O dibuat untuk sebuah sektor tertentu, sebuah pemeriksaan dibuat untuk menentukan bila sektor berada dalam cache disket. Jika demikian, maka permintaan dipenuhi melalui cache. Jika tidak, permintaan sektor dibaca ke dalam disket cache dari disket. Karena lokalitas referensi, ketika sebuah clock data di fetch dalam cache untuk memenuhi permintaan I/O tunggal, yang sepertinya akan direferensikan ke masa depan untuk blok yang sama.
DESAIN
Pertama, ketika sebuah permintaan I/O dipenuhi cache disket, data dalam sebuah disket cache harus dikirimkan ke proses yang diinginkan. Ini dapat dilakukan dengan mentrasnfer blok data dalam memori cache ke memori yang dinyatakan ke proses user atau cukup dengan menggunakan sebuah kemampuan memori share dan melewatkan sebuah pointer ke slot yang sesuai dalam disket cache.
Algoritma
  • Least Recently Used (LRU)

Menggantikan blok yang telah ada dalam stock blok dengan cache paling panjang tanpa referensi ke dirinya. Karena cache itu mempunyai sebuah stack blok dengan referensi yang paling sering direferensikan dalam bagian atas dari stack. Ketika sebuah blok dalam cache direferensikan, akan berpindah dalam bagian atas dari stack. ketika sebuah blok dibawa memori kedua(secondary), mengeluarkan blok yang berada dalam bagian bawah dari stack dan memasukkan ke blok yang akan datang dalam bagian atas dari stack.
Inti dari algoritma ini adalah membuang dokumen yang sudah lama tidak digunakan. Idenya adalah, dokumen yang sudah lama tidak digunakan, akan lebih kecil kemungkinannya untuk diambil  kembali, sehingga tempatnya dapat digantikan oleh dokumen baru yang kemungkinan akan diperlukan
kemudian. Algoritma ini dianggap mendekati agoritma yang optimal.
  • Least Frequently Used (LFU)

Algoritma ini akan mengganti dokumen yang mempunyai jumlah frekuensi penggunaan yang kecil. Jumlah dokumen yang aktif digunakan dianggap memiliki peluang paling besar untuk digunakan kembali.Algoritma ini memiliki kelemahan, karena dokumen yang pada awalnya aktif, tetapi lama tidak digunakan akan tetap dalam  cache walau sudah jarang penggunaannya.
  • First In First Out (FIFO)

Dasar dari algoritma ini adalah penggantian dokumen yang sudah lama berada dalam  cache. Dokumen yang sudah awal dianggap tidak akan
diambil lagi, sehingga digantikan oleh dokumen yang lebih baru . Kelemahannya adalah, algoritma ini akan membuang dokumen jika
waktunya telah habis, walaupun ia masih aktif digunakan .
  • Largest Size Used

Dalam algortima ini, dokumen yang memiliki ukuran paling besar akan dibuang terlebih dahulu. Idenya adalah  memasukkan sebanyak
mungkin dokumen ke dalam  cache sehingga kemungkinan hit akan lebih sering. Kelemahan algoritma ini jika ada dokumen yang populer namun ukurannya besar, maka dokumen itu akan terus tergantikan dalam cache. Cache  memiliki mekanisme untuk menentukan apakah suatu pencarian sudah pernah dilakukan atau belum. Cara yang umum digunakan adalah dengan mencocokkan apakah query yang sama sudah pernah dilakukan sebelumnya atau belum. Jika sudah pernah dilakukan, maka terjadi cache hit, lalu hasil penelusuran di dalam  cacheakan dikembalikan ke pengguna. Sementara, jika query belum pernah dilakukan, akan terjadi  cache miss, dan system akan mencari dokumen- dokumen hasil pencarian ke system.




Kamis, 24 Mei 2012

Akses Memori Langsung (DMA)


Manajemen I/O dan penjadwalan disket

Akses memori langsung (Direct Memory Acess (DMA)):
DMA mengontrol pertukaran data antara memori utama dan modul I/O. Prosesor mengirimkan permintaan untuk transfer dari sebuah blok data ke modul DMA dan di interupt setelah seluruh blok telah ditransfer.
Unit DMA mampu untuk menirukan prosesor dan tentunya mengambil alih kontrol sistem dari prosesor. Melakukan transfer dari memori melalui sistem bus. Umumnya, modul DMA harus menggunakan bus hanya ketika prosesor tidak membutuhkannya atau harus memaksakan prosesor untuk menunda operasi sementara. Teknik berikutnya adalah lebih umum dinyatakan ke sebuah pencurian siklus karena unit DMA berpengaruh untuk mencuri sebuah siklus bus.
Teknik DMA bekerja sebagai berikut : ketika prosesor menginginkan untuk membaca atau menuliskan satu blok dari data, prosesor akan mengeluarkan sebuah perintah untuk modul DMA dengan mengirimkan ke modul DMA informasi berikut:
  • apakah sebuah baca atau tulis yang dimintakan menggunakan kontrol baris baca atau tulis di antara prosesor dan modul DMA.
  • Alamat dari device I/O yang terlibat, mengomunikasikan dalam baris data.
  •  Lokasi awal dalam memori untuk membaca data atau menuliskan, dikomunikasikan dalam baris data dan disimpan oleh modul DMA dalam alamat registernya.
  •  Jumlah kata-kata yang dibaca atau dituliskan sekali lagi dikomunikasikan melalui baris data dan disimpan dalam bagian dari register data.

Prosesor kemudian melanjutkan dengan pekerjaan lainnya. Mendelegasikan operasi I/O ini ke modul DMA. Modul DMA mentransfer keseluruhan dari blok data saat itu juga ke atau dari memori tanpa melalui prosesor. Ketika transfer selesai, modul DMA mengirimkan sebuah sinyal interupt ke prosesor. Oleh karena itu, prosesor yang terlibat hanya dalam awal dan akhir transfer.
Mekanisme dari DMA dapat dikonfigurasikan dengan berbagai cara. Modul DMA berlaku sebagai prosesor pengganti menggunakan program I/O untuk mempertukarkan data di antara memori dan sebuah modul I/O melalui modul DMA. Konfigurasi ini untuk sementara tidak mahal, namun jelas tidak efisien. Jumlah yang dibutuhkan oleh siklus bus dapat dipotong secara substantif dengan mengintregasikan fungsi DMA dan I/O. Logika DMA sebenarnya merupakan bagian dari modul I/O atau mungkin modul yang terpisah yang mengontrol satu atau lebih dari modul I/O. Konsep ini dapat mengambil satu langkah lebih awal dengan menghubungkan modul I/O ke modul DMA menggunakan sebuah bus I/O. Ini mengurangi jumlah interface I/O dalam modul DMA ke satu dan menyediakan sebuah konfigurasi yang dapat diperluas. Pertukaran data di antara DMA dan modul I/O menempatkan sistem bus.





Buffering Input Output


Buffering
Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi.
Buffering dilakukan untuk tiga buah alasan. 
- Alasan pertama adalah untuk men-cope dengan kesalahan yang terjadi karena perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data. Sebagai contoh, sebuah file sedang diterima melalui modem dan ditujukan ke media penyimpanan di hard disk. Kecepatan modem tersebut kira-kira hanyalah 1/1000 daripada hard disk. Jadi buffer dibuat di dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari modem. Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer pertama dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer kedua, penulisan ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan berganti kembali memenuhi buffer pertama dan buffer kedua dipakai untuk menulis. Metode double buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus mengurangi kebutuhan waktu di antara mereka.
- Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan komputer, dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan dipecah ke paket-paket kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka di dalam buffer untuk disusun kembali.
- Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara buffer kernel data aplikasi merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi karena operasi ini karena clean semantics. Kita dapat memperoleh efek yang sama yang lebih efisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire dengan pintar.
a. singgel buffering
Model single-buffered menulis pixels secara langsung ke dalam memori framebuffer yang aktif hasil parsial kemudian terlihat ini adalah terutama nyata ketika berusaha untuk membuat animasimerupakan teknik paling sederhana. Ketika proses memberi perintah untuk perangkat I/O, sistem operasi menyediakan buffer memori utama sistem untuk operasi.Untuk perangkat berorientasi blok.Transfer masukan dibuat ke buffer sistem. Ketika transfer selesai, proses memindahkan blok ke ruang pemakai dan segera meminta blok lain. Teknik ini disebut reading ahead atau anticipated input. Teknik ini dilakukan dengan harapan blok akan segera diperlukan. Untuk banyak tipe komputasi, asumsi ini berlaku. Hanya di akhir pemrosesan maka blok yang dibaca tidak diperlukan.

b. doublle buffering
Teknik untuk menggambar grafik yang menunjukkan tidak ada (atau kurang) merobek ,meliuk dan artefak lainnya. Peningkatan dapat dibuat dengan dua buffer sistem.Proses dapat ditransfer ke/dari satu buffer sementara sistem operasi mengosongkan (atau mengisi) buffer lain. Teknik ini disebut double buffering atau buffer swapping. Double buffering menjamin proses tidak menunggu operasi I/O.Peningkatanini harus dibayar dengan peningkatan kompleksitas.

c. circular buffering
Seharusnya melembutkan aliran data antara perangkat I/O dan proses. Jika kinerja proses tertentu menjadi fokus kita, maka kita ingin agar operasi I/O mengikuti proses. Double buffering tidak mencukupi jika proses melakukan operasi I/O yang berturutan dengan cepat. Masalah sering dapat dihindari denga menggunakan lebih dari dua buffer. Ketika lebih dari dua buffer yang digunakan, kumpulan buffer itu sendiri diacu sebagai circulat buffer. Tiap bufferindividu adalah satu unit di circular buffer.



Utilitas dari Buffering

Buffering merupakan teknis mulus yang berfungsi dalam permintaan I/O. Namun, dalam jumlah buffering yang akan memungkinkan sebuah device I/O untuk tetap dalam bentuk sebuah prses yang tak hingga ketika permintaan rata-rata dari proses lebih besar daripada device I/O dapat dilayani. Namun, dalam sebuah lingkungan multiprogramming, ketika terdapat sebuah variasi dari aktivitas I/O dan sebuah variasi dari proses aktivitas untuk layanan, buffering merupakan satu pool yang dapat meningkatakan efisiensi sistem operasi dan kinerja proses individual.

Rabu, 23 Mei 2012

DEVICE I/O



Manajemen Sistem I/O

Sering disebut device manager. Menyediakan device driveryang umum sehingga operasi I/O dapat seragam (membuka, membaca, menulis,menutup). Contoh: pengguna menggunakan operasi yang sama untuk membaca berkas pada perangkat keras, CD-ROM dan floppy disk .
Komponen Sistem Operasi untuk sistem I/O :

  • Buffer : menampung sementara data dari/ ke perangkat I/O .
  • Spooling: melakukan penjadwalan pemakaian I/O sistem supaya lebih efisien (antrian dsb.).
  • Menyediakan driver: untuk dapat melakukan operasi “rinci” (detail) untuk perangkat keras I/O tertentu.
Manajemen sistem I/O merupakan aspek perancangan sistem operasi yang terluas disebabkan sangat beragamnya perangkat dan begitu banyaknya aplikasi dari perangkat- perangkat itu.
Sistem operasi bertanggung jawab dalam aktivitas yang berhubungan dengan manajemen sistem/perangkatI/O:




  • Mengirim perintah ke perangkat I/O agar menyediakan layanan.
  • Menangani interupsi perangakat I/O .
  • Menangani kesalahan pada perangakat I/O.
  • Menyediakan antarmuka ke pengguna.

Device Input/Output
Device eksternal yang terlibat dalam Input/Output dengan sistem komputer dibagi menjadi tiga kategori:

    ● Dapat dibaca Manusia  -> Sesuai untuk komunikasi dengan user komputer.
        Contoh :  Printer, Monitor, Keyboard, Mouse.
                ● Dapat dibaca Mesin  -> Sesuai untuk Komunikasi dengan peralatan elektronik.
                                Contoh :  Sensor, Controllers, actuators, disket.
                ● Komunikasi  -> Sesuai untuk komunikasi dengan device yang terpisah.
                                Contoh :  Digital line drivers, Modem.

Terdapat perbedaan yang besar antara kelas dan bahkan perbedaan di dalam masing-masing kelas. Di antara perbedaan  adalah sebagai berikut:
  • Tingkat Data : Perbedaan dari beberapa urutan besar diantara tingkat transfer data.
  • Aplikasi : Penggunaan dari sebuah device yang ditempatkan dalam sebuah software dan     sistem operasi utilitas pendukung. Aplikasi memiliki pengaruh dari algoritma penjadwalan disket.
  • Kompleksitas kontrol :  Printer membutuhkan interface kontrol yang relatif  sederhana,sedangkan sebuah disket lebih kompleks. Pengaruh dari perbedaan sistem operasi di filter ke beberapa bagian dari kompleksitas modul input/output yang mengontrol device.
  • Unit Transfer : Data di transfer sebagai arus byte atau karakter atau blok yang lebih besar.
  • Representasi Data :   Skema encoding dari data yang berbeda digunakan oleh device yang berbeda, termasuk perbedaan dalam kode karakter dan konvensi paritas.
  • Error conditions : Cara yang digunakan untuk melaporkan  konsekuensi, dan tersedianya jangkauan dari respons yang umumnya berbeda dari satu device ke device lainnya.



STRUKTUR LOGIKA DARI FUNGSI I/O


STRUKTUR LOGIKA DARI FUNGSI I/O


Secara umum lapisan yang lebih rendah berhubungan dengan skala waktu yang jauh lebih pendek. Beberapa bagian dari sistem operasi harus berinteraksi langsung dengan hardware dari komputer, bahkan dapat memiliki skala waktu sesingkat mungkin. Rincian dari organisasi akan bergantung dengan tipe dari device dan aplikasi. Struktur logika yang paling penting dinyatakan dalam gambar. Tentunya sebuah sistem operasi tertentu dapat tidak sesuai dengan struktur ini. Namun banyak sistem I/O yang nyatanya melakukan pendekatan I/O ini.
Lapisan yang terlibat adalah :
  1. Logika I/O : modul logika I/O berhubungan dengan device sebagai sumber logika dan tidak berhubungan dengan rincian kontrol device yang sebenarnya. Modul logika I/O diperhatikan dengan pengaturan fungsi dari I/O secara umum untuk kepentingan proses user, memungkinkan mereka untuk berhubungan dengan device dalam istilah dari identifikasi device dan perintah sederhana seperti buka, tutup, baca, tulis.
  2. Device I/O: permintaan operasi dan data ( karakter yang dibuffer record, dll) dikonversi ke dalam urutan yang bersesuaian dari instruksi I/O, kanal perintah dan urutan dari pengontrol. Teknik buffering mungkin digunakan untuk meningkatkan utilitasi.
  3. Penjadwalan dan kontrol : antrean yang sebenarnya dan penjadwalan dari operasi I/O terjadi dalam lapisan ini sebagaimana halnya dengan kontrol dari operasi. Oleh karena itu, interrupt ditangani dalam lapisan ini dan status dari I/O dikumpulkan dan dilaporkan. Ini merupakan lapisan dari software yang sebenarnya berinteraksi dengan modul I/O dan device hardware.
  4. Manajemen direktori : dalam lapisan ini, nama file simbolik dikonversikan ke identifier yang mereferensikan file langsung atau tidak langsung melalui sebuah file atau tabel indeks. Lapisan ini juga berhubungan dengan operasi dari user yang berpengaruh ke direktori file, seperti tambah, hapus, pengorganisasaian.
  5. Sistem file : lapisan yang berhubungan dengan struktur logika file dan dengan operasi yang dapat dinyatakan oleh user, seperti buka, tutup, baca, tulis. Hak akses juga dikelola dalam lapisan ini.
  6. Organisasi fisik : sebagaimana dengan alamta memori yang harus dikonversikan dalam alamat memori fisik, menggunakan segmentasi dan struktur paging referensi logika untuk file dan record yang harus dikonversikan ke alamat penyimpanan secondary, menggunakan jalur fisik dan struktur sektor device penyimpanan secondary. Alokasi daerah penyimpanan secondary dan buffer dan peyimpanan utama diperlakukan dalam lapisan  ini dengan baik.