This page needs JavaScript activated to work correctly !

This page will be redirect in 3 second !

Organisasi Sistem Komputer - Operasi Sistem Komputer - Networking | IDRaya.com

Organisasi Sistem Komputer - Operasi Sistem Komputer

Triawan NETWORKING 11/09/2020 2 Discusses 75 Views

Disini kita akan mengetahui sedikit mendalam bagaimana sistem komputer bekerja, untuk itu kita memerlukan pengetahuan mengenai struktur dari sistem komputer, seperti operasi sistem komputer.

Sistem komputer modern umumnya terdiri dari satu atu lebih CPU dan beberapa device controllers yang terhubung melalui jalur BUS yang memberikan akses ke shared memory (Gambar Sistem Komputer Modern). Setiap device controller bertanggung jawab sesuai dengan jenis perangkatnya yang terhubung melalui antarmuka (interface) perangkat. CPU dan device controller dapat berjalan secara parallel (concurrently), bersaing (competing) untuk mendapatkan siklus (cycle) memory. Untuk memastikan agar akses ke shared memory teratur, memory controller menyinkronkan akses ke memory.

sistem-komputer-modern Gambar Sistem Komputer Modern.

Agar komputer mulai running (saat dinyalakan atau di-boot ulang), komputer harus memiliki progarm awal (initial program) untuk dijalankan. Initial program atau disebut juga dengan bootstrap program yang cenderung sederhana, biasanya disimpan didalam hardware computer pada read-only-memory (ROM) atau pada erasable programmable read-only memory (EEPROM) dan biasanya disebut sebagai firmware. Contoh dari EEPROM pada smartphone untuk menyimpan factory-installed programs.

Program firmware harus dapat menginisialisasi semua aspek sistem, dari CPU register ke device controllers, kemudian ke memory contents. Program bootstrap harus tahu bagaimana memuat sistem operasi serta menjalankan sistem. Hal ini dapat diperoleh dengan cara program bootstrap harus menemukan kernel sistem operasi dan menempatkan/memuatnya (load) ke dalam memory. Sehingga ketika kernel telah dimuat dan dijalankan, maka kernel dapat mulai menyediakan layanan ke system dan users.

Beberapa layanan yang disediakan di luar kernel, dilakukan oleh system programs yang di-load ke memory pada saat boot, sehingga menjadi system processes atau system deamons yang berjalan sepanjang waktu kernel dijalankan. Setelah sistem di-boot sepenuhnya, sistem akan menunggu beberapa event terjadi. Terjadinya sebuah event biasanya ditandai dengan interupsi (interrupt signal) baik dari hardware atau software.

Pada hardware dapat memicu (trigger) interrupt kapan saja dengan cara mengirmkan signal ke CPU, biasanya melalui sistem bus. Sedangkan pada software dapat men-trigger interrupt dengan cara menjalankan operasi khusus yang disebut system call atau monitor call.

abstraksi-komponen-komponen-sistem-komputer Gambar Timeline interrupt single process doing output.

Ketika CPU diinterupsi/disela, CPU akan menghentikan apa yang sedang ia kerjakan dan segera mengirimkan eksekusi ke sebuah fixed lokasi yang biasanya berisikan starting address tempat rutinitas layanan interrupt berada. Setelah layanan rutinitas interupsi (interrupt service routines) selesai dijalankan, kemudian CPU akan melanjutkan komputasi yang terputus (Gambar Timeline interrupt single process doing output). Secara garis besar interrupt dapat diartikan memungkinkan CPU dapat menjalankan instruksi lain ketika operasi I/O berlangsung. Interupsi merupakan bagian penting dari arsitektur komputer, dan setiap desain komputer memiliki mekanisme interupsi sendiri. Meskipun demikian beberapa fungsi umum interupsi sama. Secara garis besar interrupt service routines (ISR) adalah rutinitas software yang dipanggil oleh hardware sebagai response terhadap interupsi, contoh rutinitas pada saat menekan atau melepas tombol keyboard, kemudian katakanlah sedang membuka aplikasi command prompt (CMD), selanjutnya menekan tombol CTRL + D, kemudian ISR akan memberi signal ke CPU, bahwa tombol CTRL + D (untuk menutup aplikasi) ditekan, dan terakhir CPU mengirimkan informasi ini ke aplikasi CMD yang aktif untuk menutup aplikasinya.

Interrupt harus mentransfer kontrol ke interrupt service routines (ISR) yang sesuai. Metode langsung untuk menangani transfer ini adalah dengan meminta menjalankan generic routine untuk memeriksa informasi interrupt. Pada gilirannya routine akan memanggil interrupt-specific handler, sehingga penanganan interrupt harus ditangani dengan cepat. Ketika hanya jumlah interrupt yang telah didefenisikan yang memungkinkan, sebuah table pointer (tabel petunjuk) ke interrupt routines dapat digunakan sebagai gantinya untuk memberikan kecepatan yang diperlukan. Pemanggilan interrupt routines dipanggil secara tidak langsung melalui tabel tanpa memerlukan perantara routine.

Umumnya pointer table disimpan didalam low memory (sekitar seratus lokasi pertama), dan pada lokasi ini melakukan hold address dari ISR untuk berbagai device. Pada ISR address disimpan kedalam bentuk array (interrupt vector), kemudian di-index berdasarkan nomor perangkat yang unik (unique device number), dan diberikan pada saat melakukan interrupt request. Hal ini dilakukan agar dapat memberikan ISR address melakukan interrupt device. Sistem operasi baik berbasis Windows atau UNIX melakukan dispatch interrupt dengan cara ini. Fungsi atau maksud dari dispatch interrupt adalah bagian sistem operasi yang berfungsi untuk mengatur giliran pemanfaatan CPU untuk suatu proses ke proses lain.

Pemahaman berdasarkan kasus sederhana

(Sumber: https://thesolidsnake.wordpress.com/2013/11/20/memahami-interrupt-di-komputer, 2013)

Salah satu karakteristik komputer dalam mengerjakan atau memproses perintah, yaitu dikerjakan secara berurutan atau langkah demi langkah. Tetapi tidak selamanya alur eksekusi selalu berurutan, karena processor (CPU) sewaktu-waktu dapat saja menerima sinyal penting (interrupt signal), sehingga harus mengerjakannya terlebih dahulu dan menunda apa yang dikerjakannya saat ini. Ingat bahwa CPU hanya dapat meneria dua sumber interrupt yaitu dari hardware dan software. Contoh sederhana hardware interrupt seperti pada saat menekan tombol keyboard, menekan tombol power atau restart. Sedangkan untuk contoh software interrupt adalah berbagai hal yang dijalankan melalui system/monitor call, atau dengan kata lain interrupt signal berasal dari dalam CPU itu sendiri. Mengapa perlu interrupt? Sebagai contoh dari proses untuk mengetahui apa yang ditekan dari keyboard, tanpa adanya interrupt, maka program akan memerintahkan CPU untuk memeriksa secara periodik apa yang ditekan pada keyboard. Metode ini disebut dengan polling, dan jika semakin banyak hardware yang terlibat menggunakan metode ini maka beban CPU akan semakan berat (karna harus memerika secara periodik walaupun tombol keyboard tidak ditekan). Dengan adanya metode interrupt memberikan solusi yang lebih baik, sehingga processor akan mendapatkan notifikasi instruksi untuk membaca tombol apa yang ditekan pada keyboard, dan tentukan akan mengurangi beban kinerja CPU.

Jika terdapat banyak hardware pada komputer, berapa banyak jalur khusus (BUS) yang dibutuhkan untuk mengirimkan interrupt ke CPU? Perlu diketahui, umumnya CPU hanya memiliki satu pin INTR dan satu pin non maskable interrupt (NMI), dan jika kita anggap semua hardware dapat dihubungkan ke pin INTR tersebut secara langsung, mana yang harus ditangani oleh CPU terlebih dahulu? Untuk menangani hal ini, arsitektur hardware komputer menggunakan teknik multiplexing dengan memperkenalkan PIC (programmable Interrupt Controller), sehingga berbagai hardware komputer terhubung ke PIC terlebih dahulu kemudian akan terhubung ke CPU. Melalui PIC ini akan membuat antrian dan menentukan mana yang terlebih dahulu akan dikerjakan oleh CPU. Pada arsitektur komputer modern PIC sudah digantikan dengan APIC (Advance Programmable Interrupt Controller), mendukung 255 jalur interrupt, terdiri dari dua komponen utama yaitu: I/O APIC dan local APIC yang terletak pada masing-masing processor, serta mendukung multiprocessor.

Menyinggung sedikit mengenai software interrupt, bagaimana processor dapat mengetahui apa yang harus dikerjakan saat interrupt terjadi? Untuk hal ini processor akan selalu mengerjakan perintah yang ada di lokasi ESC:EIP, kemudian setelah selesai mengerjakan perintah, nilai EIP akan bertambah, dan hal inilah yang menyebabakan processor mengerjakan perintah secara berurutan, meskipun beberapa instruksi seperti JMP dan CALL dapat merubah nilai register ESC:EIP ke lokasi yang tidak berurutan lagi. Kemudian jika terjadi interrupt, CPU harus mengerjakan apa? Seperti yang telah dijelaskan sebelumnya setiap interrupt vector memiliki rentang nilai dari 0 sampai 255 (nilai 0 sampai 31 tidak boleh digunakan karena telah digunakan oleh sistem), sehingga hanya dari nilai 32 sampai 255 yang boleh digunakan. Jadi ketika terjadi interrupt, processor akan meminta nilai vector dari interrupt yang bersangkutan tersebut untuk di proses. Nilai dari ISR address (interrupt vector) disimpan kedalam struktur data array yang dikenal dengan interrupt dispacth table (IDT). Jadi setiap kali terjadi interrupt, processor akan memanggil address dari IDT untuk menentukan dan mengerjakan instruksi. Yang bertugas untuk mengisi nilai IDT dan menentukan apa yang harus dikerjakan/dilakukan bila terjadi interrupt adalah sistem operasi. Sebagai contoh dilingkungan sistem operasi Windows untuk melihat IDT, dapat menggunakan Windows Kernel Debugger menggunakan perintah !idt. Pada sistem operasi Windows tidak memakai fitur prioritas dari APIC, melainkan menggunakan basis software yang disebut an interrupt request level (IRQ). Alasan environment sistem operasi berbasis Windows tidak menggunkan hal ini adalah agar tidak terikat pada fasilitas hardware (umumnya PIC/APIC) itu sendiri. Tentunya jika versi OS Windows masih memakai konsep ini, berdampak pada proses real-time yang membutuhkan tingkat keakuratan yang tinggi pada.


kd> !idt

Dumping IDT: fffff80091456000

00:	fffff8008f37e100 nt!KiDivideErrorFaultShadow
01:	fffff8008f37e180 nt!KiDebugTrapOrFaultShadow	Stack = 0xFFFFF8009145A9E0
02:	fffff8008f37e200 nt!KiNmiInterruptShadow	Stack = 0xFFFFF8009145A7E0
03:	fffff8008f37e280 nt!KiBreakpointTrapShadow
...
90:	fffff8008f37f680 i8042prt!I8042MouseInterruptService (KINTERRUPT ffffd4816353e8c0)
a0:	fffff8008f37f700 i8042prt!I8042KeyboardInterruptService (KINTERRUPT ffffd4816353ea00)
...

Output interrupt dumping IDT dari ISR Addresses

Penjelasan singkat mengenai hasil dari interrupt dumpting IDT diatas.

  1. Isi IDT dibuat menggunkan perintah !idt.
  2. Entry point IRS untuk nilai interrupt vector a0 terletak di alamat memory fffff8008f37f700, dan hal inilah yang diekekusi oleh kernel pertama kali ketika terdapat event dari keyboard (menekan tombol tertentu), sesuai dengan yang terdaftar pada sistem operasi.
  3. Pada i8042prt!I8042KeyboardInterruptService merupakan keyboard driver dan melakukan interrupt proses yang memiliki alamat memory ffffd4816353ea00.

Pada mekanisme interrupt harus menyimpan address interrupt yang terputus saat ini secara eksplisit, biasanya kedalam tumpukan sistem untuk diproses kembali, dan ISR perlu merubah status nilai register pada processor. Setelah interrupt selesai dilayani, kemudian proses yang mengalami interrupt, berdasarkan address interrupt-nya akan dimuat ulang kembali ke program counter (PC) dan melanjutkan proses komputasi tersebut, seolah-oleh interrupt tidak terjadi.

Referensi

  1. Operating Systems: Internals and Design Principles (8th Edition), William Stallings, 2014.
  2. Operating System Concepts (9th Edition in Chinese) by Abraham Silberschatz et al.
  3. The Linux Programming Interface: A Linux and UNIX System Programming Handbook, Michael Kerrisk.

Agus Triawan/Triawan

 matriawan@gmail.com

Triawan is just an ordinary person, founder idraya[dot]com who just a little bit knows also likes try and error about devices, networks and programming/applications to solve challenges related to information technology.

If there is question, please discuss below. Very welcome and expected to provide corrections, criticisms, and suggestions.


We'll not share/display your email.
Example: Say <b>Hello</b> &lt;?php echo 'World'; ?&gt;
Output: Say Hello <?php echo 'World'; ?>
Words can come true for you, so be wise in speaking.
  • Rizky Dewa Sakti_1301180358 • 13/09/2020 21:36:58
    Sistem Operasi Windows bukanlah sistem operasi yang realtime / ROTS (Real-time Operation System). Hal ini dikarenakan windows masih menggunakan sistem interrupt pada kinerja cpu nya untuk menyelesaikan beberap proses. Yang dapat dikatakan ROTS adalah suatu os yang tidak memiliki delay / latency ketika menjalankan beberapa program secara bersamaan.
  • Admin • 14/09/2020 07:30:00
    @Rizky Dewa Sakti, tanggapannya udah mantap dewa, cuman coba lebih dispesifikasian setiap versi windowsnya :)