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