Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб ноя 18, 2017 5:06 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 7 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Глючу я или Bochs?
СообщениеДобавлено: Пт июн 03, 2005 11:59 am 
Тестируя менеджер памяти я столкнулся со следующей ситуацей: программа вызывает системную функцию, в обработчике системной функции cr3 устанавливается в cr3 программы (который берется из ее TSS) и старое значение обратно не устанавливается (программа всегда вызывает один и тот же обработчик после исправления от Вилле). Я остнавливаю Bochs на вызове некоторой системной функции, причем это не первый вызов. Смотрю cr3 - он старый! Но ведь новое значение cr3 должно уже несколько раз сохранится в TSS обработчика системного вызова этой программы. Ладно, тестирую дальше. Ставлю брейкпоинт на процедуру переключения процессов и брейкопоинт внутрь цикла системной функции. Дожидаюсь пока не произойдет переключение процессов во время исполнения системной функции (она исполняется достаточно долго). Смотрю на значение cr3, которое должно сохранится в TSS. Оно оказывается старым! Разумеется после того, как снова управление передастся на эту программу она совершит исключение, поскольку в старом cr3 нет отображения области начиная с 0x10000000 на память программы.
Вот я и не могу понять - это глюк Bochs (версия 2.1 от 11 января 2004 года) или cr3 не сохраняется в сегменте TSS, а только восстанавливается? Я, конечно, могу сделать так, чтобы cr3 в TSS обработчика системного вызова был сразу правильный, но все же интересно...


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 03, 2005 2:42 pm 
Установил cr3 в сегменте TSS обработчика системного вызова при запуске процесса - все работает! За одним можно удалить ненужный код в обработчике системного вызова.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 03, 2005 7:20 pm 
Я так и не понял, эта проблема актуальна лишь при внедрении менеджера памяти или исправление можно вносить уже сейчас в ядро?
И где указание конкретных строк кода для исправления?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 03, 2005 8:42 pm 
Не в сети

Зарегистрирован: Пт ноя 12, 2004 3:20 pm
Сообщения: 90
Mario: в обычном ядре cr3 практически не используется, так что исправлять тебе нечего.
Кстати недавно вышел Bochs 2.2 http://bochs.sourceforge.net


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 03, 2005 9:10 pm 
Иван Поддубный
Ты прав, активно используется cr3 только в моем менеджере памяти, где и возникают подобные глюки.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 07, 2005 6:39 pm 
halyavin, а ты для каждого приложения меняешь cr3?? не проще ли каталог не трогать, а только менять в нем указатели на каталоги страниц адресного пространства самого приложения...а для ядра не менять...?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 16, 2005 9:30 pm 
Тогда нужно изменять указатели при каждом переключении процессов.
У меня сделано так: есть каталоги страниц, описывающие разные области памяти и для каждого процесса есть своя директория, в которой указатели на нужные каталоги. (Может ты это имел в виду?)


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 7 сообщений ] 

Часовой пояс: UTC+03:00


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

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


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

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