Apa yang dimaksud dengan interupsi dalam konteks sistem operasi?

9

Saya telah memutuskan untuk membaca Konsep Sistem Operasi oleh Silberschatz, Galvin Gagne (edisi ke-8) selama musim panas. Saya mendapatkan topik yang membingungkan saya - menyela dan peran mereka terkait dengan sistem operasi.

Teks mengatakan bahwa sistem operasi akan memulai proses pertama seperti "init" dan kemudian menunggu "peristiwa" terjadi dan acara ini biasanya ditandai oleh interupsi. Teks tersebut juga mengatakan bahwa interupsi dapat berasal dari perangkat keras atau perangkat lunak. Bagaimana cara kerjanya, dengan sedikit lebih detail? Apakah sistem operasi digerakkan oleh interupsi?

Saya hanya mencari pemahaman gambaran besar.

Ockham
sumber

Jawaban:

8

Ketika OS menjalankan proses seperti "init", itu akan mengirim sinyal ke sub-sistem lain / manajer perangkat dll, seperti memori, perangkat I / O, dll. Interupsi hanyalah cara untuk memberitahu prosesor atau OS yang siap, atau memiliki input baru, dll. Jadi kadang-kadang selama init, OS sedang menunggu sub-sistem siap, dan interupsi dari sub-sistem ini akan menunjukkan hal itu. Jadi itulah yang berhubungan dengan "acara".

Berkenaan dengan interupsi perangkat keras atau lunak, interupsi perangkat keras adalah yang berasal dari perangkat keras. Misalnya. Perangkat I / O seperti keyboard, dll. Interupsi perangkat keras menyebabkan prosesor menyimpan statusnya dan memulai eksekusi pengendali interupsi. Di sisi lain, interupsi perangkat lunak adalah instruksi dalam set instruksi, yang menyebabkan prosesor mengubah tingkat privilege-nya dari user-supervisor, juga dikenal sebagai switch konteks. Rincian ini akan dibahas nanti di buku teks.

Kekacauan
sumber
4

Interupsi memungkinkan sistem operasi untuk memperhatikan peristiwa eksternal, seperti klik mouse. Interupsi perangkat lunak, lebih dikenal sebagai pengecualian, memungkinkan OS untuk menangani peristiwa yang tidak biasa seperti kesalahan divide-by-zero yang berasal dari eksekusi kode.

Urutan acara biasanya seperti ini:

  1. Perangkat keras memberi sinyal gangguan ke prosesor
  2. Prosesor memperhatikan interupsi dan menangguhkan perangkat lunak yang sedang berjalan
  3. Prosesor melompat ke fungsi interrupt handler yang cocok di OS
  4. Interrupt handler menjalankan programnya dan kembali dari interrupt
  5. Prosesor dilanjutkan di tempat yang ditinggalkannya dalam perangkat lunak yang sebelumnya dijalankan

Interupsi yang paling penting untuk sistem operasi adalah interupsi tick timer. Interupsi tic timer memungkinkan OS untuk mendapatkan kembali kontrol secara berkala dari proses pengguna yang sedang berjalan. OS kemudian dapat memutuskan untuk menjadwalkan proses lain, kembali ke proses yang sama, melakukan pembenahan, dll. Interupsi tick timer memberikan dasar untuk konsep multitasking preemptive.


sumber
4

Interupsi adalah peristiwa "tidak biasa" yang terjadi yang perlu segera diproses , terlepas dari apa pun yang terjadi. Saya mengatakan "tidak biasa" dalam tanda kutip, karena mereka tidak selalu tidak terduga atau buruk, tetapi "tidak biasa" dari sudut pandang CPU karena mereka "terjadi begitu saja" sementara sibuk mengeksekusi kode yang mungkin tidak berhubungan.

CPU memiliki beberapa mekanisme untuk mendengarkan interupsi, dan beberapa cara untuk mengkonfigurasi "apa yang harus dilakukan" ketika berbagai macam interupsi terjadi. Ini memungkinkan sistem operasi untuk mengatur bahwa ia akan diberitahukan ketika perangkat keras melakukan hal-hal (termasuk jam perangkat keras yang sangat penting, yang hanya menghasilkan interupsi secara berkala). Melalui konfigurasi penanganan interupsi CPU, kode yang ditunjuk dalam OS akan mendapatkan kontrol setiap kali interupsi terjadi.

Komputer berada dalam kondisi yang sangat tidak menyenangkan (ke pemrogram aplikasi) ketika pengendali interupsi mulai berjalan; mesin sibuk melakukan sesuatu yang lain (yang bisa berupa apa saja ) dan sekarang OS telah diberitahu bahwa "sesuatu telah terjadi". Itu harus mengumpulkan informasi lain yang diperlukan untuk benar-benar menangani interupsi dari mana pun di mesin itu harus berbaring dan melakukan pemrosesan apa pun yang diperlukan tanpa mengganggu bahwa "bisa apa saja" yang sedang berjalan pada CPU. Jika OS ingin mengganti proses aplikasi mana yang sedang berjalan, ia harus menyimpan cukup konteks untuk dapat mengembalikannya nanti (lagi, tanpa mengganggu konteks itu), kemudian memuat beberapa konteks lain, dan kemudian biarkan CPU melanjutkan normal eksekusi dalam konteks itu.

Seperti disebutkan, interupsi digunakan untuk mendapatkan notifikasi dari perangkat keras (satu-satunya alternatif adalah dengan memeriksanya secara berkala), melacak waktu dan mendapatkan kesempatan yang dijamin untuk mendapatkan kembali kendali dari proses aplikasi (untuk mengganti aplikasi mana yang sedang berjalan) , memulihkan dari proses aplikasi yang menjalankan instruksi yang tidak valid, dan juga memungkinkan aplikasi membuat permintaan OS. Yang terakhir ini dikenal sebagai panggilan sistem. Untuk mencegah aplikasi dari mengacaukan mesin dan satu sama lain, mereka biasanya berjalan dengan mesin dalam "mode pengguna", yang mencegah aplikasi dari melakukan apa pun selain membaca dan menulis (virtual) memori yang sudah dialokasikan untuk itu. Ini berarti melakukan apa sajalain (membaca / menulis file, meminta lebih banyak memori, mengakses perangkat, dll) aplikasi harus membuat panggilan sistem; ia melakukannya pada dasarnya dengan meninggalkan beberapa informasi tentang apa yang ingin dilakukan di suatu tempat ia tahu OS akan mencarinya, kemudian menjalankan instruksi CPU yang menyebabkan interupsi dari jenis yang tepat. OS kemudian dapat melihat apa yang coba dilakukan aplikasi dan menentukan apakah harus melakukan permintaan itu. Ini menjamin bahwa OS akan terlibat dalam upaya proses apa pun untuk melakukan apa pun yang memengaruhi apa pun di luar proses adalah satu-satunya cara kebijakan akses dapat diberlakukan.

Jadi intinya, ya, OS didorong oleh interupsi. OS "abstrak" mem-bootstrap mesin ke keadaan "operasi normal" dan pada titik tertentu melepaskan kendali ke proses "normal". Dalam keadaan normal, OS kemudian hanya akan mendapatkan kembali kendali dengan menangani interupsi; tetapi karena hampir tidak ada yang menarik terjadi tanpa gangguan, OS pada dasarnya memiliki kendali atas segala hal sepanjang waktu.

Ben
sumber
3

Sistem operasi didorong oleh interupsi. Ini berarti:

Jika tidak ada proses untuk dieksekusi, tidak ada perangkat I / O yang perlu diservis, dan tidak ada pengguna yang akan ditanggapi, sistem operasi akan duduk diam, menunggu sesuatu terjadi. Peristiwa hampir selalu ditandai oleh terjadinya interupsi atau jebakan, jebakan adalah gangguan perangkat keras yang dihasilkan ketika instruksi yang tidak valid diberikan, dan kemudian mengembalikan kontrol ke OS.

Contoh dari instruksi yang tidak valid adalah ketika suatu program mencoba mengakses ruang memori program lain tanpa memiliki izin.

Peter Mortensen
sumber
interupsi tidak selalu harus menjadi sesuatu yang buruk atau tidak valid seperti yang telah Anda jelaskan
Saya sedang menggambarkan jebakan interupsi, sejauh yang saya tahu itu dihasilkan karena beberapa kesalahan atau instruksi yang tidak valid. thanx untuk yang memberi tahu saya