Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37

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

10.01.2011, 19:50. Показов 2329. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В книге Джеффри Рихтера сказано

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

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

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

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

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

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

Заренне всем огромное спасибо за ответы!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2011, 19:50
Ответы с готовыми решениями:

Проверить объем доступной памяти
Нужно проверить объем доступной памяти до и после выполнения программы. Как это можно сделать?

Map STL - максимальный объем памяти
Пишу модуль для программы - что-то вроде переводчика. Есть словарь синонимов (40+мб). Загружаю его в map, но после 740000+ ключа,...

Определить программно доступный объём памяти
Нашел оптимальный алгоритм для решения некоторой задачи, но проблема в том, что он требует тем больше памяти, чем сложнее условия задачи....

5
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
10.01.2011, 20:38
Цитата Сообщение от zim32 Посмотреть сообщение
1) Означает ли что процессу может быть выделено максимально только 2Гб?
не помню точно, но в том же рихтере сказано, что есть режим работы, когда ядро адресуется одним Гб ОЗУ, те процессу максимум доступно 3Гб получается
естественно для 64 разрядных системы такого ограничения нет

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

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

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

void* p;
как заставить указатель ссылаться на любой произвольный адресс?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
10.01.2011, 21:06
void* p = reinterpret_cast<void*>(0x12345);
0
 Аватар для deadlock
378 / 358 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
10.01.2011, 21:16
Цитата Сообщение от alex_x_x Посмотреть сообщение
процесс не может получить доступ к данным ядра, если он обратится по адресу страницы ядра, то получит ошибку страницы, те не сможет считать или изменить данные
для драйверов это например не так - в режиме ядра они могут обращаться по всем адресам
не вижу связи рассматриваемой адресации и того, что модули ядра выполняются в нулевом кольце защиты процессора, а всё остальное - в третьем - по причине чего пользовательская программа ограничена в своих возможностях.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
12.01.2011, 23:41
Цитата Сообщение от deadlock Посмотреть сообщение
не вижу связи рассматриваемой адресации и того, что модули ядра выполняются в нулевом кольце защиты процессора, а всё остальное - в третьем - по причине чего пользовательская программа ограничена в своих возможностях.
в-принципе я чтото примерно это и имел в виду
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2011, 23:41
Помогаю со студенческими работами здесь

Определяем объем памяти выделенной приложению/процессу
Проблема Создавая приложения использующие большой объем памяти я сделал вывод, что приложению (скорее всего потоку, но мне все равно)...

GlobalMemoryStatus доступный объём файла подкачки показывает равным нулю
Требуется узнать доступный объём который может сохранить файл подкачки. Подскажите почему возвращает 0 ? Private Declare Sub...

Как узнать объем виртуальной памяти и объем файла подкачки?
Как с помощью командного файла можно узнать объем виртуальной памяти, а также объем файла подкачки??

Механизм общей памяти и attach к процессу
Добрый день! Существует следующая задача.Имеется драйвер, получающий скан-код нажатой клавиши.Имеется стороннее приложение (консоль). В...

Должен ли общий объем графической памяти складываться из зарезервированной (фиксированной) памяти и динамической (DVMT)?
Здравствуйте. Скажите, должен ли общий объем графической памяти складываться из зарезервированной (фиксированной) памяти и динамической...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru