Bagikan melalui


Inversi Prioritas

Fenomena yang dikenal sebagai inversi prioritas terjadi ketika utas berprioritas tinggi tertunda tanpa batas waktu sambil menunggu sumber daya yang dipegang oleh utas berprioritas rendah yang tidak dapat dilanjutkan karena adanya utas prioritas sedang yang tidak terkait. Akibatnya, utas berprioritas tinggi secara efektif ditolak akses ke CPU oleh utas berprioritas sedang yang lebih rendah.

Misalnya, utas T1 yang berjalan pada prioritas 4 akan didahulukan oleh utas prioritas T2 yang lebih tinggi dengan prioritas 8 setelah memperoleh kunci. Selanjutnya, utas T3 dengan prioritas 12 tiba, preempts T2, dan diblokir mencoba memperoleh kunci yang dipegang oleh T1. Pada titik ini, T1 dan T2 siap dijalankan, tetapi karena T2 memiliki prioritas yang lebih tinggi, T2 terus mengeksekusi, secara efektif mencegah T3, utas dengan prioritas yang lebih tinggi, membuat kemajuan karena T1 tidak dapat menjalankan dan melepaskan kunci.

Penjadwal utas mengatasi masalah ini melalui fitur yang disebut AutoBoost. AutoBoost secara otomatis melacak reservasi sumber daya dan menyesuaikan prioritas utas dengan menerapkan lantai prioritas yang tidak boleh jatuh di bawah utas. Misalnya, jika utas berprioritas rendah memperoleh bagian penting dan utas berprioritas lebih tinggi diblokir menunggu bagian penting, prioritas pemilik dinaikkan ke prioritas maksimum pelayan hingga merilis sumber daya.