|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.01.2016, 01:49 | #1 | |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
Закрытый раздел размером 64Кб
Всем здравствуйте!
В книге Джеффри Рихтера в главе 13 на странице 310 в заголовке "Закрытый раздел размером 64Кб" описываются причины появления данного раздела (сам отрывок из книги): Цитата:
Вот что сбивает с логического хода мыслей - если реализована проверка на попадание в этот раздел, то что мешало сделать ее на попадание в ядро? Тогда и от раздела отказались бы, а в распоряжении появились бы дополнительные 64Кб. |
|
26.01.2016, 08:15 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Сделать можно, только будет медленней. Так зачем терять производительность ради перестраховки, что кто-то будет писать куда не надо, если это можно сделать железом?
|
26.01.2016, 13:56 | #3 | |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
waleri
Цитата:
Но в таком случае, необходимо выполнение обработчика по особому случаю нарушения общей защиты, а это разве будет быстрее простой проверки на попадание в область ядра? |
|
26.01.2016, 15:59 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Обработчик работает только когда кто-то лезет куда не надо, а проверку надо или не надо вызывать обработчик делает железо.
|
26.01.2016, 16:21 | #5 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,777
|
Я подозреваю, что вы читаете негодный перевод. В подсистеме управления памятью нет русского термина "раздел", разделы только на дисках. Советую найти оригинал и прочитать хотя бы этот абзац на языке первоисточника.
|
26.01.2016, 17:00 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
"region" там скорее всего.
Мне непонятно про 64К. При сегментированной модели в DOS это имело смысл, при flat памяти - никакого. Тем более, что память, где ядро, защищена вся. Второй вариант, что речь идет о *первых* 64К. Например ресурсы могут быть либо числом, либо строчкой и для того, чтоб отличить одних от других *все* указатели в Windows всегда > ^64К. Последний раз редактировалось waleri; 26.01.2016 в 17:06. |
26.01.2016, 17:44 | #7 | ||||
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
Цитата:
Отсюда, по нашему рассуждению, разработчики попросту решили этот регион в 64Кб сделать "только для чтения", возложив пресечение попыток добраться до области ядра через этот регион на сам обработчик. Цитата:
Цитата:
Но вот что касается терминологии. Что не так с термином "раздел"? Олиферы, к примеру, в своей книге по сетевым операционным системам, дают ему определение и используют при описании алгоритмов распределения памяти. Цитата:
Так что это определенно относится к региону с 0x7FFF0000. Последний раз редактировалось Базиля; 26.01.2016 в 18:11. |
||||
26.01.2016, 20:41 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Код обработчика будет выполняться только когда возникнет обращение по запрещенному адресу, во всех остальных случаях никаких обращений к нему нет. Таким образом, быстродействие этого кода не имеет особого значения.
Доступ ограничивает железо а обработчик только уведомляет вас об этом. |
26.01.2016, 22:07 | #9 |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
waleri
Мне кажется мы друг друга не понимаем. Я же нигде не писал, что обработчик вызывает сама ОС Попытка записи в сегмент (в нашем случае страницу) доступный только для чтения (то о чем я и говорю) вызывает особый случай нарушения общей защиты. В общем случае, если человек попытается писать в этот раздел, у него ничего не выйдет, так как на него назначен атрибут "только для чтения". Иначе доступ никак не запретить. |
26.01.2016, 22:31 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Я думаю суть сводится к тому, что при такой реализации надо проверять только начальный адрес. При попытке "переполнения" натыкаемся на регион защиты и сваливаемся.
Смысла я все же не понимаю, все равно у процесса доступа к памяти ядра нет. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перезаписать один файл размером 5 Гб в другой размером 5Гб | Ланулечка | Помощь студентам | 0 | 28.05.2013 12:59 |
Задана матрица размером n x m и вектор размером m | Alexan88 | Общие вопросы C/C++ | 3 | 20.12.2010 16:01 |
Как залесть на закрытый форум? | Монгол | Свободное общение | 12 | 15.08.2009 19:07 |
Как наложить иконку с исходным размером 16х16 на битмап с размером 32х32? | SkAndrew | Мультимедиа в Delphi | 1 | 26.04.2008 14:44 |