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

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

10.01.2011, 19:50. Показов 2309. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru