OSDev http://osdev.su/ |
|
Архитектура памяти и сегметов. как? http://osdev.su/viewtopic.php?f=6&t=444 |
Страница 2 из 3 |
Автор: | qeos [ 17 сен 2011, 13:59 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
хм! пусть 64х.. где теперь почитать об этом чтонибудь вводное.. |
Автор: | phantom-84 [ 17 сен 2011, 17:44 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
Intel® 64 and IA-32 Architectures Software Developer’s Manual |
Автор: | Himik [ 19 сен 2011, 22:40 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
Некоторые переводы. http://ru.osdev.wikia.com/wiki/IAM:%D0% ... B2%D0%B0_2 http://ru.osdev.wikia.com/wiki/%D0%A0%D ... %BC_IA-32e В Intel 64-битный режим называется IA-32e. |
Автор: | qeos [ 20 сен 2011, 09:26 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
в процах такая задача кажется вообще без танцев не реализуема... вариантов сделать два непересекающихся сегмента максимальной длины - нет. буду делать простой вариант: два сегмента код и данные где буду помечать зоны кода и зоны данных.. чтоб не наслоились.. |
Автор: | SII [ 20 сен 2011, 10:06 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
А вообще, если честно, все попытки использовать сегментацию мне кажутся... хм... чем-то из серии: "раз оно предусмотрено, значит, я должен его использовать" независимо от того, есть ли в этом хоть какой-то практический смысл, не говоря уже об эффективности и прочих подобных вещах. |
Автор: | 418ImATeapot [ 20 сен 2011, 10:33 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
SII писал(а): А вообще, если честно, все попытки использовать сегментацию мне кажутся... хм... чем-то из серии: "раз оно предусмотрено, значит, я должен его использовать" независимо от того, есть ли в этом хоть какой-то практический смысл, не говоря уже об эффективности и прочих подобных вещах. Просто сегенты интуитивно понятны. Страницы очень запутаны, и до идеи как их правильно исполизовать новичку сразу не дойти. А вообще можно же поддерживать и то и другое. Нативный интерфейс ядра орентирован на страницы, есть LDT и функции вставки/удаления сегментов. А как приложение распорядится - это уже его дело. |
Автор: | phantom-84 [ 20 сен 2011, 12:02 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
418ImATeapot писал(а): Просто сегенты интуитивно понятны. Страницы очень запутаны, и до идеи как их правильно исполизовать новичку сразу не дойти. И при этом ты говоришь: "Пусть x64" :)Цитата: А вообще можно же поддерживать и то и другое. Нативный интерфейс ядра орентирован на страницы, есть LDT и функции вставки/удаления сегментов. А как приложение распорядится - это уже его дело. Естественно сегментация работает поверх пейджинга, но это не означает, что ее нужно использовать по полной. Использовать LDT необязательно, нет функций вставки/удаления сегментов. Зачем городить лишние преграды в пределах одного приложения, если суммарный объем доступного пространства от этого больше не становится. Можешь "огородить" только прикладное пространство, сделать прикладные стеки неисполняемыми и т.п. Можешь ввести понятия область, секция, слой и т.п. Но аппаратную сегментацию на прикладной уровень выносить не нужно.
|
Автор: | 418ImATeapot [ 20 сен 2011, 15:41 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
phantom-84 писал(а): 418ImATeapot писал(а): Просто сегенты интуитивно понятны. Страницы очень запутаны, и до идеи как их правильно исполизовать новичку сразу не дойти. И при этом ты говоришь: "Пусть x64" :)Цитата: А вообще можно же поддерживать и то и другое. Нативный интерфейс ядра орентирован на страницы, есть LDT и функции вставки/удаления сегментов. А как приложение распорядится - это уже его дело. Естественно сегментация работает поверх пейджинга, но это не означает, что ее нужно использовать по полной. Использовать LDT необязательно, нет функций вставки/удаления сегментов. Зачем городить лишние преграды в пределах одного приложения, если суммарный объем доступного пространства от этого больше не становится. Можешь "огородить" только прикладное пространство, сделать прикладные стеки неисполняемыми и т.п. Можешь ввести понятия область, секция, слой и т.п. Но аппаратную сегментацию на прикладной уровень выносить не нужно.Говорю 64 не я! Сегментация удобна для всяких модулей, дллешек и т. п. Кстати, смежный вопрос. Как сделать N стеков в одном плоском АП? |
Автор: | SII [ 20 сен 2011, 16:41 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
Ну так менять указатель стека, и всё. В чём проблема-то? |
Автор: | phantom-84 [ 20 сен 2011, 16:58 ] |
Заголовок сообщения: | Re: Архитектура памяти и сегметов. как? |
418ImATeapot писал(а): Говорю 64 не я! Понял.Цитата: Сегментация удобна для всяких модулей, дллешек и т. п. На самом деле не факт. Могу утверждать это на основе собственного опыта.Цитата: Кстати, смежный вопрос. Как сделать N стеков в одном плоском АП? Просто.Прикладные стеки создаются в конце прикладного адресного пространства по двум параметрам резервный (максимальный) размер и рабочий (минимальный) размер. При этом размер выделяемой под стек области складывается из резервного размера и размера прикладного стоп-фрейма с учетом выравнивания. Если между существующими стеками нет подходящей по размеру области, то вся стековая область расширяется вниз и в ее начале создается новый стек. При желании нижние границы стеков можно контролировать с помощью растущих вниз сегментов. Но у меня опционально поддерживается защита пространства ядра на уровне сегментации, поэтому я использую исключительно стоп-фреймы (хакерские эксперименты с циклически заворачивающимися стековыми сегментами не предлагать). Стеки ядра имеют фиксированный размер 12 кб и размер стоп-фрейма 4 кб и располагаются последовательно. Стеки прерываний не используются. Первичная обработка прерывания происходит с использованием текущего стека ядра. На дне стеков ядра резервируется небольшой участок памяти специально для первичной обработки прерываний. |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |