Kali ini saya akan berbagi materi tentang pengertian input dan output pada komputer atau disingkat I/O langsung saja kita membahas pengertian input dan output pada komputer Input : yaitu alat yang digunakan untuk menerima masukkan data dan program yang akan diproses di dalam computer Output :yaitu sebagai peralatan yang berfungsi untuk mengeluarkan hasil pemrosesan ataupun pengolahan data yang berasal dari CPU kedalam suatu media yang dapat dibaca oleh manusia ataupun dapat digunakan untuk penyimpanan data hasil proses.

Konsep I/O

Definisi: I/O adalah bagian dari struktur sebuah komputer yang berfungsi sebagai pintu gerbang bagi CPU untuk dapat berinteraksi dengan lingkungannya atau “environment”-nya


-Environment CPU dapat berupa peralatan2 lain diluar CPU seperti: peripheral (harddisk, CD-ROM drive, sensor, mouse dsb. ) , user (manusia) .


-Tanpa I/O maka sebuah komputer tidak dapat berinteraksi dengan lingkungannya, seperti halnya sebuah rumah yang tidak memiliki pintu , atau jendela.


Modul I/O

Modul I/O adalah peralatan antarmuka (interface) bagi sistem bus atau switch sentral dan mengontrol satu atau lebih perangkat peripheral. Modul I/O tidak hanya sekedar modul penghubung, tetapi sebuah piranti yang berisi logika dalam melakukan fungsi komunikasi antara peripheral dan bus komputer.

Peripheral

Definisi: Peripheral adalah semua jenis “device” (=peralatan) yang berinteraksi dengan

CPU melalui Modul I/O.



Ada 3 jenis Peripheral :


1. Human Readable Peripheral

Sifat2: - Berinteraksi dengan User (manusia) : monitor, keyboard , mouse, microphone , loudspeaker (beeper), touchscreen

2. Machine Readable Peripheral

Sifat2: - Interaksi antar mesin berlangsung tanpa campur tangan user , contoh: harddisk, sensor, actuator, CD-ROM drive

3. Communication Peripheral

Sifat2: - koneksi dengan device lain melalui jaringan atau saluran komunikasi lain, seperi: infra red, bluetooth, modem dsb.

Interface (= Antarmuka)

Definisi: Interface adalah “device” atau peralatan yang berfungsi menjembatani “perbedaan” antara dua buah sistem yang akan saling berinterkoneksi dan melakukan “data exchange”

Jenis perbedaan :

1.  Perbedaan Level Tegangan (Voltage) - Level TTL = + 5 Volt dan 0 Vol
- Level RS-232C = +25 Volt dan -25 Volt (max.)

2.  Perbedaan Kecepatan Transfer Data (bps)

-  Modem 56 kbps

-  Modem 1 Mbps

3. Perbedaan Protokol

-  TCP/IP

-  SNA


Jadi , dengan menggunakan interface yang sesuai maka proses interkoneksi atau pertukaran data antar dua atau lebih device akan dapat berlangsung dengan aman dan sempurna



Catatan:

Selain Hardware interface, maka ada pula software interface, yaitu jenis program atau driver yang digunakan sebagai sarana penghubung antara

a.  Software dengan Software

b.  Hardware dengan Software

c.  Hardware dengan Hardware

Contoh: Untuk memasang sebuah peralatan baru, misalkan Webcam , Laser Printer , Plotter dsb.

Ke komputer dibutuhkan software “driver” , agar peralatan tsb.dapat dikenali dan dapat berfungsi secara optimal.

Fungsi Modul I/O

1.  Control & Timing

2.  CPU Communication

3.  Device Communication

4.  Data Buffering

5.  Error Detection


Cara Kerja Modul I/O

1.  CPU memeriksa status periferal

2.  I/O module laporkan status

3.  Jika siap, CPU request data transfer

4.  I/O module ambil data dari device

5.  I/O module transfers data ke CPU



Diagram Dasar Sebuah Peripheral :


1.  Block Kontrol Logika Terdiri dari 2 jenis signal, yaitu

a. Control Signal , adalah sinyal yang berasal dari CPU , berfungsi untuk mengendalikan perangkat perife.

Contoh : Signal Read , Write

b. Status Signal , adalah signal yang berasal dari periferal untuk melaporkan kondisi periferal kepada CPU

contoh: Pada printer Kertas Habis, Tinta Habis , Paper Jam


2.  Block Buffer

Buffer adalah memori berukuran kecil berfungsi sebagai tempat singgah sementara untuk data yang keluar-masuk Modul I/O Fungsi Buffer adalah sebagai sarana untuk “sinkronisasi” terhadap sistem

bus, tujuanya adalah agar data dapat keluar-masuk ke sistem bus sesuai dengan instruksi yang diberikan CPU.

3. Block Transducer

Transducer adalah alat yang berfungsi untuk merubah atau mengkonversikan suatu bentuk energi tertentu menjadi energi listrik.

Contoh Transducer:

1.  Solar Cell , merubah energi cahaya menjadi listrik

2.  Load Cell , merubah tekanan menjadi listrik

3.  Tachometer , merubah gaya akibat putaran menjadi listrik

4.  Potentiometer , merubah posisi menjadi listrik


Sensor , adalah alat yang berfungsi untuk mendeteksi keberadaan suatu bentuk energi atau obyek tertentu.

Contoh Sensor :

1.  Fototransistor: sensor cahaya yg mengaktifkan electronic switch

2.  Thermostat: sensor panas yang mengaktifkan switch



Teknik Penanganan I/O , ada 3 cara

1.  Programmed I/O

2.  Interrupt Driven I/O

3.  DMA - I/O


1. Programmed I/O

Pada I/O terprogram, data saling dipertukarkan antara CPU dan modul I/O. CPU mengeksekusi program yang memberikan operasi I/O kepada CPU secara langsung, seperti pemindahan data, pengiriman perintah baca maupun tulis, dan monitoring perangkat.


Kelemahan teknik ini adalah CPU akan menunggu sampai operasi I/O selesai dilakukan modul I/O sehingga akan membuang waktu, apalagi CPU lebih cepat proses operasinya. Dalam teknik ini, modul I/O tidak dapat melakukan interupsi kepada CPU terhadap proses – proses yang diinteruksikan padanya. Seluruh proses merupakan tanggung jawab CPU sampai operasi lengkap dilaksanakan.

2. Interrupt Driven I/O

Teknik interrupt – driven I/O memungkinkan proses tidak membuang – buang waktu. Prosesnya adalah CPU mengeluarkan perintah I/O pada modul I/O, bersamaan perintah I/O dijalankan modul I/O maka CPU akan melakukan eksekusi perintah – perintah lainnya. Apabila modul I/O telah selesai menjalankan instruksi yang diberikan padanya akan melakukan interupsi pada CPU bahwa tugasnya telah selesai.


Dalam teknik ini kendali perintah masih menjadi tanggung jawab CPU, baik pengambilan perintah dari memori maupun pelaksanaan isi perintah tersebut. Terdapat selangkah kemajuan dari teknik sebelumnya, yaitu CPU melakukan multitasking beberapa perintah sekaligus sehingga tidak ada waktu tunggu bagi CPU.



Langkah-Langkah Penanganan Interrupt :

1.   Perangkat I/O akan mengirimkan sinyal interupsi ke CPU. CPU menyelesaikan operasi yang sedang dijalankannya kemudian merespon interupsi.

2.     CPU memeriksa interupsi tersebut, kalau valid maka CPU akan mengirimkan sinyal acknowledgment ke perangkat I/O untuk menghentikan interupsinya.

3.   CPU mempersiapkan pengontrolan transfer ke routine interupsi. Hal yang dilakukan adalah menyimpan informasi yang diperlukan untuk melanjutkan operasi yang tadi dijalankan sebelum adanya interupsi. Informasi yang diperlukan berupa: Status prosesor, berisi register yang dipanggil PSW (program status word).Lokasi intruksi berikutnya yang akan dieksekusi.

4.   Informasi tersebut kemudian disimpan dalam stack pengontrol sistem. Kemudian CPU akan menyimpan PC (program counter) eksekusi sebelum interupsi ke stack pengontrol bersama informasi PSW.

5.    Selanjutnya mempersiapkan PC untuk penanganan interupsi. Selanjutnya CPU memproses interupsi sempai selesai. Apabila pengolahan interupsi selasai, CPU akan memanggil kembali informasi yang telah disimpan pada stack pengontrol untuk meneruskan operasi sebelum interupsi.

Metode Penanganan Interrupt

1.  Multiple Interrupt Lines.

2.  Software poll.

3.  Daisy Chain.

4.  Arbitrasi bus.


1. Multiple Interrupt Lines

Teknik yang paling sederhana adalah menggunakan saluran interupsi berjumlah banyak (Multiple Interrupt Lines) antara CPU dan modul – modul I/O. Namun tidak praktis untuk menggunakan sejumlah saluran bus atau pin CPU ke seluruh saluran interupsi modul – modul I/O.

2. Software Poll

Alternatif lainnya adalah menggunakan software poll. Prosesnya, apabila CPU mengetahui adanya sebuah interupsi, maka CPU akan menuju ke routine layanan interupsi yang tugasnya melakukan poll seluruh modul I/O untuk menentukan modul yang melakukan interupsi. Kerugian software poll adalah memerlukan waktu yang lama karena harus mengidentifikasi seluruh modul untuk mengetahui modul I/O yang melakukan interupsi.



3.Daisy Chain

Teknik yang lebih efisien adalah daisy chain, yang menggunakan hardware poll. Seluruh modul I/O tersambung dalam saluran interupsi CPU secara melingkar (chain). Apabila ada permintaan interupsi, maka CPU akan menjalankan sinyal acknowledge yang berjalan pada saluran interupsi sampai menjumpai modul I/O yang mengirimkan interupsi.

4. Arbitrasi Bus

Teknik berikutnya adalah arbitrasi bus. Dalam metode ini, pertama – tama modul I/O memperoleh kontrol bus sebelum modul ini menggunakan saluran permintaan interupsi. Dengan demikian hanya akan terdapat sebuah modul I/O yang dapat melakukan interupsi.

3. Teknik Direct Memory Access (DMA)

Teknik yang dijelaskan sebelumnya yaitu I/O terprogram dan Interrupt- Driven I/O memiliki kelemahan, yaitu proses yang terjadi pada modul I/O masih melibatkan CPU secara langsung. Hal ini berimplikasi pada : Kelajuan transfer I/O yang tergantung pada kecepatan operasi CPU. Kerja CPU terganggu karena adanya interupsi secara langsung. Bertolak dari kelemahan di atas, apalagi untuk menangani transfer data bervolume besar dikembangkan teknik yang lebih baik, dikenal dengan Direct Memory Access (DMA).


Prinsip kerja DMA adalah CPU akan mendelegasikan kerja I/O kepada DMA, CPU hanya akan terlibat pada awal proses untuk memberikan instruksi lengkap pada DMA dan akhir proses saja. Dengan demikian CPU dapat menjalankan proses lainnya tanpa banyak terganggu dengan interupsi

4. Cycle Stealing

Dalam melaksanakan transfer data secara mandiri, DMA memerlukan pengambil alihan kontrol bus dari CPU. Untuk itu DMA akan menggunakan bus bila CPU tidak menggunakannya atau DMA memaksa CPU untuk menghentikan sementara penggunaan bus. Teknik terakhir lebih umum digunakan, sering disebut cycle-stealing, karena modul DMA mengambil alih siklus bus. Penghentian sementara penggunaan bus bukanlah bentuk interupsi, melainkan hanyalah penghentian proses sesaat yang berimplikasi hanya pada kelambatan eksekusi CPU saja.


Kernel I/O Subsystem

Kernel menyediakan banyak service yang berhubungan dengan I/O. Pada bagian ini, kita akan mendeskripsikan beberapa service yang disediakan oleh kernel I/O subsystem, dan kita akan membahas bagaimana caranya membuat infrastruktur hardware dan device-driver. Service yang akan kita bahas adalah I/O scheduling, buffering, caching, spooling, reservasi device, error handling.

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.

Satu cara untuk meningkatkan efisiensi I/O subsistem dari sebuah komputer adalah dengan mengatur operasi I/O. Cara lain adalah dengan menggunakan tempat penyimpanan pada memori utama atau pada disk, melalui teknik yang disebut buffering, caching, dan spooling.

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

Caching

Sebuah cache adalah daerah memori yang cepat yang berisikan data kopian. Akses ke sebuah kopian yang di-cached lebih efisien daripada akses ke data asli. Sebagai contoh, instruksi-instruksi dari proses yang sedang dijalankan disimpan ke dalam disk, dan ter-cached di dalam memori physical, dan kemudian dicopy lagi ke dalam cache secondary and primary dari CPU. Perbedaan antara sebuah buffer dan ache adalah buffer dapat menyimpan satu-satunya informasi datanya sedangkan sebuah cache secara definisi hanya menyimpan sebuah data dari sebuah tempat untuk dapat diakses lebih cepat.

Caching dan buffering adalah dua fungsi yang berbeda, tetapi terkadang sebuah daerah memori dapat digunakan untuk keduanya. sebagai contoh, untuk menghemat copy semantics dan membuat schedulingI/O menjadi efisien, sistem operasi menggunakan buffer pada memori utama untuk menyimpan data. Buffer ini juga digunakan sebagai cache, untuk meningkatkan efisiensi I/O untuk file yang digunakan secara bersama-sama oleh beberapa aplikasi, atau yang sedang dibaca dan ditulis secara berulang-ulang. Ketika kernel menerima sebuah permintaan



file I/O, kernel tersebut mengakses buffer cacheuntuk melihat apakah daerah memori tersebut sudah tersedia dalam memori utama. Jika iya, sebuah physical disk I/O dapat dihindari atau tidak dipakai. penulisan disk juga terakumulasi ke dalam buffer cacheselama beberapa detik, jadi transfer yang besar akan dikumpulkan untuk mengefisiensikan schedule penulisan. Cara ini akan menunda penulisan untuk meningkatkan efisiensi I/O akan dibahas pada bagianRemote File Access.

Spooling dan Reservasi Device

Sebuah spool adalah sebuah buffer yang menyimpan output untuk sebuah device, seperti printer, yang tidak dapat menerima interleaved data streams. Walau pun printer hanya dapat melayani satu pekerjaan pada waktu yang sama, beberapa aplikasi dapat meminta printer untuk mencetak, tanpa harus mendapatkan hasil output mereka tercetak secara bercampur. Sistem operasi akan menyelesaikan masalah ini dengan meng-intercept semua output kepada printer. Tiap output aplikasi sudah di-spooled ke disk file yang berbeda. Ketika sebuah aplikasi selesai mengeprint, sistem spooling akan melanjutkan ke antrian berikutnya. Di dalam beberapa sistem operasi, spooling ditangani oleh sebuah sistem proses daemon. Pada sistem operasi yang lain, sistem ini ditangani oleh in-kernel thread. Pada kedua kasus, sistem operasi menyediakan interfacekontrol yang membuat users and system administrator dapat menampilkan antrian tersebut, untuk mengenyahkan antrian-antrian yang tidak diinginkan sebelum mulai di-print.


Untukbeberapa device,
seperti drivetapedanprinter
tidak
dapat
me-
multiplex permintaan I/O dari  beberapa  aplikasi. Spooling merupakan
salah  satu  cara
untuk
mengatasi  masalah  ini.
Cara
lain  adalah  dengan  membagi  koordinasi
untuk multiple
concurrent ini.  Beberapa
sistem
operasi  menyediakan  dukungan  untuk  akses device secara

eksklusif, dengan mengalokasikan proses ke device idledan membuangdevice yang sudah tidak diperlukan lagi. Sistem operasi lainnya memaksakan limit suatu file untuk menangani device ini. Banyak sistem operasi menyediakan fungsi yang membuat proses untuk menangani koordinat exclusive akses diantara mereka sendiri.

Error Handling

Sebuah sistem operasi yang menggunakan protected memory dapat menjaga banyak kemungkinan error akibat hardware mau pun aplikasi. Devices dan transfer I/O dapat gagal dalam banyak cara, bisa karena alasan transient, seperti overloaded pada network, mau pun alasan permanen yang seperti kerusakan yang terjadi pada disk controller. Sistem operasi seringkali dapat mengkompensasikan untuk kesalahan transient. Seperti, sebuah kesalahan baca pada disk akan mengakibatkan pembacaan ulang kembali dan sebuah kesalahan pengiriman pada network akan mengakibatkan pengiriman ulang apabila protokolnya diketahui. Akan tetapi untuk kesalahan permanent, sistem operasi pada umumnya tidak akan bisa mengembalikan situasi seperti semula.



Sebuah ketentuan umum, yaitu sebuah sistem I/O akan mengembalikan satu bit informasi tentang status panggilan tersebut, yang akan menandakan apakah proses tersebut berhasil atau gagal. Sistem operasi pada UNIX menggunakan integer tambahan yang dinamakan errno untuk mengembalikan kode kesalahan sekitar 1 dari 100 nilai yang mengindikasikan sebab dari kesalahan tersebut. Akan tetapi, beberapa perangkat keras dapat menyediakan informasi kesalahan yang detail, walau pun banyak sistem operasi yang tidak mendukung fasilitas ini.

Kernel Data Structure

Kernel membutuhkan informasi state tentang penggunakan komponen I/O. Kernel menggunakan banyak struktur yang mirip untuk melacak koneksi jaringan, komunikasi karakter-device, dan aktivitas I/Olainnya.

UNIX menyediakan akses sistem file untuk beberapa entiti, seperti file user, raw devices, dan alamat tempat proses. Walau pun tiap entiti ini didukung sebuah operasi baca, semantics-nya berbeda untuk tiap entiti. Seperti untuk membaca file user, kernel perlu memeriksa buffer cache sebelum memutuskan apakah akan melaksanakan I/O disk. Untuk membaca sebuah raw disk, kernel perlu untuk memastikan bahwa ukuran permintaan adalah kelipatan dari ukuran sektor disk, dan masih terdapat di dalam batas sektor. Untuk memproses citra, cukup perlu untuk mengkopi data ke dalam memori. UNIX mengkapsulasikan perbedaan-perbedaan ini di dalam struktur yang uniform dengan menggunakan teknik object oriented.

Beberapa sistem operasi bahkan menggunakan metode object oriented secara lebih extensif. Sebagai contoh, Windows NT menggunakan implementasi message-passing untuk I/O. Sebuah permintaan I/Oakan dikonversikan ke sebuah pesan yang dikirim melalui kernel kepada I/O manager dan kemudian ke device driver, yang masing-masing bisa mengubah isi

pesan.
Untuk
output,
isi message adalah
data
yang
akan
ditulis.
Untuk
input, message berisikan buffer untuk  menerima
data.  Pendekatan message-passing ini
dapat

menambah overhead, dengan perbandingan dengan teknik prosedural yang men-sharestruktur data, tetapi akan mensederhanakan struktur dan design dari sistem I/O tersebut dan menambah fleksibilitas.

Kesimpulannya, subsistem I/O mengkoordinasi kumpulan-kumpulan service yang banyak sekali, yang tersedia dari aplikasi mau pun bagian lain dari kernel. Subsistem I/O mengawasi:

1.      Manajemen nama untuk file dan device.
2.      Kontrol akses untuk file dan device.
3.      Kontrol operasi, contoh: model yang tidak dapat dikenali.
4.      Alokasi tempat sistem file.
5.      Alokasi device.
6.      Buffering, caching, spooling.
7.      I/O scheduling
8.      Mengawasi status device, error handling, dan kesalahan dalam recovery.
9.      Konfigurasi dan utilisasi driver device.



Penjadwalan disk pada sistem operasi komputer

Merupakan salah satu hal yang sangat penting dalam mencapai efisiensi perangkat keras. Efisiensi dipengaruhi oleh kecepatan waktu akses dan besarnya disk bandwith. Waktu akses memiliki dua komponen utama yaitu:




















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 perputarandisk agar head dapat berada di atas sektor yang diinginkan.
Disk bandwith yaitu 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 yang tepat.


MACAM MACAM PENJADWALAN DISK

Penjadwalan FCFS

Adalah melayani permintaan sesuai dengan antrian dari banyak proses yang meminta layanan. Secara umum algoritma FCFS ini sangat adil walaupun ada kelemahan dalam algoritma ini dalam hal kecepatannya yang lambat.



Penjadwalan SSTF

Shortest-Seek-Time-First (SSTF) merupakan algoritma yang melayani permintaan berdasarkan waktu pencarian atau waktu pencarian paling kecil dari posisi head terakhir. Karena waktu pencarian meningkat seiring dengan jumlah silinder yang dilewati oleh head, maka SSTF memilih permintaan yang paling dekat posisinya di disk terhadap posisi head terakhir. Pergerakan dari contoh FCFS yaitu 50 ke 48, lalu ke 45, 37, 25, 20, 10, 5, 56, 60, 70, 78, 88.
Penjadwalan SCAN

Pada algoritma ini disk arm bergerak menuju ke silinder paling ujung dari disk, kemudian setelah sampai di silinder paling ujung, disk arm akan berbalik arah geraknya menuju ke silinder paling ujung lainnya.
Penjadwalan C-SCAN

Algoritma Circular SCAN (C-SCAN) merupakan hasil modifikasi algoritma SCAN untuk mengurangi kemungkinanstarvation yang bisa terjadi pada SCAN. Perbedaan C-SCAN dengan SCAN hanya pada bagaimana pergerakan disk armsetelah sampai ke salah satu silinder paling ujung. Pada algoritma SCAN, disk arm akan berbalik arah menuju ke silinder paling ujung yang lain sambil tetap melayani permintaan yang berada di depan arah pergerakan disk arm, sedangkan pada algoritma C-SCAN sesudah mencapai silinder paling ujung, maka disk arm akan bergerak cepat ke silinder paling ujung lainnya tanpa melayani permintaan.
Penjadwalan LOOK

Sesuai dengan namanya, algoritma ini seolah-olah seperti bisa "melihat". Algoritma ini memperbaiki kelemahan SCAN dan C-SCAN dengan cara melihat apakah di depan arah pergerakannya masih ada permintaan lagi atau tidak. Bila tidak ada lagi permintaan di depannya, disk arm bisa langsung berbalik arah geraknya. Penjadwalan LOOK seperti SCAN yang lebih "pintar".
Penjadwalan C-LOOK

Algoritma ini berhasil memperbaiki kelemahan-kelemahan algoritma SCAN, C-SCAN, dan LOOK. Algoritma C-LOOK memperbaiki kelemahan LOOK sama seperti algoritma C-SCAN memperbaiki kelemahan SCAN, yaitu pada cara pergerakan disk arm setelah mencapai silinder yang paling ujung.






















Algoritma Penjadwalan Disk Sistem Operasi

 Dengan algoritma penjadwalan yang mana pun, kinerja sistem sangat tergantung pada jumlah dan tipe permintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritma penjadwalan akan dipaksa bertindak sama.

 Namun perlu diingat bahwa algoritma-algoritma hanya mempertimbangkan jarak pencarian, sedangkan untuk disk modern,rotational latency dari disk sangat menentukan. Tetapi sangatlah sulit jika sistem operasi harus memperhitungkan algoritma untuk mengurangi rotational latency karena disk modern tidak memperlihatkan lokasi fisik dari blok-blok logikanya.

Manajemen Penyimpanan Sekunder

Penyimpanan sekunder ( secondary storage) adalah sarana penyimpanan yang berada satu tingkat di bawah memori utama sebuah komputer dalam hirarki memori. Tidak seperti memori utama komputer, penyimpanan sekunder tidak memiliki hubungan langsung dengan prosesor melalui bus. Dua jenis penyimpanan sekunder yang utama yaitu:

1.      berurutan

2.      akses langsung.



Macam-macam penyimpanan :

Penyimpanan Berurutan (SASD)

Penyimpanan berurutan (sequential storage) adalah suatu organisasi atau penyusunan data di suatu medium penyimpanan yang terdiri dari satu catatan mengikuti satu catatan lain dalam suatu urutan tertentu. Misalnya, catatan pegawai disusun dalam urutan nomor pegawai. Bila penyimpanan berurutan yang digunakan, data pertama harus diproses pertama, data kedua diproses kedua, dan seterusnya sampai akhir file itu tercapai.

Penyimpanan Akses Langsung (DASD)

Penyimpanan akses langsung (direct access storage) adalah suatu cara mengorganisasikan data yang memungkinkan catatan-catatan ditulis dan dibaca tanpa pencarian secara berurutan. Unit perangkat keras yang memungkinkan hal ini disebut direct accsess storage divice (DASD).

Struktur Disk

Secara fisik, disk cakram magnetis terdiri atas cakram yang tersusun secara vertikal. Kedua sisi atas bawah pada masing-masing cakram dapat ditulis data kecuali pada permukaan cakram paling atas dan paling bawah. Memiliki struktur 3 dimensi:

Silinder
Track
Sector


Pengalamatan Disk

Urutan penomoran alamat logika disk  mengikuti aturan :


1.      Alamat paling awal, yaitu sektor 0 adalah sektor pertama dari track pertama pada silinder paling luar.

2.      Proses pemetaan dilakukan secara berurut dari Sektor 0, lalu ke seluruh track dari silinder tersebut, lalu ke seluruh silinder mulai dari silinder terluar sampai silinder terdalam.

3.      Urutan yang mendahulukan silinder yang sama sebelum pindah ke track berikutnya bertujuan mengurangi perpindahan head pembacaan pada setiap sisi cakram



Penanganan Disk Request

Mekanisme penanganan disk request adalah sebagai berikut:


1.      Suatu proses yang membutuhkan transfer data dari dan ke disk, maka proses akan memanggil system call SO

2.      System call akan memicu SO memblok proses bersangkutan karena operasi I/O disk akan memakan waktu. Disk request akan ditangani oleh device driver yang sesuai dengan piranti I/O yang hendak diakses.

3.      Device driver akan memeriksa status disk. Jika sedang sibuk, maka akan dimasukkan pada antrian disk bersangkutan

4.      Jika disk tidak sedang digunakan, maka disk request tersebut akan dilayani dan alamat disk dikirimkan ke disk controller.
5.    Operasi write data akan disalinkan oleh DMA controller atau prosessor dari memori utama ke buffer disk controller untuk selanjutnya disalin ke piringan disk
operasi read data yang akan dibaca, akan disalin ke buffer disk controller lebih dulu, baru disalin ke memori utama.


Waktu Penanganan Disk Request
Disk request oleh suatu proses akan menimbulkan waktu tunda. proses akan berstatus blocked sampai data yang diminta telah dipindah ke memori utama.
Waktu yang dibutuhkan untuk memproses disk request terdiri atas:


1.
Overhead time
total waktu yang dihabiskan SO untuk menangani disk request.
2.
Queuing time
waktu yang dihabiskan di antrian disk
3.
Latency (Random Access Time)   waktu yang dibutuhkan untuk menempatkan head ke

lokasi yang hendak diakses. Latency terdiri atas 2 komponen:
1.      Seek time : waktu yang dibutuhkan untuk memindahkan head ke silinder yang berisi sektor yang dituju.

2.      Rotational latency : waktu tambahan yang dibutuhkan untuk menunggu putaran disk sehingga head beradatepat dibawah sektor yang hendak diakses.
4.    Transfer time       waktu untuk mentransfer data dari atau ke lokasi disk.


Recovery

Data Recovery merupakan proses mengembalikan data dari kondisi yang rusak, gagal, korup, atau tidak bisa diakses ke kondisi awal yang normal. Data yang dikembalikan bisa dari hard disk, flash disk dan media simpan lainnya seperti kamera digital, dan camcorder. Teknik Recovery I. Deferred update Sebuah transaksi tidak dapat merubah database pada disk hingga mencapai titik point. Sebuah transaksi tidak dapat mencapai titik point hingga semua operasi update disimpan dalam log dan ditulis ke disk II.

Managemen Disk, Swap, Dan Implementasi Penyimpanan

Stabil.

Managemen Disk

Beberapa aspek yang termasuk aspek penting dalam Managemen Disk:

1.    Format Disk

Disk adalah salah satu tempat penyimpanan data. Sebelum sebuah disk dapat digunakan, disk harus dibagi-bagi dalam beberapa sektor. Sektor-sektor ini yang kemudian akan dibaca oleh pengendali. Pembentukan sektor-sektor ini disebut low level formatting atau physical formatting. Low level formatting juga akan mengisi disk dgn beberapa struktur data penting seperti header dan trailer. Headerdan trailer mempunyai informasi seperti nomor sektor, dan Error Correcting Code (ECC). ECC ini berfungsi sebagai correcting code karena mempunyai kemampuan untuk mendeteksi bit yang salah, menghitung nilai yang benar dan kemudian mengubahnya. Ketika proses penulisan, ECC di-update dengan menghitung bit di area data. Pada proses pembacaan, ECC dihitung ulang



dan dicocokan dengan nilai ECC yang tersimpan saat penulisan. Jika nilainya berbeda maka dipastikan ada sektor yang terkorup.

Agar dapat menyimpan data, OS harus menyimpan struktur datanya dalam disk tersebut. Proses itu dilakukan dalam dua tahap, yaitu partisi dan logical formatting. Partisi akan membagi disk menjadi beberapa silinder yang dapat diperlakukan secara independen. Logical formatting akan membentuk sistem berkas disertai pemetaan disk. Terkadang sistem berkas ini dirasakan menggangu proses alokasi suatu data, sehingga diadakan sistem partisi lain yang tidak mengikutkan pembentukan sistem berkas, disebut raw disk.

2.    Boot Block

Saat sebuah komputer dijalankan, sistem akan mencari sebuah initial program yang akan memulai segala sesuatunya. Initial program-nya (initial bootstrap) bersifat sederhana dan akan menginisialisasi seluruh aspek yang diperlukan bagi komputer untuk beroperasi dengan baik seperti CPU registers, controller, dan yang terakhir adalah Sistem Operasinya. Pada kebanyakan komputer,bootstrap disimpan di ROM (read only memory) karena letaknya yang tetap dan dapat langsung dieksekusi ketika pertama kali listrik dijalankan. Letak bootstrap di ROM juga menguntungkan karena sifatnya yang read only memungkinkan dia untuk tidak terinfeksi virus. Untuk melakukan tugasnya, bootstrap mencari kernel di disk dan me-load kernel ke memori dan kemudian loncat ke initial address untuk memulai eksekusi OS.

Untuk alasan praktis, bootstrap sering dibuat berbentuk kecil (tiny loader) dan diletakkan di ROM, yang kemudian akan men- load full bootstrap dari disk bagian disk yang disebut boot block. Perubahan menjadi bentuk simple ini bertujuan jika diadakan perubahan pada bootstrap, maka struktur ROM tidak perlu dirubah semuanya.

3.    Bad Block

Bad block adalah satu atau lebih sektor yang cacat atau rusak. Kerusakan ini dapat diakibatkan karena kerentanan disk jika sering dipindah-pindah atau kemasukan benda asing. Dalam disk sederhana seperti IDE controller, bad block akan ditangani secara manual seperti dengan perintah format pada MS-DOS yang akan mencari bad block dan menulis nilai spesial ke FAT entry agar tidak mengalokasikan branch routine ke blok tersebut.



SCSI mengatasi bad block dengan cara yang lebih baik. Daftar bad block-nya dipertahankan oleh controller pada saat low level formatting, dan terus diperbarui selama disk itu digunakan. Low level formatting akan memindahkan bad sector itu ke tempat lain yang kosong dengan algoritma sector sparing atau forwarding. Sector sparing dijalankan dengan ECC mendeteksi bad sector dan melaporkannya ke OS, sehingga saat sistem dijalankan sekali lagi, controller akan menggantikan bad sector tersebut dengan sektor kosong. algoritma lain yang sering digunakan adalah sector slipping. Ketika sebuah bad sector terdeteksi, sistem akan mengopi semua isi sektor ke sektor selanjutnya secara bertahap satu-satu sampai ditemukan sektor kosong. Misal bad sector di sektor 7, maka isinya akan dipindahkan ke sektor 8, isi sektor 8 dipindahakan ke 9 dan seterusnya.

Managemen Ruang Swap

Managemen ruang swap adalah salah satu low level task dari OS. Memori virtual menggunakan ruang disk sebagai perluasan dari memori utama. Tujuan utamanya adalah untuk menghasilkan output yang baik. Namun di lain pihak, penggunaan disk akan memperlambat akses karena akses dari memori jauh lebih cepat.

1.    Penggunaan Ruang Swap

Ruang swap digunakan dalam beberapa cara tergantung penerapan algoritma. Sebagai contoh, sistem yang menggunakan swapping dapat menggunakan ruang swap untuk memegang seluruh proses pemetaan termasuk data dan segmen. Jumlah dari ruang swap yang dibutuhkan tergantung dari jumlah memori fisik, jumlah dari memori virtual yang dijalankan, cara penggunaan memori virtual tersebut. Beberapa OS seperti UNIX menggunakan banyak ruang swap, yang biasa diletakan di disk terpisah.

Ketika kita akan menentukan besarnya ruang swap, sebaiknya kita tidak terlalu banyak atau terlalu sedikit. Jika sistem dijalankan dan ruang swap terlalu sedikit, maka proses akan dihentikan dan mungkin akan merusak sistem. Sebaliknya jika terlalu banyak juga akan mengakibatkan lambatnya akses dan pemborosan ruang disk.

2.    Lokasi Ruang Swap

Ruang swap dapat diletakan di dua tempat yaitu: ruang swap dapat berada di sistem berkas normal atau dapat juga berada di partisi yang terpisah. Jika ruang swap berukuran besar dan diletakan di sistem berkas normal, routine-nya dapat menciptakan, menamainya dan menentukan besar space. Walaupun lebih mudah dijalankan, cara ini cenderung tidak efisien. Pengaksesannya akan sangat memakan waktu dan akan meningkatkan fragmentasi karena pencarian data yang berulang terus selama proses baca atau tulis.

Ruang swap yang diletakan di partisi disk terpisah, menggunakan manajer ruang swap terpisah untuk melakukan pengalokasian space. Manajer ruang swap tersebut menggunakan algoritma yang mengutamakan peningkatan kecepatan dari pada efisiensi. Walaupun fragmentasi masih juga terjadi, tapi masih dalam batas-batas toleransi mengingat ruang swap sangat sering diakses. Dengan partisi terpisah, alokasi



ruang swap harus sudah pasti. Proses penambahan besar ruang swap dapat dilakukan hanya dengan partisi ulang atau penambahan dengan lokasi yang terpisah.

Implementasi Penyimpanan Stabil

Pada bagian sebelumnya, kita sudah membicarakan mengenai write-ahead log, yang membutuhkan ketersediaan sebuah storage yang stabil. Berdasarkan definisi, informasi yang berada di dalam stable storage tidak akan pernah hilang. Untuk mengimplementasikan storage seperti itu, kita perlu mereplikasi informasi yang dibutuhkan ke banyak peralatan storage (biasanya disk-disk) dengan failure modes yang independen. Kita perlu mengkoordinasikan penulisan update-update dalam sebuah cara yang menjamin bila terjadi kegagalan selagi meng-update tidak akan membuat semua kopi yang ada menjadi rusak, dan bila sedang recover dari sebuah kegagalan, kita dapat memaksa semua kopi yang ada ke dalam keadaan yang bernilai benar dan konsisten, bahkan bila ada kegagalan lain yang terjadi ketika sedang recovery. Untuk selanjutnya, kita akan membahas bagaimana kita dapat mencapai kebutuhan kita.

Sebuah disk write menyebabkan satu dari tiga kemungkinan:

1.      successful completion
2.      partial failure
3.      total failure

Kita memerlukan, kapan pun sebuah kegagalan terjadi ketika sedang menulis ke sebuah blok, sistem akan mendeteksinya dan memanggil sebuah prosedur recovery untuk me-restore blok tersebut ke sebuah keadaan yang konsisten. Untuk melakukan itu, sistem harus menangani dua blok physical untuk setiap blok logical. Sebuah operasi output dieksekusi seperti berikut:

1.      Tulis informasinya ke blok physical yang pertama.

2.      Ketika penulisan pertama berhasil, tulis informasi yang sama ke blok physical yang kedua.

3.      Operasi dikatakan berhasil hanya jika penulisan kedua berhasil.

Pada saat perbaikan dari sebuah kegagalan, setiap pasang blok physical diperiksa. Jika keduanya sama dan tidak terdeteksi adanya kesalahan, tetapi berbeda dalam isi, maka kita mengganti isi dari blok yang pertama dengan isi dari blok yang kedua. Prosedur recovery seperti ini memastikan bahwa sebuah penulisan ke stable storage akan sukses atau tidak ada perubahan sama sekali.


Kita dapat menambah fungsi prosedur ini dengan mudah untuk memboleh kan penggunaan dari kopi yang banyak dari setiap blok pada stable storage. Meski pun sejumlah besar kopi semakin mengurangi kemungkin an untuk terjadinya sebuah kegagalan, maka biasanya wajar untuk men simulasi stable storage hanya dengan dua kopi. Data di dalam stable storage dijamin aman kecuali sebuah kegagalan menghancurkan semua kopi yang ada.

Posting Komentar

 
Singgah Belajar © 2013. All Rights Reserved. Shared by WpCoderX
Top