Форум программистов, компьютерный форум CyberForum.ru

Объём памяти доступный процессу - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
zim32
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37
10.01.2011, 19:50     Объём памяти доступный процессу #1
В книге Джеффри Рихтера сказано

"Каждому процессу выделяется собственное виртуальное адресное пространство. Для 32-разрядных процессов его размер составляет 4 Гб. Соответственно 32-битный указатель может быть любым числом от 0x00000000 до 0xFFFFFFFF Всего, таким образом, указатель может принимать 4 294 967 296 значений, что как раз и перекрывает четырехгигабайтовый диапазон"

Ниже написано

Что из 4Гб процессу доступно только 2Гб. Остальные 2Гб - это "Раздел для кода и данных режима ядра"

Так же про "Раздел для кода и данных режима ядра" написано:

"Все, что находится здесь, доступно любому процессу. В Windows 2000 эти компоненты полностью защищены Поток, который попытается обратиться по одному из адресов памяти в этом разделе, вызовет нарушение доступа, а это приведет к тому, что система в конечном счете просто закроет его приложение"

У меня есть 3 вопроса
1) Означает ли что процессу может быть выделено максимально только 2Гб?
2) Как понять странную фразу "Все, что находится здесь, доступно любому процессу" и "Поток, который попытается обратиться по одному из адресов памяти в этом разделе, вызовет нарушение доступа"
3) Что будет если программа обратится по адрессу который находится выше 2Гб?

Заренне всем огромное спасибо за ответы!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.01.2011, 20:38     Объём памяти доступный процессу #2
Цитата Сообщение от zim32 Посмотреть сообщение
1) Означает ли что процессу может быть выделено максимально только 2Гб?
не помню точно, но в том же рихтере сказано, что есть режим работы, когда ядро адресуется одним Гб ОЗУ, те процессу максимум доступно 3Гб получается
естественно для 64 разрядных системы такого ограничения нет

Цитата Сообщение от zim32 Посмотреть сообщение
2) Как понять странную фразу "Все, что находится здесь, доступно любому процессу" и "Поток, который попытается обратиться по одному из адресов памяти в этом разделе, вызовет нарушение доступа"
процесс не может получить доступ к данным ядра, если он обратится по адресу страницы ядра, то получит ошибку страницы, те не сможет считать или изменить данные
для драйверов это например не так - в режиме ядра они могут обращаться по всем адресам

Цитата Сообщение от zim32 Посмотреть сообщение
3) Что будет если программа обратится по адрессу который находится выше 2Гб?
нарушение доступа, хотя почему бы самому не попробовать?
zim32
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37
10.01.2011, 20:59  [ТС]     Объём памяти доступный процессу #3
нарушение доступа, хотя почему бы самому не попробовать?

А как можно присвоить произвольное значение указателю?

void* p;
как заставить указатель ссылаться на любой произвольный адресс?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.01.2011, 21:06     Объём памяти доступный процессу #4
void* p = reinterpret_cast<void*>(0x12345);
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
10.01.2011, 21:16     Объём памяти доступный процессу #5
Цитата Сообщение от alex_x_x Посмотреть сообщение
процесс не может получить доступ к данным ядра, если он обратится по адресу страницы ядра, то получит ошибку страницы, те не сможет считать или изменить данные
для драйверов это например не так - в режиме ядра они могут обращаться по всем адресам
не вижу связи рассматриваемой адресации и того, что модули ядра выполняются в нулевом кольце защиты процессора, а всё остальное - в третьем - по причине чего пользовательская программа ограничена в своих возможностях.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.01.2011, 23:41     Объём памяти доступный процессу #6
Цитата Сообщение от deadlock Посмотреть сообщение
не вижу связи рассматриваемой адресации и того, что модули ядра выполняются в нулевом кольце защиты процессора, а всё остальное - в третьем - по причине чего пользовательская программа ограничена в своих возможностях.
в-принципе я чтото примерно это и имел в виду
Yandex
Объявления
12.01.2011, 23:41     Объём памяти доступный процессу
Ответ Создать тему
Опции темы

Текущее время: 04:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru