Struktur Sistem Komputer

A. Struktur Sistem Komputer

Struktur sebuah sistem komputer dapat dibagi menjadi:

• Sistem Operasi Komputer.
• Struktur I/O.
• Struktur Penyimpanan.
• Proteksi Perangkat Keras.

2.1. Sistem Operasi Komputer
Dewasa ini sistem komputer multiguna terdiri dari CPU (Central Processing Unit), serta sejumlah device controller yang dihubungkan melalui bus yang menyediakan akses ke memori. Setiap device controller bertugas mengatur perangkat yang tertentu (contohnya disk drive, audio device, dan video display). CPU dan device controller dapat dijalankan secara bersamaan, namun demikian diperlukan mekanisme sinkronisasi untuk mengatur akses ke memori. Pada saat komputer pertama kali dijalankan atau pada saat boot, terdapat sebuah program awal yang mesti dijalankan. Program awal ini disebut program bootstrap. Program ini berisi semua aspek dari sistem komputer, mulai dari register CPU, device controller, sampai isi memori.

2.2. Struktur I/O
Bagian ini akan membahas struktur I/O, yang terdiri dari interupsi I/O, dan DMA, serta perbedaan dalam penanganan interupsi.


Struktur I/O 

2.2.1. Interupsi I/O

Interupsi merupakan bagian penting dari sistem arsitektur komputer. Setiap sistem komputer memiliki mekanisme yang berbeda. Interupsi bisa terjadi apabila perangkat keras (hardware) atau perangkat lunak (software) minta “dilayani” oleh prosesor. Apabila terjadi interupsi maka prosesor menghentikan proses yang sedang dikerjakannya, kemudian beralih mengerjakan service routine untuk melayani interupsi tersebut. Setelah selesai mengerjakan service routine maka prosesor kembali melanjutkan proses yang tertunda. Untuk memulai operasi I/O, CPU me-load register yang bersesuaian ke device controller. Sebaliknya device controller memeriksa isi register untuk kemudian menentukan operasi apa yang harus dilakukan. Pada saat operasi I/O dijalankan ada dua kemungkinan, yaitu synchronous I/O dan asynchronous I/O. Pada synchronous I/O, kendali dikembalikan ke proses pengguna setelah proses I/O selesai dikerjakan. Sedangkan pada asynchronous I/O, kendali dikembalikan ke proses pengguna tanpa menunggu proses I/O selesai. Sehingga proses I/O dan proses pengguna dapat dijalankan secara bersamaan.




2.2.2. Struktur DMA

Direct Memory Access (DMA) adalah suatu metoda penanganan I/O dimana device controller langsung berhubungan dengan memori tanpa campur tangan CPU. Setelah men-set buffers, pointers, dan counters untuk perangkat I/O, device controller mentransfer blok data langsung ke penyimpanan tanpa campur tangan CPU. DMA digunakan untuk perangkat I/O dengan kecepatan tinggi. Hanya terdapat satu interupsi setiap blok, berbeda dengan perangkat yang mempunyai kecepatan rendah dimana interupsi terjadi untuk setiap byte (word).

Seluruh proses DMA dikendalikan oleh sebuah controller bernama DMA Controller (DMAC). DMA Controller mengirimkan atau menerima signal dari memori dan I/O device. Prosesor hanya mengirimkan alamat awal data, tujuan data, panjang data ke DMA Controller. Interrupt pada prosesor hanya terjadi saat proses transfer selesai. Hak terhadap penggunaan bus memory yang diperlukan DMA controller didapatkan dengan bantuan bus arbiter yang dalam PC sekarang berupa chipset Northbridge.

2.3. Struktur Penyimpanan (Hirarki Penyimpanan)
Program komputer harus berada di memori utama (biasanya RAM) untuk dapat dijalankan. Memori utama adalah satu-satunya tempat penyimpanan yang dapat diakses secara langsung oleh prosesor. Idealnya program dan data secara keseluruhan dapat disimpan dalam memori utama secara permanen. Namun hal ini tidak mungkin dilakukan karena:
• Ukuran memori utama relatif kecil untuk dapat menyimpan data dan program secara keseluruhan.
• Memori utama bersifat volatile, tidak bisa menyimpan secara permanen, apabila komputer dimatikan maka data yang tersimpan di memori utama akan hilang.


Hirarki Storage

2.3.1. Register

Tempat penyimpanan beberapa buah data volatile yang akan diolah langsung di prosesor yang berkecepatan sangat tinggi. Register ini berada di dalam prosesor dengan jumlah yang sangat terbatas karena fungsinya sebagai tempat perhitungan/komputasi data.

2.3.2. Cache Memory

Tempat penyimpanan sementara (volatile) sejumlah kecil data untuk meningkatkan kecepatan pengambilan atau penyimpanan data di memori oleh prosesor yang berkecepatan tinggi. Dahulu cache disimpan di luar prosesor dan dapat ditambahkan. Misalnya pipeline burst cache yang biasa ada di komputer awal tahun 90-an. Akan tetapi seiring menurunnya biaya produksi die atau wafer dan untuk meningkatkan kinerja, cache ditanamkan di prosesor. Memori ini biasanya dibuat berdasarkan desain memori statik.

2.3.3. Random Access Memory

Tempat penyimpanan sementara sejumlah data volatile yang dapat diakses langsung oleh prosesor. Pengertian langsung di sini berarti prosesor dapat mengetahui alamat data yang ada di memori secara langsung. RAM hanya berfungsi selama komputer mendapat dukungan daya listrik (hidup).

2.3.4. Memori Ekstensi

Tambahan memori yang digunakan untuk membantu proses-proses dalam komputer, biasanya berupa buffer. Peranan tambahan memori ini sering dilupakan akan tetapi sangat penting artinya untuk efisiensi. Biasanya tambahan memori ini memberi gambaran kasar kemampuan dari perangkat tersebut, sebagai contoh misalnya jumlah memori VGA, memori soundcard.

2.3.5. Magnetic Disk

Magnetic Disk berperan sebagai secondary storage pada sistem komputer modern. Magnetic Disk disusun dari piringan-piringan seperti CD. Kedua permukaan piringan diselimuti oleh bahan-bahan magnetik. Permukaan dari piringan dibagi-bagi menjadi track yang memutar, yang kemudian dibagi lagi menjadi beberapa sektor.

Memori Sekunder merupakan media penyimpanan data yang non-volatile (bersifat tetap/permanen) yang berupa Flash Drive, Optical Disc, Magnetic Disk (HDD dan FDD), Magnetic Tape. Media ini biasanya daya tampungnya cukup besar dengan harga yang relatif murah. Portability-nya juga relatif lebih tinggi

Struktur Harddisk 


Struktur Optical Drive

2.3.6. Memori Tersier

Pada standar arsitektur sequential computer ada tiga level utama tingkatan penyimpanan: primer, sekunder, and tersier. Memori tersier menyimpan data dalam jumlah yang besar (terabytes, atau 1012 bytes), tapi waktu yang dibutuhkan untuk mengakses data biasanya dalam hitungan menit sampai jam. Saat ini, memori tersiser membutuhkan instalasi yang besar berdasarkan (bergantung) pada disk atau tapes.

Memori tersier tidak butuh banyak operasi menulis tapi memori tersier tipikal-nya write ones atau read many. Meskipun per-megabites-nya pada harga terendah, memory tersier umumnya yang paling mahal, elemen tunggal pada modern supercomputer installations. Ciri-ciri lain: non-volatile, off-line storage, umumnya dibangun pada removable media, contoh Magnetic Tapes.

2.4. Proteksi Perangkat Keras
Sistem komputer terdahulu berjenis programmer-operated systems. Ketika komputer dioperasikan, user mengoperasikan secara manual dan harus melengkapi sistem terlebih dahulu. Setelah sistem operasi lahir maka hal tersebut diambil alih oleh sistem operasi. Sebagai contoh proses output di monitor sudah diambil alih oleh sistem operasi, padahal dahulu hal ini dilakukan oleh pengguna.

Pengertian spooling adalah suatu poses dapat dikerjakan walau pun I/O masih mengerjakan proses lainnya. Pengertian multi-programming adalah kegiatan menjalankan beberapa program pada memori pada satu waktu.

Kegiatan ini memang menguntungkan sebab banyak proses dapat berjalan bersamaan pada satu waktu meski mengakibatkan masalah-masalah baru muncul. Banyak kesalahan pemprograman dideteksi oleh perangkat keras. Kesalahan ini biasanya ditangani oleh sistem operasi. Jika terjadi kesalahan program, perangkat keras akan meneruskan kepada sistem operasi dan sistem operasi akan mengiinterupsi dan mengakhirinya. Pesan kesalahan disampaikan, dan memori dari program akan dibuang. Tapi memori yang terbuang biasanya tersimpan pada disk agar programmer bisa membetulkan kesalahan dan menjalankan program ulang.

2.4.1. Proteksi I/O

Pengguna bisa mengacaukan sistem operasi dengan melakukan instruksi I/O ilegal (mengakses lokasi memori untuk sistem operasi atau melepaskan diri dari prosesor). Untuk mencegahnya kita menganggap semua instruksi I/O sebagai priviledge instruction sehingga mereka tidak bisa mengerjakan instruksi I/O secara langsung ke memori tapi harus lewat sistem operasi terlebih dahulu. Proteksi I/O dikatakan selesai jika pengguna dapat dipastikan tidak akan menyentuh mode monitor. Jika hal ini terjadi proteksi I/O dapat dikompromikan.

2.4.2. Proteksi Memori

Salah satu proteksi perangkat keras ialah dengan proteksi memori yaitu dengan pembatasan penggunaan memori. Disini diperlukan beberapa istilah yaitu:
• Base Register yaitu alamat memori fisik awal yang dialokasikan (boleh digunakan) oleh pengguna.
• Limit Register yaitu nilai batas dari alamat memori fisik awal yang dialokasikan/boleh digunakan oleh pengguna.
• Hardware Protection.

Sebagai contoh sebuah pengguna dibatasi mempunyai base register 300040 dan mempunyai limit register 120900, maka pengguna hanya diperbolehkan menggunakan alamat memori fisik antara 300040 hingga 420940 saja.

B. Register

Register merupakan alat penyimpanan kecil yang mempunyai kecepatan akses cukup tinggi, yang digunakan untuk menyimpan data dan/atau instruksi yang sedang diproses, dan dibentuk oleh 16 titik elektronis di dalam chip mikroprosessor itu sendiri. Dengan adanya tempat-tempat penampungan data sementara ini, proses pengolahan akan bisa dilakukan secara jauh lebih cepat dibandingkan apabila data-data tersebut harus diambil langsung dari lokasi-lokasi memori.

Register yang dibahas di sini adalah register-register yang terdapat pada mikroporsesor keluarga Intel dari 80386-80486, yang mana terdiri dari : general purpose register (register serbaguna), pointer register (register pointer), index register (register indeks), segment register (register segmen), dan flag register (register status). Register-register tersebut semuanya menggunakan register 32-bit, kecuali register segmen yang hanya memiliki lebar 16-bit. Selain sebagai register 32-bit, register lain (selain register segmen) dapat digunakan sebagai register 16-bit, dan khusus untuk register serbaguna dapat digunakan untuk register 8-bit. 

Pada masa mikroprosesor 16-bit, semua registernya adalah 16-bit, kecuali register serbaguna yang dapat berfungsi sebagai register 16-bit dan 8-bit. Sedangkan pada masa mikroprosesor 8-bit register-registernya adalah register 8-bit, kecuali register status yang lebarnya 16-bit.

Berikut adalah penjelasan dari masing-masing register di atas.
1. General Purpose Register
General purpose register adalah register yang dipakai untuk keperluan-keperluan umum pemrograman. Setiap register ini dapat dialamati sebagai register 32-bit, register 16-bit, dan register 8-bit.
Berikut adalah register serbaguna serta fungsi-fungsi khususnya.
a) Accumulator Register
Accumulator register merupakan register serbaguna yang berfungsi sebagai:
a. tempat penyimpanan sementara hasil suatu operasi aritmatika atau logika;
b. tempat memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi;
c. tempat menyimpan bilangan yang dikalikan dan setengah bagian terkecil dari suatu perkalian; dan
d. tempat menyimpan setengah bagian terkecil sebuah bilangan yang akan dibagi dan hasil bagi suatu pembagian.

b) Base Register
Base register adalah register serbaguna yang berfungsi sebagai tempat menyimpan alamat offset data yang terletak di memori.

c) Counter Register
Counter register adalah register serbaguna yang berfungsi sebagai:
a. pencacah untuk operasi loop;
b. pencacah untuk operasi shift dan rotate; dan
c. pencacah untuk operasi string.

d) Data Register
Data register merupakan register serbaguna yang berfungsi sebagai:
a. tempat menyimpan setengah bagian terbesar hasil suatu perkalian bilangan 16-bit dan 32-bit;
b. tempat menyimpan setengah bagian terbesar suatu bilangan yang akan dikenai operasi pembagian, serta sisa suatu pembagian.

2. Pointer Register
Pointer register ini sebenarnya dapat berfungsi sebagai register serbaguna, akan tetapi register ini lebih sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori. Penunjukan alamat ini biasanya dibutuhkan pada saat operasi perpindahan data dari atau ke memori, operasi stack, dan penunjukan alamat suatu instruksi yang akan dieksekusi.

Berikut ini adalah register-register yang termasuk dalam kategori pointer register beserta fungsi-fungsi khususnya.
a) Stack Pointer Register (SP dan ESP)
Berpasangan dengan register SS, ditulis sebagai “SS:SP”, stack pointer register berfungsi untuk:
a. menunjukkan alamat stack memori pada operasi PUSH dan POP.
b. menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan mengarahkan kembali control unit ketika prosedur yang dipanggil telah selesai dieksekusi.

b) Base Pointer Register (BP)
Berpasangan dengan register SS, ditulis sebagai “SS:BP”, base pointer register berfungsi untuk menunjukkan alamat sebuah data di suatu lokasi memori.

c) Instruction Pointer Register (IP)
Berpasangan dengan register CS, ditulis sebagai “CS:IP”, yang berfungsi untuk menunjukkan alamat instruksi berikutnya.

3. Index Register
Sama halnya dengan Pointer Register, Index Register ini dapat digunakan sebagai sebuah register serbaguna, akan tetapi lebih sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi-operasi string.

Berikut adalah register-register yang termasuk dalam kategori index register.
a) Source Index (SI)
Source Index Register biasanya digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.

b) Destination Index (DI)
Fungsi dari Destination Index Register juga sama seperti Source Index Register, yakni digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.

4. Segment Register
Terdiri dari 4 register, yaitu code segment, data segment, stack segment, dan extra segment. Segment adalah bagian dari ruang memori yang berkapasitas 64 kilobyte (65536 byte) dan digunakan secara spesifik untuk menempatkan jenis-jenis data tertentu. Misalnya code segment digunakan oleh program dan instruksi-instruksi (code), data segment dialokasikan untuk data-data, stack segment dipakai untuk menyediakan ruang untuk stack, yang berfungsi untuk penyimpanan data dan alamat sementara pada saat program utama sedang mengerjakan program percabangan, dan extra segment sebagaimana halnya data segment juga dipergunakan sebagai penempatan data-data.

Berikut adalah register-register yang termasuk kategori Segment Register yaitu:
1. Code Segment (CS)
Berfungsi untuk menunjukkan alamat instruksi berikutnya.
2. Data Segment (DS)
Berfungsi untuk menunjukkan alamat data operasi pemindahan data
3. Extra Segment (ES)
Merupakan register segment tambahan yang digunakan pada operasi-operasi string.
4. Stack Segment (SS)
a. Menunjukan alamat stack memori pada operasi push dan pop
b. Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan mengarahkan kembali eksekusi ke program utama.
5. FS dan GS Register
Merupakan register segmen tambahan pada 80836-80486 sehingga segmen memori yang dapat diakses oleh program menjadi lebih besar.
6. Flag Register
Flag Register berfungsi untuk menunjukkan status sesaat dari mikroprosesor. Bit-bit pada flag register akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Bit-bit tersebut adalah sebagai berikut:
1. C (carry): mengindikasikan ada/tidaknya bawaan (carry) setelah operasi pengurangan. C = 1 berarti ada bawaan, C = 0 berarti tidak ada bawaan. Bit C berfungsi mengidentifikasi kesalahan (error) pada beberapa program dan prosedur (procedure).
2. P (parity): mengindikasikan jumlah bit dalam suatu data. P = 0 berarti paritasnya ganjil, P = 1 berarti paritasnya genap. Paritas dapat digunakan untuk pengecekan kesalahan pengiriman data.
3. A (auxiliary carry): mengindikasikan ada/tidaknya bawaan (carry) pada bit ke-3 dan ke-4 setelah operasi pengurangan. A=1 berarti ada bawaan, A=0 berarti tidak ada bawaan. Bit A ini relatif jarang digunakan dalam pemrograman.
4. Z (zero) : mengindikasikan apakah hasil suatu operasi aritmatika atau logika bernilai nol atau bukan. Bila Z = 1 berarti hasilnya nol dan Z = 0 berarti hasilnya bukan nol. Bit Z ini hampir sama dengan bit C, yakni berfungsi untuk mengidentifikasi kesalahan dalam suatu program.
5. S (sign) : mengindikasikan apakah hasil suatu operasi aritmatika atau logika positif atau negatif. Bila S = 1 berarti hasil negatif dan S = 0 berarti hasilnya positif.
6. T (trap) : bila di set 1, dimungkinkan melakukan debugging (penelusuran kesalahan).
7. I (interrupt) : mengendalikan operasi interupsi perangkat keras. Bila I = 1 berarti pin INTR enable (bisa digunakan), bila I = 0 berarti INTR disable (tidak bisa digunakan). Untuk mengendalikannya dapat dilakukan dengan instruksi STI (mengeset I=1) dan CLI (mereset I=0).
8. D (direction) : mengendalikan arah pencacahan (increment atau decrement) DI dan SI pada operasi string. Bila D = 1 arah pencacahan adalah turun (decrement), bila D = 0 pencacahan naik (increment). Untuk mengendalikannya bisa dengan instruksi STD (mengeset D=1) dan CLD (mereset D=0).
9. O (overflow) : mengindikasikan apakah hasil operasi penjumlahan atau pengurangan melampaui kapasitas mesin atau tidak.
10. IOPL (input-output privilege level) : digunakan untuk operasi protected mode untuk memilih tingkat keistimewaan (privilege level) piranti masuk-keluaran.
11. NT (nested task) : mengindikasikan apakah operasi yang sedang dilakukan digandeng (nested) dengan operasi lain pada operasi protected mode.
12. RF (resume) : digunakan saat debugging untuk mengendalikan kelanjutan eksekusi.
13. VF (virtual mode) : memilih operasi virtual mode pada operasi protected mode.
14. AC (alignment check) : untuk mengecek apakah suatu data word atau doubleword dialamati ke memori yang bukan data word atau bukan doubleword.

C. Siklus Instruksi



Sebuah siklus instruksi meliputi subsiklus-subsiklus berikut ini:
  • Fetch: membaca instruksi berikutnya dari memori ke dalam cpu.
  • Execute: menginterpretasikan opcode dan melakukan operasi yang diindikasikan.
  • Interrupt: apabila interrupt diaktifkan dan interrupt telah terjadi, simpan status proses saat itu dan layani interrupt.
  • Store: data atau hasil perhitungan disimpan dalam register atau RAM
Siklus Tak Langsung

Eksekusi sebuah instruksi melibatkan sebuah operand atau lebih di dalam memori, yang masing-masing operand memerlukan akses memori. Kemudian, apabila digunakan pengalamatan tak langsung, maka diperlukan akses memori tambahan.

Machine cycle

Machine cycle atau nama lainnya adalah processor cycle atau instruction cycle merupakan merupakan suatu siklus instruksi dasar yang dikerjakan oleh cpu di dalam melakukan eksekusi suatu instruksi. Rangkaian proses eksekusi instruksi ini dimulai dari proses fetching data dan instruksi yang ada didalam memori hingga proses penulisan kembali hasil eksekusi instruksi tersebut ke dalam memori.

Secara garis besar siklus instruksi (machine cycle) dibagi ke dalam beberapa tahapan yaitu:
  1. Proses FetchingMerupakan proses dimana instruksi dan data akan di load dari memori ke dalam cpu. Proses ini dimulai dari pengambilan alamat instruksi yang terdapat di dalam pc (program counter). Alamat yang terdapat di dalam pc ini merupakan alamat valid dari instruksi dan data yang disimpan ke dalam memori utama, dan merupakan alamat instruksi yang akan dieksekusi. Berdasarkan alamat instruksi yang terdapat di dalam pc, cpu akan mengambil instruksi tersebut untuk ditempatkan ke dalam register (instruction register/ ir) yang menyimpan instruksi yang akan dieksekusi.
  2. Proses DecodingMerupakan tahapan dimana instruksi akan di terjemahkan (interpret) ke dalam perintah-perintah bahasa mesin dasar (add, sb, mba, sta, jmp, dll). Proses ini dilakukan oleh instruction decoder.
  3. Proses Executing: Tahapan dimana instruksi akan dieksekusi di dalam cpu, yaitu oleh alu (arithmetic logic unit).
Setelah tahapan diatas dikerjakan, maka hasil dari eksekusi tersebut akan dikembalikan ke dalam memori untuk disimpan. Proses penyimpanan kembali hasil eksekusi isntruksi terdiri dari beberapa tahapan yaitu:
  1. Proses penempatan alamat memori yang digunakan untuk menyimpan hasil instruksi ke dalam mar
  2. Proses penempatan data (hasil instruksi) kedalam mdr
  3. Proses mengaktifkan memory write control signal pada control bus
  4. Proses menunggu memori untuk melakukan write data pada alamat tertentu
  5. Proses untuk menonaktifkan memory write control signal pada bus
Dalam menjalakan instruction cycle/machine cycle ada beberapa komponen yang berperan, yaitu:
  1. Program counter (pc)Nama lainnya adalah instruction pointer, merupakan suatu pointer (penunjuk), bagi sejumlah instruksi yang ditempatkan di dalam memori dan akan dieksekusi oleh cpu.
  2. Memory address register (mar)Adalah salah satu register yang terdapat di dalam cpu yang fungsinya adalah untuk menyimpan alamat memori dari data yang akan diambil (fetch) oleh cpu untuk dieksekusi. Selain itu mar juga akan menyimpan alamat memori dari data (hasil instruksi) yang akan ditulis kembali ke dalam memori.
  3. Memory data register (mdr)Merupakan register yang terdapat dalam cpu yang fungsinya adalah menyimpan data sementara yang akan dieksekusi oleh cpu. Setiap kali proses fetching berlangsung, data akan disimpan di dalam mdr sebelum dilakukan proses eksekusi. Demikian juga hasil dari eksekusi instruksi akan disimpan di dalam register ini sebelum dilakukan proses penulisan kembali ke memori.
  4. Instruction registerSama seperti mar dan mdr, instruction register (ir) ini terletak di dalam cpu. Ir ini bertanggung jawab untuk menyimpan instruksi yang akan dieksekusi oleh cpu. Pada beberapa jenis prosesor (terutama yang ada sekarang), digunakan konsep pipeline pada ir ini, dimana pada setiap stage pipeline melakukan proses decoding, dan proses yang lain pada waktu instruksi dikerjakan.
  5. Control unit (cu)Control unit mengkoordinasi semua komponen-komponen yang ada di sistem computer, terutama yang berkaitan dengan pengolahan data dan eksekusi instruksi. Cu mengatur proses fetching instruksi maupun data dari memori ke cpu. Selain itu juga mengatur unit yang lain dengan menyediakan timing dan control signal.
  6. Arithmetic logic unit (alu)Merupakan sirkuit digital yang terdapat di dalam cpu yang memiliki fungsi untuk melakukan komputasi aritmatika dan logika. Alu merupakan unit dasar dari pengolah data dan eksekusi instruksi.
D. Proses Interrupt


Interupsi adalah pusat sistem operasi, yang menyediakan cara efisien bagi sistem operasi untuk berinteraksi dan bereaksi terhadap lingkungannya. Pemrograman berbasis interupsi secara langsung didukung hampir seluruh CPU modern. interupsi menyediakan cara otomatis menyimpan isi register local dan menjalankan kode khusus sebagai respon terhadap sebuah kejadian. Bahkan komputer yang paling dasar sekalipun mendukung interupsi hardware dan membolehkan pemrogram untuk menentukan kode yang akan di jalankan ketika terjadi sebuah kejadian.


Ketika sebuah interupsi diterima, hardware komputer secara otomatis menunda program apapun yang sedang dijalankan, menyimpan statusnya dan menjalankan kode komputer yang berhubungan dengan interrupsi yang terjadi sebelumnya. Dalam sistem operasi modern, interupsi ditangani oleh kernel sistem operasi. Interupsi bisa datang dari hardware komputer atau program yang sedang jalan.
Interupsi Sistem disebabkan kejadian ekternal dan tak bergantung proses yang saat itu sedang running pada Diagram State Proses.
Pada kejadian interupsi, kendali lebih dulu ditranfer ke interupt handler yang melakukan penyimpanan data-data dan kemudian beralih ke rutin sistem operasi yang berkaitan dengan tipe interupsi itu.

Penanganan Interupsi

Ada beberapa tahapan dalam penanganan interupsi:

1. Controller mengirimkan sinyal interupsi melalui interrupt-request-line
2. Sinyal dideteksi oleh prosesor
3. Prosesor akan terlebi dahulu menyimpan informasi tentang keadaan state-nya (informasi tentang proses yang sedang dikerjakan)
4. Prosesor mengidentifikasi penyebab interupsi dan mengakses tabel vektor interupsi untuk menentukan interrupt handler
5. Transfer kontrol ke interrupt handler
6. Setelah interupsi berhasil diatasi, prosesor akan kembali ke keadaan seperti sebelum terjadinya interupsi dan melanjutkan pekerjaan yang tadi sempat tertunda.

Tipe-Tipe Interupsi

– Interupsi Clock (Clock Interrupt)

Sistem operasi (penjadwalan) menentukan apakah proses yang sedang running telah mengeksekusi selama jatah waktunya.
Jika telah mencapai jatahnya, maka proses dialihkan ke state ready dan proses lain dijadwalkan running.

– Interupsi Masukan/Keluaran (I/O Interrupt)

Kejadian dimana peralatan masukan/keluaran interupsi meminta layanan sistem operasi. Sistem Operasi segera menentukan aksi-aksi masukan/keluaran yang harus dilakukan.

– Page/memory fault

Pemroses menemui pengacuan alamat memori maya yang tidak terdapat di memori utama (fisik). Sistem operasi segera memerintahkan untuk mengambil page yang terdapat alamat yang dimaksud untuk dipindah ke memori utama.
Untuk memungkinkan terjadinya interrupt ini pada sistem komputer, CPU memiliki suatu jalur khusus terhadap suatu chip pengatur interrupt eksternal (bagian dari chipset), yang berisi database sederhana yang dikenal dengan interrupt vectors.
Ketika sebuah interrupt terjadi pada chip, maka CPU menyimpan informasi terakhir yang dia kerjakan, berulah dia mengerjakan sesuai dengan informasi yang ada pada interrupt vector tesebut. Interrupt vector ini sebenarnya hanya sebuah nama pemanis yang berisi informasi tentang selaan yang terjadi, kalau dibelah lebih dalam lagi, isinya adalah berupa tabel yang berisi angka-angka). Pada interrupt vector inilah ditemukan kemana dan apa proses berikutnya yang harus dilaksanakan oleh komputer. Ketika pekerjaan interrupt tadi selesai dilaksanakan, maka komputer melakukan pelacakan kembali apa pekerjaan sebelumnya yang sedang dilaksanakannya.

Prioritas dalam interrupt

Dalam penerimaan suatu interrupt ini, komputer membagi interrupt tersebut dalam berbagai level, tergantung dari CPU yang digunakan. Misalnya pada komputer yang digunakan untuk pekerjaan yang cukup membutuhkan konsentrasi dari CPU, maka CPU tersebut memungkinkan untuk mengabaikan interrupt yang prioritasnya rendah, katakanlah pengetikkan yang dilakukan oleh seorang user melalui keyboard, namun komputer tersebut akan memberikan respon yang sangat cepat apabila terjadi gangguan pada memori yang digunakannya.
interupsi terjadi bila suatu perangkat M/K ingin memberitahu prosesor bahwa ia siap menerima perintah, output sudah dihasilkan, atau terjadi error.

Vektor Interupsi dan Vector Chaining

Bila ada sebuah sinyal interupsi pada interrupt request line, bagaimana sebuah interrupt handler mengetahui sumber dari interupsi itu? Apakah harus menelusuri semua sumber interupsi satu-persatu? Tidak perlu, karena setiap interrupt handler mempunyai alamat memori masing-masing. Alamat ini adalah offset pada sebuah tabel yang disebut dengan vektor interupsi.

Tabel Vector-Even pada Intel Pentium
Vector number Description
0 Divide error
1 Debug Exception
2 Null Interrupt
3 Breakpoint
4 INTO-detected overflow
5 Bound range exception
6 Invalid opcode
7 Device not available
8 Double fault
9 Compressor segment overrun (reserved)
10 Invalid task state segment
11 Segment not present
12 Stack fault
13 General protection
14 Page fault
15 (Intel reserved, do not use)
16 Floating point error
17 Alignment check
18 Machine check
19-31 (Intel reserved, do not use)
32-255 Maskable interrupt

Sesuai dengan perkembangan zaman, komputer mempunyai lebih banyak perangkat (dan lebih banyak interrupt handlers) daripada elemen alamat di vektor. Hal ini bisa diatasi dengan teknik vector chaining. Setiap elemen di vektor interupsi menunjuk ke kepala dari sebuah daftar interrupt handlers, sehingga bila ada interupsi, handler yang terdapat pada daftar yang ditunjuk akan dipanggil satu persatu sampai didapatkan handler yang bisa menangani interupsi yang bersangkutan.


Interrupt Request Line


Pada kebanyakan CPU, ada dua interrupt request line. Pertama, interupsi nonmaskable, interupsi ini biasanya berasal dari perangkat keras dan harus segera dilaksanakan, seperti terjadinya error pada memori.
Kedua, interupsi maskable, jenis interupsi ini bisa dilayani oleh prosesor atau bisa tidak dilayani. Kalaupun dilayani, harus dilihat keadaan prosesor saat itu. Ada kemungkinan prosesor langsung menangani bila saat itu, prosesor preemptive, bila nonpreemptive, maka harus menunggu proses yang sedang dikerjakan selesai.

Penyebab Interupsi

Mekanisme interupsi tidak hanya digunakan untuk menangani operasi yang berhubungan dengan perangkat M/K. Sistem operasi menggunakan mekanisme interupsi untuk beberapa hal, di antaranya:

1. Menangani exceptionException adalah suatu kondisi dimana terjadi sesuatu, atau dari sebuah operasi didapatkan hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contohnya, pembagian dengan nol, pengaksesan alamat memori yang restricted atau tidak valid, dll.
2. Mengatur virtual memory paging.
3. Menangani perangkat lunak interupsi.
4. Menangani alur kontrol kernel.
Jika interupsi yang terjadi merupakan permintaan untuk transfer data yang besar, maka penggunaan interupsi menjadi tidak efisien, untuk mengatasinya digunakanlah DMA.

Comments

Popular posts from this blog

Cara Instal Windows 7 Ultimate di laptop Toshiba C840

Cara Enable Temporary Usage pada SPSS v.20

Pengertian Sticky Keys Di Windows