Perangkat Keras I/O

Perangkat Keras I/O

 download bentuk pdf : pasword “akudisinidwi”

  1. 1.      Gambarkan diagram dari Interrupt Driven I/O Cycle.
  1. 2.      Sebutkan langkah-langkah dari transfer DMA!

Tiga langkah dalam transfer DMA:

  1. Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari device, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang di transfer.
  1. DMA controller memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di transfer.
  1. DMA controller meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
  1. 3.      Apakah perbedaan dari polling dan interupsi?

 

Polling

 

Busy-waiting/ polling adalah ketika host mengalami looping yaitu membaca status register secara terus-menerus sampai status busy di-clear. Pada dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak efisien ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit device yang siap untuk men-service, karena CPU processing yang tersisa belum selesai.

Interupsi

Mekanisme Dasar Interupsi

Ketika CPU mendeteksi bahwa sebuah controller telah mengirimkan sebuah sinyal ke interrupt request line (membangkitkan sebuah interupsi), CPU kemudian menjawab interupsi tersebut (juga disebut menangkap interupsi) dengan menyimpan beberapa informasi mengenai state terkini CPU–contohnyanilai instruksi pointer, dan memanggil interrupt handler agar handler tersebut dapat melayani controller atau alat yang mengirim interupsi tersebut.

  1. Apa hubungan arsitektur kernel yang di-thread dengan implemen tasi interupsi?

Kernel Dan Perlindungan    Kernel adalah suatu  program yang  dibedakan oleh  fakta bahwa  itu  selalu berjalan dan kodenya dieksekusi dengan akses perlakuan khusus untuk sesumber fisik pada komputer host- nya. Secara khusus hal itu dapat mengendalikan unit manajemen memori dan menetapkan processor register sehingga tidak ada kode lain yang boleh mengakses  sesumber fisik mesin kecuali dengan jalan yang bisa diterima.

Kebanyakan pengolah mempunyai suatu mode register perangkat keras yang menentukan apakah

instruksi mana yang dapat dieksekusi. Suatu kernel memroses eksekusi dengan processor dalam mode supervisor.

Kernel juga menetapkan ruang alamat untuk melindungi dirinya sendiri dan proses lain dari proses yang menyimpang. Suatu ruang alamat adalah suatu koleksi kumpulan range lokasi virtual memori. Suatu proses tidak bisa mengakses memori di luar ruang alamatnya. Ketika suatu proses mengeksekusi kode aplikasi, ia mengeksekusi dalam suatu user-level untuk aplikasi tersebut.

4. Proses Dan Thread

Suatu proses terdiri dari suatu execution environment bersama-sama dengan satu atau lebih thread. Suatu threads adalah abstraksi sistem operasi dari suatu aktivitas. Suatu execution environment merupakan unit manajemen sesumber. Suatu execution environment terdiri dari:

Ø suatu ruang alamat;

Ø thread sinkronization dan communication resource, misalnya semaphore;

Ø sesumber higher-level, seperti window dan open file.

Execution environment biasanya mahal untuk menciptakan dan mengatur, tetapi beberapa threads dapat digunakan secara bersama. Mereka dapat menggunakan secara bersama semua sesumber yang dapat diakses  di  antara  mereka.  Dengan  kata  lain,  suatu  execution  environment  menghadirkan                            wilayah perlindungan yang mengeksekusi threads.

Threads dapat diciptakan dan dihancurkan dengan dinamis jika dibutuhkan. Tujuan multiple thread adalah  untuk  memaksimalkan  derajat  concurent  eksekusi  antar  operasi,  hal  itu  memungkinkan  proses concurrent pada multiprosesor.

Interface Aplikasi I/O

  1. Kenapa dibutuhkan interface pada aplikasi I/O?

Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail peralatan-peralatan I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini, maka akan lebih mudah untuk membuat fungsi-fungsi standar (interface) untuk mengaksesnya. Lalu kemudian adanya device driver pada masing-masing peralatan I/O, berfungsi untuk enkapsulasi perbedaan-perbedaan yang ada dari masing-masing anggota kelas-kelas yang umum tadi. Device driver mengenkapsulasi tiap -tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum tadi (interface standar). Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem I/O pada kernel. Karena hal ini, subsistem I/O dapat bersifat independen dari hardware.

  1. Apa tujuan adanya device driver? Berikan contoh keuntungan yang kita dapatkan dengan adanya hal ini!

Device driver, umumnya akan dimuat ke dalam ruangan kernel (kernelspace) sistem operasi selama proses booting dilakukan, atau secara sesuai permintaan (ketika ada intervensi pengguna atau memasukkan sebuah perangkat plug-and-play). Beberapa sistem operasi juga menawarkan device driver yang berjalan di dalam ruangan pengguna (userspace) sistem operasi. Beberapa driver telah dimasukkan ke dalam sistem operasi secara default pada saat instalasi, tapi banyak perangkat keras, khususnya yang baru, tidak dapat didukung oleh driver-driver bawaan sistem operasi. Adalah tugas pengguna yang harus menyuplai dan memasukkan driver ke dalam sistem operasi. Driver juga pada umumnya menyediakan layanan penanganan interupsi perangkat keras yang dibutuhkan oleh perangkat keras.

Keuntungan :

–          Dapat menggunakan semaksimal mungkin pada suatu device yang telah terinstall

–          Memudahkan dalam pengerjaan

Kernel I/O Subsystem

  1. Apakah yang dimaksud dengan proses pooling? (jelaskan dengan jelas)

Busy-waiting/ polling adalah ketika host mengalami looping yaitu membaca status register secara terus-menerus sampai status busy di-clear. Pada dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak efisien ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit device yang siap untuk men-service, karena CPU processing yang tersisa belum selesai.

  1. Mengapa diperlukan proses pooling?

– untuk mengetahui mana permintaan terbanyak pada suatu system operasi , maka proses tersebut diutamakan

– memudahkan dalam perpindahan / share

– dapat membantu pekerjaan menjadi cepat

  1. Apakah yang dimaksud dengan buffer?

 

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.

4.  Jelaskan dengan singkat mengenai I/O Scheduling!

I/O Scheduling

Untuk menjadualkan sebuah set permintaan I/O, kita harus menetukan urutan yang bagus untuk mengeksekusi permintaan tersebut. Scheduling dapat meningkatkan kemampuan sistem secara keseluruhan, dapat membagi device secara rata di antara proses-proses, dan dapat mengurangi waktu tunggu rata-rata untuk menyelesaikan I/O. Ini adalah contoh sederhana untuk menggambarkan definisi di atas. Jika sebuah arm disk terletak di dekat permulaan disk, dan ada tiga aplikasi yang memblokir panggilan untuk membaca untuk disk tersebut. Aplikasi 1 meminta sebuah blok dekat akhir disk, aplikasi 2 meminta blok yang dekat dengan awal, dan aplikasi 3 meminta bagian tengah dari disk. Sistem operasi dapat mengurangi jarak yang harus ditempuh oleh arm disk dengan melayani aplikasi tersebut dengan urutan 2, 3, 1. Pengaturan urutan pekerjaan kembali dengan cara ini merupakan inti dari I/O scheduling. Sistem operasi mengembangkan implementasi scheduling dengan menetapkan antrian permintaan untuk tiap device. Ketika sebuah aplikasi meminta sebuah blocking sistem I/O, permintaan tersebut dimasukkan ke dalam antrian untuk device tersebut. Scheduler I/O mengatur urutan antrian untuk meningkatkan efisiensi dari sistem dan waktu respon rata-rata yang harus dialami oleh aplikasi. Sistem operasi juga mencoba untuk bertindak secara adil, seperti tidak ada aplikasi yang menerima service yang buruk, atau dapat seperti memberi prioritas service untuk permintaan penting yang ditunda. Contohnya, pemintaan dari subsistem mungkin akan mendapatkan prioritas lebih tinggi daripada permintaan dari aplikasi. Beberapa algoritma scheduling untuk disk I/O akan dijelaskan ada bagian Disk Scheduling.

Penanganan Permintaan I/O

  1. Apakah kegunaan dari Streams pada Sistem V UNIX?

UNIX Sistem V mempunyai mekanisme yang menarik, yang disebut streams, yang membolehkan aplikasi untuk men-assemble pipeline dari kode driver secara dinamis. Sebuah stream adalah sebuah koneksi full duplex antara sebuah device driver dan sebuah proses user-level. Stream terdiri atas sebuah stream head yang merupakan antarmuka dengan user process, sebuah driver end yang mengontrol device, dan nol atau lebih stream modules diantara mereka. Modules dapat didorong ke stream untuk menambah fungsionalitas di sebuah layered fashion. Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port serial melalui sebuah stream, dan dapat mendorong ke sebuah modul untuk memegang edit input. Stream dapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.

2.  Jelaskan lifecycle dari permintaan pembacaan blok!

dideskripsikan sebuah lifecycle yang tipikal dari sebuah permintaan pembacaan blok.

  1. Sebuah proses mengeluarkan sebuah blocking read system call ke sebuah file deskriptor dari berkas yang telah dibuka sebelumnya.
  2. Kode system-call di kernel mengecek parameter untuk kebenaran. Dalam kasus input, jika data telah siap di buffer cache, data akan dikembalikan ke proses dan permintaan I/O diselesaikan.
  3. Jika data tidak berada dalam buffer cache, sebuah physical I/O akan bekerja, sehingga proses akan dikeluarkan dari antrian jalan (run queue) dan diletakkan di antrian tunggu (wait queue) untuk alat, dan permintaan I/O pun dijadwalkan. Pada akhirnya, subsistem I/O mengirimkan permintaan ke device driver. Bergantung pada sistem operasi, permintaan dikirimkan melalui call subrutin atau melalui pesan in-kernel.
  4. Device driver mengalokasikan ruang buffer pada kernel untuk menerima data, dan menjadwalkan I/O. Pada akhirnya, driver mengirim perintah ke device controller dengan menulis ke register device control.
  5. Device controller mengoperasikan piranti keras device untuk melakukan transfer data.
  6. Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA ke memori kernel. Kita mengasumsikan bahwa transfer diatur oleh sebuah DMA controller, yang meggunakan interupsi ketika transfer selesai.
  7. Interrupt handler yang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah data yang dibutuhkan, menandai device driver, dan kembali dari interupsi.
  8. Device driver menerima tanda, menganalisa permintaan I/O mana yang telah diselesaikan, menganalisa status permintaan, dan menandai subsistem I/O kernel yang permintaannya telah terselesaikan.
  9. Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, dan memindahkan proses dari antrian tunggu kembali ke antrian siap.
  10. Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika penjadwal (scheduler)

mengembalikan proses ke CPU, proses meneruskan eksekusi pada penyelesaian dari system call.

Performa I/O

  1. Gambarkan bagan mengenai komunikasi antar computer
  1. Bagaimana cara meningkatkan efisiensi performa I/O

Cara Meningkatkan Efisiensi I/O

  1. Menurunkan jumlah alih konteks.
  2. Mengurangi jumlah pengkopian data ke memori ketika sedang dikirimkan antara device dan aplikasi.
  3. Mengurangi frekuensi interupsi, dengan menggunakan ukuran transfer yang besar, smart controller, dan polling.
  4. Meningkatkan concurrency dengan controller atau channel yang mendukung DMA.
  5. Memindahkan kegiatan processing ke perangkat keras, sehingga operasi kepada device controller dapat berlangsung bersamaan dengan CPU.
  6. Menyeimbangkan antara kinerja CPU, memory subsystem, bus, dan I/O.

3.  Jelaskan mengenai implementasi dari fungsi I/O

Implementasi Fungsi I/O

Pada dasarnya kita mengimplementasikan algoritma I/O pada level aplikasi. Hal ini dikarenakan kode aplikasi sangat fleksible, dan bugs aplikasi tidak mudah menyebabkan sebuah sistem crash. Lebih lanjut, dengan mengembangkan kode pada level aplikasi, kita akan menghindari kebutuhan untuk reboot atau reload device driver setiap kali kita mengubah kode. Implementasi pada level aplikasi juga bisa sangat tidak efisien. Tetapi, karena overhead dari alih konteks dan karena aplikasi tidak bisa mengambil keuntungan dari struktur data kernel internal dan fungsionalitas dari kernel (misalnya, efisiensi dari kernel messaging, threading dan locking.

Pada saat algoritma pada level aplikasi telah membuktikan keuntungannya, kita mungkin akan mengimplementasikannya di kernel. Langkah ini bisa meningkatkan kinerja tetapi perkembangannya dari kerja jadi lebih menantang, karena besarnya kernel dari sistem operasi, dan kompleksnya sistem sebuah perangkat lunak. Lebih lanjut , kita harus men-debug keseluruhan dari implementasi in-kernel untuk menghindari korupsi sebuah data dan sistem crash.

Kita mungkin akan mendapatkan kinerja yang optimal dengan menggunakan implementasi yang special pada perangkat keras, selain dari device atau controller. Kerugian dari implementasi perangkat keras termasuk kesukaran dan biaya yang ditanggung dalam membuat kemajuan yang lebih baik dalam mengurangi bugs, perkembangan waktu yang maju dan fleksibilitas yang meningkat. Contohnya, RAID controller pada perangkat keras mungkin tidak akan menyediakan sebuah efek pada kernel untuk mempengaruhi urutan atau lokasi dari individual block reads dan write, meski pun kernel tersebut mempunyai informasi yang spesial mengenaiworkload yang dapat mengaktifkan kernel untuk meningkatkan kinerja dari I/O.

Struktur Disk

  1. Sebutkan bagian-bagian dari disk

Disk menyediakan penyimpanan sekunder bagi sistem komputer modern. Magnetic tape sebelumnya digunakan sebagai media penyimpanan sekunder, tetapi waktu aksesnya lebih lambat dari disk. Oleh karena itu, sekarang tape digunakan terutama untuk backup, untuk penyimpanan informasi yang tidak sering, sebagai media untuk mentransfer infromasi dari satu sistem ke sistem yang lain, dan untuk menyimpan sejumlah data yang terlalu besar untuk sistem disk.

2.  Apa keuntungan penggunaan pemetaan pada disk?

Array satu dimensi dari blok lojik dipetakan ke bagian dari disk secara sekuensial. Sektor 0 adalah sektor pertama dari trek pertama di silinder paling luar (outermost cylinder). Pemetaan kemudian memproses secara berurutan trek tersebut, kemudian melalui trek selanjutnya di silinder tersebut, dan kemudian sisa silinder dari yang paling luar sampai yang paling dalam.

Dengan menggunakan pemetaan, kita dapat minimal dalam teori mengubah sebuah nomor blok logikal ke sebuah alamat disk yang bergaya lama (old-style disk address) yang terdiri atas sebuah nomor silinder, sebuah nomor trek di silinder tersebut, dan sebuah nomor sektor di trek tersebut. Dalam prakteknya, adalah sulit untuk melakukan translasi ini, dengan 2 alasan. Pertama, kebanyakan disk memiliki sejumlah sektor yang rusak, tetapi pemetaan menyembunyikan hal ini dengan mensubstitusikan dengan sektor yang dibutuhkan dari mana-mana di dalam disk. Kedua, jumlah dari sektor per trek tidaklah konstan. Semakin jauh sebuah trek dari tengah disk, semakin besar panjangnya, dan juga semakin banyak sektor yang dipunyainya. Oleh karena itu, disk modern diatur menjadi zona-zona silinder. Nomor sektor per trek adalah konstan dalam sebuah zona. Tetapi seiring kita berpindah dari zona dalam ke zona luar, nomor sektor per trek bertambah. Trek di zona paling luar tipikalnya mempunyai 40 persen sektor lebih banyak daripada trek di zona paling dalam.

Nomor sektor per trek telah meningkat seiring dengan peningkatan teknologi disk, dan adalah lazim untuk mempunyai lebih dari 100 sektor per trek di zona yang lebih luar dari disk. Dengan analogi yang sama, nomor silinder per disk telah meningkat, dan sejumlah ribuan silinder adalah tak biasa.

Penjadualan Disk

  1. Buatlah dengan pemikiran Anda sendiri, strategi penjadualan disk yang tepat dan efisien menurut Anda

Salah satu tanggung jawab sistem operasi adalah menggunakan hardware dengan efisien. Khusus untuk disk drives, efisiensi yang dimaksudkan di sini adalah dalam hal waktu akses yang cepat dan aspek bandwidth disk. Waktu akses memiliki dua komponen utama yaitu waktu pencarian dan waktu rotasi disk. 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 rotasi atau perputaran disk, sehingga sektor yang diinginkan dapat dibaca oleh head. Pengertian Bandwidth adalah total jumlah bytes yang ditransfer dibagi dengan total waktu antara permintaan pertama sampai seluruh bytes selesai ditransfer. Untuk meningkatkan kecepatan akses dan bandwidth, kita dapat melakukan penjadualan pelayanan atas permintaan I/O dengan urutan yang tepat.

Sebagaimana kita ketahui, jika suatu proses membutuhkan pelayanan I/O dari atau menuju disk, maka proses tersebut akan melakukan system call ke sistem operasi.

Permintaan tersebut membawa informasi-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

Jika disk drive beserta controller tersedia untuk proses tersebut, maka proses akan dapat dilayani dengan segera. Jika ternyata disk drive dan controller tidak tersedia atau sedang sibuk melayani proses lain,maka semua permintaan yang memerlukan pelayanan disk tersebut akan diletakkan pada suatu antrian penundaan permintaan untuk disk tersebut. Dengan demikian, jika suatu permintaan telah dilayani, maka sistem operasi memilih permintaan tertunda dari antrian yang selanjutnya akan dilayani.

2.  Menurut Anda, diantara algoritma-algoritma penjadualan disk diatas manakah yang

paling cepat, manakah yang paling efisien (hemat/tidak mahal), dan manakah yang paling lambat dan tidak efisien? Jelaskan!

Dari algoritma-algoritma diatas, bagaimanakah kita memilih algoritma terbaik yang akan digunakan? SSTF lebih umum dan memiliki prilaku yang lazim kita temui. SCAN dan C-SCAN memperlihatkan kemampuan yang lebih baik bagi sistem yang menempatkan beban pekerjaan yang berat kepada disk, karena algoritma tersebut memiliki masalah starvation yang paling sedikit. Untuk antrian permintaan tertentu, mungkin saja kita dapat mendefinisikan urutan akses dan pengambilan data dari disk yang optimal, tapi proses komputasi membutuhkan penjadualan optimal yang tidak kita dapatkan pada SSTF atau SCAN.

Dengan algoritma penjadualan yang mana pun, kinerja sistem sangat tergantung pada jumlah dan tipe permintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritma penjadualan akan dipaksa bertindak sama, karena algoritma-algoritma tersebut hanya punya satu pilihan dari mana menggerakkan disk head: semuanya berprilaku seperti algoritma penjadualan FCFS.

Perlu diperhatikan pula bahwa pelayanan permintaan disk dapat dipengaruhi pula oleh metode alokasi file. Sebuah program yang membaca alokasi file secara terus menerus mungkin akan membuat beberapa permintaan yang berdekatan pada disk, menyebabkan pergerakan head menjadi terbatas. File yang memiliki link atau indeks, dilain pihak, mungkin juga memasukkan blok-blok yang tersebar luas pada disk, menyebabkan pergerakan head yang sangat besar.

Lokasi blok-blok indeks dan directory juga tidak kalah penting. Karena file harus dibuka sebelum digunakan, proses pembukaan file membutuhkan pencarian pada struktur directory, dengan demikian directory akan sering diakses. Kita anggap catatan directory berada pada awal silinder, sedangkan data file berada pada silinder terakhir. Pada kasus ini, disk head harus bergerak melewati sepanjang lebar disk. Membuat tempat penyimpanan sementara dari blok-blok indeks dan directory ke dalam memori dapat membantu mengurangi pergerakan disk arm, khususnya untuk permintaan membaca disk.

Karena kerumitan inilah, maka algoritma penjadualan disk harus ditulis dalam modul terpisah dari sistem operasi, jadi dapat saling mengganti dengan algoritma lain jika diperlukan. Baik SSTF mau pun LOOK keduanya merupakan pilihan yang paling masuk akal sebagai algoritma yang paling dasar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s