Saya benar-benar tidak mengerti tentang cara kerja bagian dalam sistem operasi, tetapi saya dapat kira-kira kira-kira perilaku perkiraan dari banyak fungsi. Namun, satu hal yang tidak dapat saya pahami adalah multitasking.
Secara teori, sistem operasi mengatur waktu, menurut CPU untuk interval kecil ke berbagai program yang berjalan. Tapi itu tidak jelas bagaimana ini benar-benar bekerja.
Katakanlah sistem operasi ingin memulai program saya. Kode mesin dimuat di suatu tempat di RAM, mulai dari alamat tertentu. Saya kira lompatan harus dilakukan ke alamat itu, memungkinkan kode saya untuk mengeksekusi. Tetapi dengan cara ini, OS tidak bisa mendapatkan kembali kendali sampai saya melompat kembali.
Pada dasarnya, saya bisa membayangkan hanya dua cara untuk membuat ini bekerja, tetapi tidak ada yang benar-benar cocok:
Sistem operasi dapat membaca instruksi mesin yang ingin saya lakukan dan meniru mereka daripada mengeksekusi secara langsung. Saya sengaja tidak jelas, karena saya tidak tahu bagaimana ini akan bekerja, tetapi sepertinya itu akan sangat memperlambat program.
Atau, sistem operasi bisa menunggu sampai saya membuat panggilan sistem. Pada saat itu ia mendapatkan kembali kendali dan dapat memeriksa berapa lama saya telah menjalankan dan melakukan hal-hal pembagian waktu. Ini mungkin bekerja, tetapi tampaknya tidak dapat diandalkan, karena saya bisa membuat perhitungan panjang yang tidak melibatkan panggilan sistem dan menggantung semuanya untuk sementara waktu.
Jadi, sepertinya tidak ada mekanisme yang bekerja dengan baik. Bagaimana multitasking sebenarnya dilakukan?
interrupt
INT
instruksi. Sesuatu masih misterius bagi saya