Оглавление Об учебном пособии
Использованные источники1 Использованные источники2 Использованные источники3 Использованные источники4 Использованные источники5 Использованные источники6

Наличие индивидуальных стеков для каждого уровня привилегий диктуется двумя основными причинами:

  • вызываемая процедура должна защищаться от возможного переполнения стека, возникающего, если вызывающая программа распределила недостаточное стековое пространство;
  • сегмент стека, используемый более привилегированной процедурой, может быть разрушен менее привилегированными программами; разделение же стека на привилегированных уровнях производится не программами пользователей, а системными процедурами, которые только используются прикладными программами.

Начальные значения селектора стека SS и указателя ESP хранятся во всех сегментах состояния задачи TSS и не модифицируются. При смене стека адрес возврата CS и IP, селектор SS и указатель ESP старого стека сохраняются в новом стеке. В него же, в случае вызова процедуры с передачей параметров, из старого стека копируются передаваемые параметры и счетчик двойных слов, определяющий их количество.

При смене стека производится обращение к сегменту TSS для чтения значений SS, загрузка нового указателя стека в регистр ESP и селектора стека в сегментный регистр SS. Процессор анализирует поле счетчика WC (Word Count) дескриптора шлюза вызова. Затем копирует из старого стека в новый число двойных слов, указанное этим полем. Это - параметры, передаваемые вызываемой процедуре. Они размещаются в новом стеке также, как в старом. Наконец, в новый стек включается адрес возврата CS и EIP.

<< Назад