OSDev

для всех
Текущее время: 09 май 2024, 23:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: 24 окт 2010, 14:11 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Цитата:
Строго говоря, с точки зрения здравого смысла TSS не нужна до тех пор, пока программа пользуется только нулевым кольцом. Но я отнюдь не уверен, что всё пойдёт гладко при возникновении прерываний, даже если и прерываемая программа, и обработчик работают в нулевом кольце, а значит, аппаратное переключение стеков не выполняется: боюсь, что процессор всё равно будет по крайней мере проверять наличие TSS (правильное заполнение TR и наличие самой TSS в GDT), а при её отсутствии генерить GP. Так что делайте себе единственную TSS, заполните там необходимые поля, загрузите её адрес в TR и работайте дальше.

Нормально работает. Если не ставить TSS и не переходить в ring3, то исключений не возникает. При этом указатель стека при прерывании в стек не пихается. Но стоит загрузить TR указатель стека начинает сохранятся и при прерывании на ring0 и при прерывании на ring3. То есть пока не загружен TR и не требуется разделения приложений и ядра с TSS заморачиваться особого смысла нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 окт 2010, 14:28 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
KIV писал(а):
Если не ставить TSS и не переходить в ring3, то исключений не возникает. При этом указатель стека при прерывании в стек не пихается. Но стоит загрузить TR указатель стека начинает сохранятся и при прерывании на ring0 и при прерывании на ring3. То есть пока не загружен TR и не требуется разделения приложений и ядра с TSS заморачиваться особого смысла нет.


Извините, но Ваше это описание полностью противоречит интеловскому мануалу (подраздел 6.12 третьего тома), согласно которому SS:ESP заносятся в стек только в том случае, если имеет место переключение уровня привилегий. Соответственно, при работе исключительно в нулевом кольце он не сохраняется независимо от того, загружено что-то в TR или не загружено.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 окт 2010, 14:18 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Товарищи, включайте логику и практический опыт. SII не прав в том, что без TSS вообще нельзя. Если работает код исключительно нулевого кольца, то процессор не обращается к TSS. KIV под конец нам тоже интересную новость сообщил. Оставлю без комментариев. По сути конечно TSS нужны и в ос с программным переключением. Одна (по одной на ядро, если используется общая дескрипторная таблица) для хранения указателя на вершину стека ядра и еще несколько для обработки критических исключений и прерываний (NMI).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 окт 2010, 15:01 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
Получается что мне TSS нужно будет использовать даже если я не буду делать многозадачность, но буду использовать уровень привилегий 3? Разумеется использовать уровень привилегий 3 без многозадачности - это глупо (вроде бы).

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 окт 2010, 17:14 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Верно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 окт 2010, 21:29 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
s3dworld писал(а):
Разумеется использовать уровень привилегий 3 без многозадачности - это глупо (вроде бы).


Почему ж, отнюдь не глупо. Хотя бы потому, что с помощью использования аппаратных средств защиты облегчается отладка приложения. С системным кодом, конечно, всё равно придётся мучиться, а вот любые падения кода в 3-м кольце код 0-го может корректно обрабатывать и выдавать развёрнутую диагностику (не говоря о том, что можно сделать отладчик, который сам исполняется в 0-м кольце). Другое дело, есть ли в этом смысл в конкретном случае.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 103


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB