Em
computação,
preemptividade (algumas vezes
preempção) é o ato de interromper temporariamente uma
tarefa sendo resolvida por um
sistema computacional, sem precisar de sua cooperação, e com a intenção de retomar a tarefa depois. Tal mudança é conhecida como uma
troca de contexto. É normalmente resolvida por uma tarefa privilegiada ou parte de um sistema conhecido como uma agenda preemptiva, que tem o poder de
preeminar, ou interromper, e depois retomar, outras tarefas no sistema.
Em
sistemas operacionais,
preemptividade ou
preempção é a capacidade de alterar a ordem de (ou tirar de execução) um
processo em detrimento de outro com uma prioridade maior. Esta é uma característica que não é importante apenas nos
sistemas operacionais em tempo real. Este tipo de intervenção por parte dos
escalonadores dos sistemas operativos pode ocorrer - embora não estando limitados apenas a isso - a optimizar a
entrada/saída de dados em tempo-real, como é o caso da gravação de
áudio. Um exemplo de uma tarefa não-preemptiva é o processamento de
interrupções.
Algoritmos preemptivos são mais adequados para sistemas em que múltiplos processos requerem atenção do sistema, ou seja, no caso de sistemas multiusuário interativos (sistemas em tempo repartido) ou em sistema de tempo real. Nestes casos, a preemptividade representa a troca do processo em execução, assim sendo, para que o processador seja retirado de um processo, interrompendo seu trabalho, e designado a outro processo, anteriormente interrompido, é fundamental que ocorra a troca de contexto dos processos. Tal troca exige que todo o estado de execução de um processo seja adequadamente armazenado para sua posterior recuperação, representando uma sobrecarga computacional para realização desta troca e armazenagem de tais dados. Usualmente os algoritmos preemptivos são mais complexos dada a natureza imprevisível dos processos.