Domanda

Sto solo leggendo un articolo che dice:

I motivi per controllare il sistema di interruzione generalmente si riducono alla necessità di fornire sincronizzazione. Disabilitando gli interrupt, è possibile garantire che un gestore di interrupt non proseguirà il codice attuale. Inoltre, La disabilitazione degli interrupt disabilita anche la preemption del kernel. Né disabilitanti interrompere la consegna né disabilitazione Precetto del kernel Fornisce qualsiasi protezione dall'accesso simultaneo da un altro processore, tuttavia.

Quindi mi chiedo solo la differenza tra interrupt e preemption del kernel.

O potremmo dire che la disabilitazione della preemption del kernel disabilita anche gli interruzioni?

È stato utile?

Soluzione

Quando un processo viene interrotto, il kernel esegue un codice, che potrebbe non essere correlato a ciò che il processo fa.
Quando questo è fatto, possono succedere due cose:
1. Lo stesso processo riceverà di nuovo la CPU.
2. Un processo diverso otterrà la CPU. L'attuale processo è stato previsto.

Quindi la preemption avverrà solo dopo un interrupt, ma un interrupt non causerà sempre la prevenzione.

Altri suggerimenti

Sono diversi. Gli interrupt possono verificarsi al di fuori del contesto del kernel, quindi cambiando il modo in cui il kernel gestisce la prevenzione non influirà sugli interrupt. Sembra solo che nel contesto del tuo articolo, la preemption del kernel dipenda dagli interrupt funzionanti (probabilmente perché è implementato usando un timer di qualche tipo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top