Bagikan melalui


Sakelar Konteks

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

  1. Simpan konteks utas yang didahului atau dihasilkan secara sukarela oleh prosesor.
  2. Jika utas tetap dalam keadaan siap, letakkan di akhir antrean untuk tingkat prioritasnya.
  3. Temukan antrean prioritas tertinggi yang berisi utas siap.
  4. Hapus utas di kepala antrean, pulihkan konteksnya, dan lanjutkan eksekusi.

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 sakelar 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.