31 Des 2011

TUGAS V-CLASS 2 SISTEM OPERASI

 Perangkat Keras I/O

1. Gambarkan diagram dari Interrupt Driven I/O Cycle!

Keterangan tambahan:
1.       Permintaan interupt CPU dipicu oleh I/O device
2.       Interrupt handler menerima interrupt
3.       Maskable interupt untuk membatalkan atau menunda beberapa interupt
4.       Interrupt vector untuk mengirimkan interrupt ke handler yang benar. (Berdasarkan prioritas &Beberapa unmaskable)  
5.    Mekanisme interrupt juga digunakakan untuk exception




2. Sebutkan langkah-langkah dari transfer DMA! 
Dalam gambar dapat dilihat ada 6  tahapan proses/langkah-langkah dari transfer DMA
1.       device driver diperintahkan untuk mentransfer data disk ke buffer pada x/suatu alamat
2.       device driver akan memberitahu disk kontroller untuk mentransfer sejumlah C byte dari disc ke buffer dari x/suatu alamat tersebut.
3.       Kontroler disc menginisiati DMA transfer
4.       Kontroller disk mengirim byte ke setiap DMA kontroller.
5.       Kontroler DMA mentransfer byte ke buffer x. Meningkatkan alamat memori dan menurunkan C sampai C=0
6.       Ketika C=0, DMA mengintrupsi CPU ke sinyal transfer penyelesain. 
Enam langkah diatas kita gunakan untuk lebih memahami jika terdapat kasus seperti pada gambar, tetapi untuk lebih mudahnya dapat dipahami dengan penjelasan dibawah ini:
Tiga langkah dalam transfer DMA:
  •      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.
  •   DMA controller memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di transfer.
  •   DMA controller meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya. 

3. Apakah perbedaan dari polling dan interupsi?
 Perbedaan dari polling dan interupsi:
cara polling:
pertama kali yang terjadi adalah menentukan status terlebih dahulu, apakah command ready, bussy, atau error. Jadi secara berkala prosesor akanbertanya (poll) kepada sejumlah sumber daya. Apakah ada di antara mereka yang akan memerlukan prosesor? Jika ada, maka prosesor akan menghentikan kegiatan semulanya, serta mengalihkan kerjanya ke sumberdaya tersebut.
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.
Cara interupsi:
Dengan cara 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, jadi terjadi secara langsung tanpa membaca status register pada saat itu.

4. Apa hubungan arsitektur kernel yang di-thread dengan implemen tasi interupsi?
Perangkat dapat menghasilkan interrupt signal. Setiap signal interrupt mempunyai hubungan dengan program kernel yang disebut dengan interrupt handler.


Interface Aplikasi I/O

1. Kenapa dibutuhkan interface pada aplikasi I/O?
 Ketika suatu aplikasi ingin membuka data yang ada dalam suatu disk, sebenarnya aplikasi tersebut harus dapat membedakan jenis disk apa yang akan diaksesnya. Untuk mempermudah pengaksesan, sistem operasi melakukan standarisasi cara pengaksesan pada peralatan I/O. Pendekatan inilah yang dinamakan interface 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.


2. Apa tujuan adanya device driver? Berikan contoh keuntungan yang kita dapatkan dengan adanya hal ini! 
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.
Keuntungan yang didapat:
Secara teoritis, sebuah perangkat yang baru, yang umumnya dikontrol dengan menggunakan cara yang baru dapat bekerja dengan normal jika memang terdapat device driver yang cocok. Driver yang baru ini akan menjamin bahwa perangkat yang bersangkutan dapat beroperasi seperti biasa dari sudut pandang sistem operasi.



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.

 2. Mengapa diperlukan proses pooling?
 Untuk mengetahui mana permintaan terbanyak pada suatu sistem operasi.
Membantu pekerjaan menjadi lebih cepat.
Untuk mengatasi device yang tidak dapat me-multiplex permintaan I/O dari beberapa aplikasi.

3. 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.
Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data.
Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. 

4. Jelaskan dengan singkat mengenai I/O Scheduling!
Penjadwalan I/O: I/OScheduling digunakan untuk  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. -> definisi singkat menurut saya.



Penanganan Permintaan I/O

1. Apakah kegunaan dari Streams pada Sistem V UNIX?
Stream dapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.

2. Jelaskan lifecycle dari permintaan pembacaan blok!
a.    Sebuah proses mengeluarkan sebuah blocking read system call ke sebuah file deskriptor dari berkas yang telah dibuka sebelumnya. 
b.    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.
c.       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.
d.       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.
e.       Device controller mengoperasikan piranti keras device untuk melakukan transfer data.
f.        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. 
g.   Interrupt handler yang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah data yang dibutuhkan, menandai device driver, dan kembali dari interupsi.
h.  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.
i.      Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, dan memindahkan proses dari antrian tunggu kembali ke antrian siap.
    j.     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 komputer


2. 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
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 mengenai workload yang dapat mengaktifkan kernel untuk meningkatkan kinerja dari I/O. 



Struktur Disk

1. Sebutkan bagian-bagian dari disk



2. Apa keuntungan penggunaan pemetaan pada disk?
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.



Penjadualan Disk

1. Buatlah dengan pemikiran Anda sendiri, strategi penjadualan disk yang tepat dan efisien menurut Anda!
Menurut saya penjadualan disk yang efisien adalah dengan sistem antrian (queue) atau First Come First Served (FCFS) karena secara intrinsik bersifat adil tapi memang tidak cepat dibandingkan dengan penjadualan-penjadualan yang lain.
Tetapi jika saya diberikan pilihan, kembali kepada point 1 dari penjadualan disk yaitu, kita harus melihat:
1. Apakah operasi input atau output.
2. Alamat disk untuk proses tersebut.
3. Alamat memori untuk proses tersebut
4. Jumlah bytes yang akan ditransfer

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! 
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. 

0 komentar:

Posting Komentar