Bagikan melalui


Sakelar Konteks

Penjadwal mempertahankan antrean utas yang dapat dieksekusi untuk setiap tingkat prioritas. Ini dikenal sebagai utas siap. Ketika prosesor tersedia, sistem melakukan pengalihan konteks. Langkah-langkah dalam sakelar konteks adalah:

  1. Simpan konteks utas yang baru saja selesai dieksekusi.
  2. Tempatkan utas yang baru saja selesai dieksekusi di akhir antrean untuk prioritasnya.
  3. Temukan antrean prioritas tertinggi yang berisi utas siap.
  4. Hapus utas di kepala antrean, muat konteksnya, dan jalankan.

Kelas utas berikut belum siap.

  • Utas dibuat dengan bendera CREATE_SUSPENDED
  • Utas dihentikan selama eksekusi dengan fungsi SuspendThread atau SwitchToThread
  • Utas menunggu objek atau input sinkronisasi.

Hingga utas yang ditangguhkan atau diblokir menjadi siap dijalankan, penjadwal tidak mengalokasikan waktu prosesor apa pun kepada mereka, terlepas dari prioritasnya.

Alasan paling umum untuk pengalihan konteks adalah:

  • Ipotong waktu telah berlalu.
  • Utas dengan prioritas yang lebih tinggi telah siap dijalankan.
  • Utas yang sedang berjalan perlu menunggu.

Ketika utas yang sedang berjalan perlu menunggu, alur tersebut melepaskan sisa ikatan waktunya.