Бит Занятости дескриптора TSS предотвращает реентерабельные переключения задач. Существует лишь один сохраненный контекст каждой задачи, а именно контекст, сохраненный в TSS, следовательно, задача до своего завершения может быть вызвана только один раз. Цепочка отложенных задач может вырасти до любой длины вследствие множественных прерываний, исключений, переходов и вызовов. Бит Занятости предотвращает вызов задачи, поставленной в такую цепочку. Реентерабельное же переключение задачи затрет старый TSS задачи, что приведет к разрушению всей цепочки.
Процессор организует бит Занятости следующим образом:
- При переключении задачи процессор устанавливает бит Занятости новой задачи.
- При обратном переключении из задачи процессор очищает бит занятости старой задачи, если эта задача не должна быть поставлена в цепочку (т.е. команда, вызвавшая переключение задачи, это команда JMP или IRET). Если задача поставлена в цепочку, то ее бит Занятости остается установленным.
- При переключении на задачу процессор генерирует исключение общей защиты, если бит Занятости новой задачи оказывается уже установленным.
Таким образом, процессор предотвращает переключение задачи самой на себя, либо на любую задачу в цепочке задач, что исключает реентерабельное переключение задачи.
Бит Занятости может использоваться в многопроцессорной конфигурации системы, поскольку при установке или очистке бита Занятости процессор захватывает шину. Это исключает одновременный запуск одной и той же задачи двумя процессорами. (Более подробную информацию о многопроцессорной обработке см. в главе 13).