Kamis, 17 Februari 2011

Pengenalan kontrol Input/output

PENGENALAN KONTROL INPUT/OUTPUT

Definisi dan Persyaratan Kontrol I/O

Sebuah sistem kontrol I/O bertujuan untuk memberikan bantuan kepada user untuk memungkinkan mereka mengakses berkas, tanpa memperhatikan detail dari karakteristik dan waktu penyimpanan. Kontrol I/O menyangkut manajemen berkas dan peralatan manajemen yang merupakan bagian dari sistem operasi.

Tugas dari Sistem Kontrol I/O adalah :

1) Memelihara directori dari berkas dan lokasi informasi

2) Menentukan jalan bagi aliran data antara main memory dan alat penyimpanan sekunder

3) Mengkoordinasi komunimasi antara CPU dan alat penyimpanan sekunder

4) Menyiapkan berkas penggunaan input atau output telah selesai

Channel

Pada kebanyakan sistem komputer, CPU tidak dibebani menangani tugas yang berhubungan dengan I/O. Tetapi tanggung jawab untuk kontrol peralatan diserahkan pada prosesor I/O, yang dikenal sebagai saluran I/O (I/O channel).

Saluran I/O itu sendiri merupakan prosesor yang sudah diprogram. Program-program yang di-execute ini disebut channel program. Channel program ini menentukan operasi, yang diperlukan untuk akses peralatan dan mengontrol jalur data (data pathway). System operasi memberikan rutin standar yang digunakan untuk menjalankan saluran I/O.

Channel adalah processor yang melaksanakan I/O statement. Control Unit untuk melaksanakan fungsi mekanik dari channel. Standard Interface adalah penghubung antara channel dan Control Unit.

Saluran I/O ini diperintah oleh system operasi dan kemudian oleh CPU. Saluran I/O ini tidak mengendalikan alat penyimpanan secara langsung tetapi saluran I/O ini menetapkan satu atau lebih unit alat pengontrol. Susunan ini penting untuk menyederhanakan channel program, sebagi tanggung jawab dari unit-unit pengontrol untuk menerjemahkan sinyal I/O bagi peralatan yang dikontrolnya.

System operasi I/O dapat dimulai, jalur antara memori utama dengan peralatan harus sudah ditentukan. Jika saluran, unit pengontrol atau peralatan yang dituju sedang sibuk, maka konstruksi dari pathway harus menunggu. Untuk menghindari menunggu, system computer dilengkapi dengan beberapa saluran dan unit-unit pengontrol.


Macam-macam Channel

1. Selector Channel;

Dapat mengatur aliran data antara memori utama dengan sebuah peralatan pada saat tersebut. Karena saluran merupakan processor-processor yang cepat maka saluran selektor biasanya hanya menggunakan peralatan I/O dengan kecepatan tinggi, seperti disk. Penggunaan peralatan dengan kecepatan rendah, misal card reader. Merupakan suatu pemborosan terhadap kemampuan pemrosesan saluran.

2. Multiplexor Channel;

Dapat mengatur aliran data antara memori utama dengan beberapa peralatan. Saluran Multiplexor lebih efektif bila menggunakan peralatan dengan kecepatan rendah, dibandingkan dengan selector channel. Dengan saluran multiplexor, beberapa peralatan dapat diaktifkan secara serentak, tetapi saluran harus melengkapi saluran program untuk satu peralatan sebelum memulai dengan saluran program lain. Saluran program mengontrol pembacaan tunggal ke peralatan.

3. Block Multiplexor Channel;

Mengatur aliran data ke berbagai peralatan. Block Multiplexor Channel dapat mengeksekusi satu instruksi dari saluran program untuk satu peralatan, kemudian dapat mengalihkan instruksi-instruksi dari saluran program itu ke peralatan yang lain. Setiap saluran program dapat terdiri dari beberapa instruksi.

Macam-macam Device

1. Dedicated Device;

Digunakan untuk pengaksesan oleh satu orang pada setiap saat.

Contoh : Terminal. bersifat tidak komplek

2. Shared Device;

Digunakan untuk pengaksesan oleh banyak pemakai secara bersamaan.

Contoh : Disk. bersifat kompleks

Aktifitas I/O untuk shared device adalah sangat kompleks dibanding aktifitas I/O pada dedicated device. Dua fungsi yang sangat penting dari shared device adalah alokasi tempat dan pemberian akses yang tepat.

Aktifitas Saluran

Tujuan dari saluran I/O adalah sebagai perantara antara CPU-main memory dengan unit pengontrol penyimpan. CPU berkomunikasi dengan saluran melalui beberapa perintah yang sederhana.

Beberapa saluran akan memberi perintah :

q Test I/O, untuk menentukan apakah jalur (pathway) yang menuju peralatan sedang sibuk.

q Start I/O, pada peralatan tertentu.

q Halt I/O, pada peralatan tertentu.

Saluran biasanya berkomunikasi dengan CPU melalui cara interupsi. Interupsi akan terjadi, jika keadaan error terdeteksi, misalnya instruksi CPU yang salah atau jika aktifitas I/O telah diakhiri.

Jika interupsi terjadi, kontrol akan bercabang melalui rutin pengendali interupsi (interrupt-handler routine), dimana kontrol akan menentukan penyebab dari interupsi, melakukan kegiatan yang tepat, kemudian mengembalikan kontrol pada pemanggil (caller).

Jika sebuah program membutuhkan READ dari suatu berkas, maka serangkaian peristiwa pada gambar ini akan terjadi.


  1. Program mengeluarkan sebuah READ, yang menginterupsi pengontrol I/O.
  2. Pengontrol I/O membuat sebuah saluran program pada memori utama.
  3. Saluran program dibaca dan dieksekusi oleh pemanggil saluran.
  4. Sinyal yang tepat akan ditransmisikan ke pemanggil unit control.
  5. Sinyal ini diterjemahkan oleh unit control dan digunakan untuk mengontrol peralatan operasi untuk membaca data yang diminta.
  6. Data yang diminta akan mengalir dari peralatan sepanjang jalur (pathway) ke daerah penampung berkas (file buffer area) dalam ruang memori utama.
  7. Interupsi yang dikeluarkan oleh saluran, digunakan untuk meneruskan sinyal pada waktu eksekusi program.
  8. Kontrol kembali ke program

Catatan : data dibaca ke dalam buffer, dimana buffer ini merupakan suatu tempat pada memori utama, yang disediakan untuk menampung data. Jika buffer penuh, program akan segera menggunakan data tersebut.

Rangkaian sekilas dari peristiwa yang terjadi, yaitu ketika sebuah program meminta WRITE pada sebuah berkas, akses I/O akan digiatkan. Peristiwa ini harus terjadi untuk setiap instruksi READ dan WRITE yang di tunjuk pada peralatan.

Teknik yang sering digunakan untuk mengurangi jumlah peralatan pada waktu meminta block record, sedemikain rupa sehingga beberapa record akan dibaca/ditulis dalam suatu akses tunggal pada peralatan. Jika ada n record per block, maka hanya setiap READ dank e-n, yang akan diakses oleh suatu program pada suatu peralatan. Biasanya instruksi READ diubah menjadi instruksi GET oleh system control I/O. kemudian suatu channel program menterjemahkan instruksi GET ke peralatan READ. Jika buffer kosong, mengakibatkan buffer akan diisi. Instruksi GET mengambil record berikutmya dari buffer.


Buffer menyediakan tempat penyimpanan yang dibutuhkan untuk menetetapkan peralatan penyimpanan yang relative lambatdengan CPU yang lebih cepat. Buffer juga menyediakan tempat penyimpanan, dimana pengelompokan record menjadi lebih mudah dikerjakan. Karena itu mengapa factor pengelompokan yang besar menjadi sangat penting untuk memberikan penampilan / penunjukan pada organisasi berkas sequential. Setiap record pada berkas akan diakses, sehingga diharapkan sebanyak mungkin record dapat sdikaerjakan sekaligsu pada waktu itu juga.

Manajemen Buffer

Terbagi menjadi 4 jenis manajemen yaitu :

1. Single Buffering;

2. Anticipatory Buffering;

3. Double Buffering;

4. Three Buffers;

1. Single Buffering

Gambar di atas menunjukkan struktur data dari buffer dalam bentuk yang sederhana, yang terdiri dari satu record per-block dan satu buffer per-berkas, dimana buffer ini berfungsi mengisikan permintaan dari sebuah program. Struktur buffer ini berisi sebuah pointer pada alamat awal & channel program untuk berkas.

Struktur dasar dari channel program untuk mengisi buffer adalah :


o Tunggu instruksi READ dari program

o Memberitahukan instruksi start I/O ke unit kontrol

o Tunggu hingga buffer dikosongkan

o Memberitahukan interupsi pada program sehingga dapat mulai membaca dari buffer

Masalah yang timbul di sini adalah pemakai program menganggur pada saat menunggu buffer diisi.

2. Anticipatory Buffering;

Pendekatan lain yang dapat menghilangkan beberapa hal yang mungkin untuk menunggu CPU adalah dengan menggunakan Anticipatory Buffering.

Dengan anticipatory buffering, sistem kontrol I/O akan berusaha mendahulukan kebutuhan program akan data. Diusahakan agar buffer selalu penuh. Channel selalu menguji flag ini. Jika buffer mendekati kosong, karena pemakai program telah membaca isinya maka flag itu akan direset dan channel program akan menginitates pengisian kembali buffer.

Struktur dasar channel program untuk mengisi sebuah buffer dengan anticipatory buffer diperlihatkan pada gambar di bawah ini :


3. Double Buffering;

Untuk mengurangi kemungkinan dari program menunggu, maka double buffer dapat digunakan. Dua dari tempat buffer yang ada, hanya satu yang ditetapkan untuk berkas.

Ide dasar dari double buffering adalah jika consumer mengosongkan salah satu buffer, maka producer dapat mengisikan ke dalam buffer yang lain, pada saat buffer pertama sudah kosong, maka buffer yang kedua harus dalam keadaan penuh. Kemudian consumer dapat mengkosongkan buffer yang kedua, pada saat producer mengisi buffer yang pertama, demikian seterusnya.

Struktur buffer untuk double buffering terdiri dari sebuah pointer yang menunjuk ke buffer berikutnya. Adanya printer ini memungkinkan rutin producer dan consumer menjadi hal yang sangat umum.


4. Three Buffers :


pfill : yang menunjukkan buffer berikutnya akan diisi atau sedang diisi

pempty : yang menunjukkan buffer berikutnya akan dikosongkan atau sedang dikosongkan.

Buffer 1 penuh .

Buffer 2 sedang diisi.

Buffer 3 sedang dikosongkan, record ke-m didalam buffer akan dibaca kedalam tempat kerja record berikutnya.

Buffer berikutnya yang akan kosong adalah buffer 1.

Buffer berikutnya yang akan diisi adalah buffer 3.

Pada pendekatan ini, dianggap jika suatu buffer kosong, producer akan bergerak akan mengisinya. Sebagai contoh, jika, setelah buffer 3 diisi pada keadaan diatas consumer tetap akan mengosongkan buffer 1,kemudian producer mengisi buffer 2 selanjutnya consumer akan menunggu.

Jika producer secara konsisten mengisi buffer pada kecepatan yang lebih rendah dibanding kecepatan pada saat consumer mengosongkannya, maka consumer akan menunggu. Multiple buffering dapat lebih efektif dalam melancarkan hasil dari data yang tidak teratur, yang diperlukan oleh pemakai program.

Keuntungan menggunakan lebih dari 1 buffer adalah kemampuannya untuk saling melengkapi operasi pengisian dan pengosongan, dengan demikian mengurangi waktu tunggu. Biaya dari multiple buffering agak meningkat terhadap keruwetan dan waktu pemrosesan dari rutin producer dan rutin consumer, serta memerlukan penambahan memory utama.

0 komentar:

Posting Komentar