KINERJA
I/O BUS
Memahami kinerja
I/O bus komputer terapan jaringan
I/O
Sistem Operasi
I/O System merupakan bagian untuk menangani inputan dan
outputan dari DCS. Inputan dan outputan tersebut bisa analog atau digital.
Inputan/outputan digital seperti sinyal-sinyal ON/OFF atau Start/Stop.
Kebanyakan dari pengukuran proses dan outputan terkontrol merupakan jenis
analog
I/O system terdiri dari beberapa BagiAn penting yaitu:
1. I/O
Hardware
2. Application
I/O Interface
3. Kernel
I/O Subsystem
4. I/O
Requests to Hardware Operations
5. Streams
6. Performance
a.I/O Hardware
Secara umum, I/O Hardware terdapat beberapa jenis seperti
device penyimpanan
(disk,tape),transmission device (network card, modem), dan human-interface device (screen, keyboard,mouse). Device tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki
oleh device akan digunakan oleh direct I/O instruction dan memory-mapped I/O.
Beberapa konsep yangumum digunakan ialah port, bus (daisy chain/ shared direct access), dan controller (host adapter).
(disk,tape),transmission device (network card, modem), dan human-interface device (screen, keyboard,mouse). Device tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki
oleh device akan digunakan oleh direct I/O instruction dan memory-mapped I/O.
Beberapa konsep yangumum digunakan ialah port, bus (daisy chain/ shared direct access), dan controller (host adapter).
o
Port adalah koneksi yang digunakan oleh device untuk berkomunikasidengan mesin.
o
Bus adalah koneksi yang menghubungkan beberapa device menggunakankabel-kabel.
o
Controller adalah alat-alat elektronik yang berfungsi untuk mengoperasikanport,
bus, dan device.
b.Application I/O Interface
Merupakan suatu mekanisme untuk mempermudah pengaksesan,
sehingga sistem operasi
melakukan
standarisasi cara pengaksesan peralatan I/O. Contoh : suatu aplikasi
ingin membuk data yang ada dalam suatu disk, aplikasi tersebut harus dapat
membedakan jenis disk apa yang akan diaksesnya.
Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Device drivermengenkapsulasi tiap-tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum (interfacestandar). 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.
ingin membuk data yang ada dalam suatu disk, aplikasi tersebut harus dapat
membedakan jenis disk apa yang akan diaksesnya.
Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Device drivermengenkapsulasi tiap-tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum (interfacestandar). 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.
Beberapa
hal yang berhubungan dengan Application I/O Interface adalah:
1.Peralatan Block dan Karakter:
– Perangkat Block termasuk disk drive
o Perintah termasuk baca, tulis dan cari
o Raw I/O atau akses file-sistem
o Pemetaan memori untuk pengaksesan file
.– Perangkat karakter termasuk keyboad, mouse dan
serial port
o Perintahnya seperti get, put
o Library layered dalam proses pengeditan
2.Peralatan Jaringan
Adanya perbedaan pengalamatan dari jaringan I/O, maka sistem
operasi memiliki interface I/O yang berbeda dari baca, tulis dan pencarian pada
disk. Salah satu yang banyak digunakan pada sistem operasi adalah interface
socket. Socket berfungsi untuk menghubungkan komputer ke jaringan. System call
pada socket interface dapat memudahkan suatu aplikasi untuk membuat local
socket, dan menghubungkannya ke remote socket.Dengan menghubungkan komputer ke socket,
maka komunikasi antar komputer dapat dilakukan.
3.Jam
dan Timer Jam dan timer pada hardware komputer, memiliki tiga fungsi :
o memberi informasi waktu saat ini
o memberi informasi lamanya waktu sebuah proses
o sebagai trigger untuk suatu operasi pada suatu waktu.
Fungsi ini sering digunakan oleh sistem operasi. Akan tetapi,
system call untuk pemanggilan fungsi ini tidak di-standarisasi antar
sistem operasi. Hardware yang mengukur waktu dan melakukan operasi trigger
dinamakan programmable interval timer yang dapat di set untuk menunggu waktu
tertentu dan kemudian melakukan interupsi. Contoh penerapannya ada pada scheduler,
dimana akan melakukan interupsi yang akan memberhentikan suatu proses
pada akhirdari bagian waktunya. Sistem operasi dapat mendukung lebih dari banyak timer request dari pada banyaknya jumlah hardware timer. Dengan kondisi seperti ini, maka kernel atau device driver mengatur list dari interupsi dengan urutan yang duluan datang yang duluan dilayani.
pada akhirdari bagian waktunya. Sistem operasi dapat mendukung lebih dari banyak timer request dari pada banyaknya jumlah hardware timer. Dengan kondisi seperti ini, maka kernel atau device driver mengatur list dari interupsi dengan urutan yang duluan datang yang duluan dilayani.
c.Kernel I/O subsystems
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,
pooling, reservasi device, error handling.
1.I/O Scheduling
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,
pooling, reservasi device, error handling.
1.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.
2. Buffering
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.
2. Buffering
Buffer adalah area memori yang menyimpan data ketika mereka
sedang dipindahkan
antara dua device atau antara device dan aplikasi. Buffering dilakukan untuk tiga buah
alasan. Alasan pertama adalah untuk men-cope dengan kesalahan yang terjadi karena
perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data. Sebagai
contoh, sebuah file sedang diterima melalui modem dan ditujukan ke media penyimpanan
di hard disk. Kecepatan modem tersebut kira-kira hanyalah 1/1000 daripada hard disk. Jadi
buffer dibuat di dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari
modem. Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis
ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan
modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka
dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk
menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer pertama
dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer kedua, penulisan
ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan berganti kembali
memenuhi buffer pertama dan buffer kedua dipakai untuk menulis. Metode double
buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus
mengurangi kebutuhan waktu di antara mereka.
Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai
perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan komputer,
dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan
yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan dipecah ke paket-paket
kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka
di dalam buffer untuk disusun kembali. Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer
aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara buffer kernel data
aplikasi merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi
karena operasi ini karena clean semantics. Kita dapat memperoleh efek yang sama
yang lebih efisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire
dengan pintar.
antara dua device atau antara device dan aplikasi. Buffering dilakukan untuk tiga buah
alasan. Alasan pertama adalah untuk men-cope dengan kesalahan yang terjadi karena
perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data. Sebagai
contoh, sebuah file sedang diterima melalui modem dan ditujukan ke media penyimpanan
di hard disk. Kecepatan modem tersebut kira-kira hanyalah 1/1000 daripada hard disk. Jadi
buffer dibuat di dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari
modem. Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis
ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan
modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka
dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk
menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer pertama
dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer kedua, penulisan
ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan berganti kembali
memenuhi buffer pertama dan buffer kedua dipakai untuk menulis. Metode double
buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus
mengurangi kebutuhan waktu di antara mereka.
Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai
perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan komputer,
dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan
yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan dipecah ke paket-paket
kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka
di dalam buffer untuk disusun kembali. Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer
aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara buffer kernel data
aplikasi merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi
karena operasi ini karena clean semantics. Kita dapat memperoleh efek yang sama
yang lebih efisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire
dengan pintar.
3. 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 cache 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 scheduling I/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 cache
selama 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 bagian Remote File Access.
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 cache 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 scheduling I/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 cache
selama 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 bagian Remote File Access.
4.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. Untuk beberapa device, seperti drive tapedan printer
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 membuang device 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.
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. Untuk beberapa device, seperti drive tapedan printer
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 membuang device 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.
5.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 t
etapi, beberapa perangkat keras dapat menyediakan informasi kesalahan yang detail,
walaupun banyak sistem operasi yang tidak mendukung fasilitas ini.
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 t
etapi, beberapa perangkat keras dapat menyediakan informasi kesalahan yang detail,
walaupun banyak sistem operasi yang tidak mendukung fasilitas ini.
6.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/O lainnya. 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/O
akan 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-share struktur data, tetapi akan mensederhanakan struktur
dan design dari sistem I/O tersebut dan menambah fleksibilitas.
menggunakan banyak struktur yang mirip untuk melacak koneksi jaringan, komunikasi
karakter-device, dan aktivitas I/O lainnya. 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/O
akan 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-share struktur data, tetapi akan mensederhanakan struktur
dan design dari sistem I/O tersebut dan menambah fleksibilitas.
d.I/O Requests to Hardware Operations
Salah satu contohnya adalah:
a. Ilustrasi membuka sebuah
– Device mana tempat file yang akan dibuka
– Menerjemahkan _nama_ ke dalam device yang dimaksud
– Membaca secara fisik file yang hendak dibuka
– Data sudah siap untuk diakses
– Mengembalikan kontrol pada proses
b.Ilustrasi lain pada waktu boot
Sistem mula-mula meminta bus piranti keras untuk menentukan
device apa yang ada
e.Streams
I/O stream adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data (dua arah).Biasa digunakan dalam network protocol dan menggunakan message passingdalam men-transferdata Stream terdiri atas :
I/O stream adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data (dua arah).Biasa digunakan dalam network protocol dan menggunakan message passingdalam men-transferdata Stream terdiri atas :
–
sebuah stream head yang merupakan antarmuka dengan user process,
– sebuah
driver end yang mengontrol device,
–
dan nol atau lebih stream modules
G.Performance
Faktor utama dalam performa sistem
Faktor utama dalam performa sistem
o
Permintaan CPU untuk menjalankan device driver, kode kernel I/O
o
Keadaan/state untuk melayani interrupt
o
Copy data
o
Network traffic khususnya pada beban kinerja
Improving
Perfomance:
– Menurunkan
jumlah alih konteks.
–
Mengurangi jumlah pengkopian data ke memori ketika sedang dikirimkan antara
device dan aplikasi.
–
Mengurangi frekuensi interupsi, dengan menggunakan ukuran transfer yang besar,
smart
controller, dan polling.
–
Meningkatkan concurrency dengan controller atau channel yang mendukung DMA.
–
Memindahkan kegiatan processing ke perangkat keras, sehingga operasi kepada
device controller dapat berlangsung bersamaan dengan CPU.
–
Menyeimbangkan antara kinerja CPU, memory subsystem, bus, dan I/O.
BUS MASUKAN DAN KELUARAN
Sistem
Komputer
Sistem komputer memiliki tiga
komponen utama, yaitu : CPU, Memory (primer & sekunder), dan peralatan
masukan/keluaran (I/O) seperti printer, monitor, keyboard, mouse dan modem.
dalam menjalankan fungsinya sebagai masukan dan keluaran diperlukan modul I/O.
Modul I/O merupakan peralatan antarmuka (interface) bagi
sistem bus atau switch sentral dan mengontrol satu atau lebih
perangkat periperhal.
Modul
I/O tidak hanya sekedar mosul penghubung, tetapi sebuah piranti yang berisi
logika dalam melakukan fungsi komunikasi antara perperhal dan bus
komputer. Ada beberapa alasan kenapa tidak langsung dihubungkan dengan bus
komputer yaitu:
1. Bervariasinya
metode operasi piranti periperhal, sehingga tidak praktis apabila sistem
komputer harus menangani berbagai macam sistem operasi periperhal tersebut.
2. Kecepatan
transfer data piranti periperhal umumnya lebih lambat daripada laju transfer
data pada CPU
3. Format
dan panjang data pada piranti periperhal seringkali berbeda dengan CPU,
sehingga perlu modul untuk menselaraskannya.
Dari
beberapa alasan diatas, modul I/O memiliki 2 buah fungsi utama, yaitu :
1. Sebagai
piranti antarmuka ke CPU dan memori melalui bus sistem.
2. Sebagaimana
piranti antarmuka dengan peralatan periperhal lainnya menggunakan link data
tertentu.
Sistem Masukan dan Keluaran
Komputer
Bagaimana modul I/O dapat menjalankan tugasnya, yaitu menjembatani CPU
dan memori dengan dunia luar merupakan hal terpenting untuk kita ketahui. Inti
mempelajari sistem I/O komputer adalah mengetahui fungsi dan struktur kerja
modul I/O.
Fungsi Modul Input/Output
Modul
I/O adalah sebuah komponen dalam sistem komputer yang bertanggung jawab atas
pengontrolan sebuah perangkat luar atau lebih dan bertanggung jawab juga
terhadap pertukaran data antara perangkat luar tersebut dengan memori utama
ataupun register-register dalam CPU. Dalam mewujudkan fungsi tersebut,
diperlukan antarmuka internal dengan komputer (CPU dan memori utama) dan antarmuka
dengan perangkat eksternalnya untuk menjalankan fungsi-fungsi pengontrolan.
Dua fungsi
utama Modul I/O ialah :
Sebagai
piranti antarmuka ke CPU dan memori melalui bus sistem.
Sebagai
piranti antarmuka dengan peralatan peripheral lainnya dengan menggunakan link
data tertentu
Fungsi dalam menjalankan tugas, modul I/O dapat dibagi menjadi beberapa
kategori, yaitu:
·
Kontrol dan pewaktuan
·
Komunikasi CPU
·
Komunikasi dengan perangkat eksternal
·
Pem-buffer-an data
·
Deteksi kesalahan
Fungsi
kontrol dan pewaktuan (control & timming) merupakan hal yang penting
untuk mensinkronkan kerja masing-masing komponen penyusun komputer. Dalam
sekali waktu CPU berkomunikasi dengan satu atau lebih perangkat dengan pola
tidak menentu dan kecepatan transfer data yang beragam, baik dengan perangkat
internal seperti register-register, memori utama, memori sekunder, perangkat
periperhal. Proses tersebut bisa berjalan apabila ada fungsi kontrol dan
pewaktuan yang mengatur sistem secara keseluruhan. Contoh kontrol
pemindahan data dari periperhal ke CPU melalui sebuah modul I/O meliputi
langkah-langkah sebagai berikut:
1. Permintaan
dan pemeriksaan status perangkat dari CPU ke modul I/O.
2. Modul
I/O memberikan jawaban atas permintaan CPU tersebut.
3. Apabila
perangkat eksternal telah siap untuk transfer data, maka CPU akan mengirimkan
perintah ke modul I/O
4. Modul
I/O akan menenrima paket data dengan panjang tertentu dari periperhal.
5. Selanjutnya
data dikirim ke CPU setelah diadakan seinkronisasi panjang data dan kecepatan
transfer oleh modul I/O sehingga paket-paket data dapat diterima CPU dengan
baik.
Transfer data tidak akan lepas dari penggunaan sistem bus, maka interaksi
CPU dan modul I/O akan melibatkan kontrol dan pewaktuan sebuah arbitrasi bus
atau lebih. Ada fungsi komunikasi antara CPU dan modul I/O meliputi
proses-proses berikut ini :
·
Command Decoding, yaitu
modul I/O menerima perintah-perintah dari CPU yang dikirimkan sebagai sinyal
bus kontrol. Misalnya, sebuah modul I/O untuk disk dapat menerima perintah :
Read sector, Scan Record ID, Format disk.
·
Data,
pertukaran data antara CPU dan modul I/O melalui bus data.
·
Status Reporting, yaitu
pelaporan kodisi status modul I/O maupun perangkat periperhal, umumnya berupa
status kondisi busy atauready. Juga status
bermacam-macam kodisi kesalahan (error).
·
Address recognition, bahwa
peralatan atau komponen penyusun komputer dapat dihubungi atau dipanggil maka
harus memiliki alamat yang unik, begitu pula pada perangkat periperhal,
sehingga setiap modul I/O harus mengetahui alamat periperhal yang dikontrolnya
Pada
sisi modul I/O ke perangkat periperhal juga terdapat komunikasi yang meliputi
komunikasi data, kontrol maupun status. Fungsi selanjutnya adalah buffering. Tujuan
utama buffering adalah mendapatkan penyesuaian data sehubungan
perbedaan laju transfer data dari perangkat periperhal dengan kecepatan
pengolahan pada CPU . Umumnya laju transfer data pada dari perangkat periperhal
lebih lambat dari kecepatan CPU maupun media penyimpanan.
Fungsi terakhir adalah deteksi kesalahan. Apabila pada perangkat
periperhal terdapat masalah sehingga proses tidak dapat dijalankan, maka modul
I/O akan melaporkan kesalahan tersebut. Misalnya informasi pada periperhal
printer seperti: kertas tergulung, kertas habis, tinta habis, dan lain-lain.
Teknik yang umum untuk deteksi kesalahan adalah penggunaan bit paritas.
Struktur Modul Input/Output
Terdapat berbagai macam modul I/O seiring perkembangan komputer
itu sendiri, contoh yang sederhana dan fleksibel adalah intel 8255A yang
sering disebut PPI (Programmable Periperhal Interface). Bagaimanapun
komplesitas suatu modul I/O terdapat kemiripan struktur,.
Antarmuka modul I/O ke
CPU melalui bus sistem komputer terdapat tiga saluran, yaitu saluran data,
saluran alamat dan saluran kontrol. Bagian terpenting adalah blok logika I/O
yang berhubungan dengan semua peralatan antarmuka periperhal,
terdapat fungsi pengaturan dan switchingpada blok ini.
Teknik Masukan dan Keluaran
Terdapat
tiga buah teknik operasi I/O, yaitu : I/O terprogram, interrupt-driven
I/O, dan DMA (Dirrect Memory Access). Ketiganya memiliki
keunggulan dan kelemahan, yang penggunanya disesuaikan sesuai unjuk kerja
masing-masing teknik.
I/O Terprogram
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 atau tulis dan monitoring
perangkat.
I/O
terprogram mempunyai kelemahan sebagai berikut :
CPU akan menunggu
sampai operasi I/O selesai dilakukan modul I/O sehingga akan membuang waktu,
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
Untuk
melaksanakan perintah-perintah I/O, CPU akan mengeluarkan sebuah alamat bagi
modul I/O dan perangkat periperhalnya sehingga terspesifikasi secara khusus dan
sebuah perintah I/O yang akan dilakukan. Terdapat empat klasifikasi perintah
input/output, yaitu:
1. Perintah
Control yaitu perintah yang digunakan untuk mengaktivasi perangkat
periperhal dan memberitahukan tugas yang diperintahkan kepadanya.
2. Perintah
Test, yaitu perintah yang digunakan CPU untuk
menguji berbagai kondisi status modul I/O dan periperhalnya. CPU perlu
mngetahui perangkat periperhalnya dalam keadaan aktif dan siap digunakan, juga
untuk megetahui operasi-operasi I/O yang dijalankan serta mendeteksi
kesalahannya.
3. Perintah
Read, yaitu perintah pada modul I/O untuk mengambil
suatu paket data kemudian menaruhnya di dalam buffer internal. Proses
selanjutnya paket data dikirim melalui bus data setelah terjadi sinkronisasi
data maupun kecepatan transfernya.
4. Perintah
Write, Perintah ini kebalikan dari read. CPU
memerintahkan modul I/O untuk mengambil data dari bus data untuk diberikan pada
perangkat periperhal tujuan data tersebut.
Dalam
teknik I/O terprogram, terdapat dua macam implementasi perintah I/O yang
tertuang dalam instruksi I/O, yaitu memory mapped I/Odan isolated
I/O.
Dalam memory mapped I/O, terdapat ruang tunggal untuk lokasi
memori dan perangkat I/O. CPU memperlakukan register status dan register data
pada modul I/O sebagai lokasi memori dan menggunakan instruksi mesin yang sama
untuk mengakses baik memori maupun perangkat I/O. Konsekuensinya adalah
diperlukan saluran tunggal untuk pembacaan dan saluran tunggal untuk penulisan.
Keuntungan memory mapped ini adalah efisien dalam pemrograman namun memakan
banyak ruang memory alamat.
Dalam
teknik isolated I/O, dilakukan pemisahan ruang pengalamatan
bagi memori dan ruang pengalamatan bagi I/O. Dengan teknik ini diperlukan bus
yang dilengkapi dengan pembacaan dan penulisan memori ditambah dengan saluran
perintah output. Kesuntungan isolated I/O adalah sedikitnya instruksi I/O.
Interrupt - Driven I/O
Teknik
interupt driven I/O memungkinkan proses memungkinkan proses tidak
membuang-buang waktu. Prosesnya adalah CPU mengeluarkan perintah I/O pada modul
I/O, bersamaan perintah I/O dijalankan oleh modul I/O, maka CPU melakukan
eksekusi perintah-perintah lainnya. Apabila modul I/O telas selesai menjalankan
instruksi yang diberikan padanya, maka modul I/O tersebut kemudian akan memberikan
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.
Cara kerja
teknik interupsi di sisi modul I/O adalah modul I/O menerima perintah,
misalnya read. Kemudian modul I/O melaksanakan perintah pembacaan
dari periperhal dan meletakkan paket data ke register data modul I/O,
selanjutnya modul mengeluarkan sinyal interupsi ke CPU melalui saluran kontrol.
Kemudian mosul menunggu datanya diminta CPU. Saat permintaan terjadi, modul
meletakkan data pada bus data dan modul siap menerima perintah selanjutnya.
Pengolahan interupsi saat perangkat I/O telah menyelesaikan sebuah
operasi I/O adalah sebagai berikut:
1. Perangkat
I/O akan mengirimkan sinyal interupsi ke CPU.
2. CPU
menyelesaikan operasi yang sedang dijalankan kemudian merespon interupsi.
3. CPU
memeriksa interupsi tersebut, kalau valid maka CPU akan mengirimkan sinyal
acknoledgement ke perangkat I/O untuk menghentikan interupsinya.
4. CPU
mempersiapkan pengontrolan transfer routine interupsi. Hal yang dilakukan
adalah menyimpan informasi yang diperlukan untuk melanjutkan operasi yang tadi
dijalankan sebulum adanya interupsi. Informasi yang diperlukan berupa
: Status Processor, berisi register yang dipanggil PSW (Program Status
Word) dan Lokasi intruksi berikutnya yang akan dieksekusi
5. Kemudian
CPU akan menyimpan PC (Program Counter) eksekusi sebelum interupsi ke stack
pengontrol bersama informasi PSW. Selanjutnya mempersiapkan PC untuk penanganan
interupsi.
6. Selanjutnya
CPU memproses interupsi sampai selesai.
7. Apabila
pengolahan interupsi selesai, CPU akan memanggil kembali informasi yang telah
disimpan pada stack pengontrol untuk meneruskan operasi sebelum interupsi.
Terdapat bermacam teknik yang digunakan CPU untuk menangani interupsi ini
diantaranya adalah Multiple interupt lines, Software poll, Daisy Chain,
Arbitrasi bus. Teknik yang paling sederhana adalah menggunakan saluran
interupsi berjumlah banyak (Multiple Interupt Lines) antara CPU dengan modul-modul
I/O. Namun tidak praktis untuk menggunakan sejumlah saluran interupsi modul -
modul I/O.
Alternatif lainnya menggunakan software poll. Prosesnya apabila CPU mengetahui
adanya interupsi, maka CPU akan menuju ke routine layanan interupsi yang tugasnya
melakkukan poll seluruh modul I/O untuk menentukan modul yang akan melakukan
interupsi. Kerugian software poll adalah memerlukan waktu yang lama karen
aharus mengidentifikasi seluruh modul untuk mengetahui modul I/O yang melakukan
interupsi.
Teknik
yang lebih efisien adalah daisy chain, yang menggunakan hardware poll.
Seluruh modul yang tersambung dalam saluran interupsi CPU secara
melingkar (chain). Apabila ada permintaan interupsi, maka CPU akan menjalankan
sinyal acknoledgement yang berjalan pada saluran interupsi sampai menjumpai
modul I/O yang mengirimkan interupsi.
siippp....kasih "read more..." biar artikele dihalaman gak terlalu panjang
ReplyDelete