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/