Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание win 32 приложения Джефри Рихтер, Нужно разобрать мой или его косяк... 
:(
    Опции темы
GIK
Дата 31.12.2008, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Доброго всем времени суток товарищи прграмисты и любители побитвого экстрима smile
Вобщем вопросик в принципе по части системного программирования, но не совсем... Читаю книгу Создание win 32 приложения Джефри Рихтер, дошел до раздела "Определение состояния адресного пространства" в котором он обясняет структуру MEMORYSTATUS. Так вот, в этой структуре есть эллемент dwTotalVirtual который отображает объем закрытого адресного пространство. В 32-разрядной винде он состовляет  2,147,483,648 или 2 ГБ, т.е. диапазон адресов от 0х80000000 до 0хFFFFFFFF. Ну и есть еще пара диапазонов, это 0х00000000 - 0х0000FFFF (для выявления нулевых указателей), это 65536 значений и 0x7FFF0000 - 0x7FFFFFFF (для того чтобы наше приложение не влезало в ядро), это тоже 65536. Т.е. по ходу мы имеем 2 гига = 128 килабайтоф. 
Теперь смотрим что пишет товаришь Рихтер:
Цитата

Элемент dwTotalVirtual (показываемый как TotalVirtual) отражает общее количество байтов, отведенных под закрытое адресное пространство процесса. Значение 2,147,352,576 ровно на 128 Кб меньше 2 Гб. Два раздела недоступного адресного пространства — от 0x00000000 до 0x0000FFFF и от 0x7FFF0000 до 0x7FFFFFFF — как раз и составляют эту разницу в 128 Кб.  


Вобщем либо он сглючил либо я полный лам  smile 



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
dumb
Дата 31.12.2008, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(GIK @  31.12.2008,  01:07 Найти цитируемый пост)
В 32-разрядной винде он состовляет  2,147,483,648 или 2 ГБ, т.е. диапазон адресов от 0х80000000 до 0хFFFFFFFF. 

у меня, как и у Рихтера smile , dwTotalVirtual = 2,147,352,576. и диапазон таки от 0x0000FFFF до 0x7FFF0000(с учетом вычетов). от 0х80000000 и выше - система и ядро.
PM MAIL   Вверх
jonie
Дата 31.12.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Цитата

 В 32-разрядной винде он состовляет  2,147,483,648 или 2 ГБ
вовсе не обязательно. на win2k3server x86 у вас будет 3 ГБ, я уж не говорю, что виндой мир не оканчивается...

Это сообщение отредактировал(а) jonie - 31.12.2008, 09:11


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GIK
Дата 3.1.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Так, я кажись не ясно свой вопрос изложил smile 
Смотрите, от адреса 0х80000000 (2,147,483,648) до адреса 0xFFFFFFFF (4,294,967,295), ровно 2 ГИГАБАЙТА (для системы и ядра) Есть еще адреса 0х00000000 - 0х0000FFFF И 0x7FFF0000 - 0x7FFFFFFF которые тоже недоступны нам smile
Теперь внимание, Рихтер утверждает:
Цитата

Значение 2,147,352,576 ровно на 128 Кб меньше 2 Гб.

Да это правильно, т.к. 2,147,483,648 (2 ГВ) - (65536*2) = 2,147,352,576, НО
Цитата

Два раздела недоступного адресного пространства — от 0x00000000 до 0x0000FFFF и от 0x7FFF0000 до 0x7FFFFFFF — как раз и составляют эту разницу в 128 Кб. 

ЭТО ведь НЕ логично
Если система имеет кроме 2 ГБ еще и 128кб это уже больше 2 ГБ. 
Мне кажется dwTotalVirtual  должен составлять 2,147,483,648 (2 ГВ) + (65536*2), если конечно верить в то что написано выше в его книге...

Опровегните теперь меня, так, чтобы я, возможно, понял СВОЮ ошибку.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
dumb
Дата 3.1.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



а. теперь все ясно: ты неправильно понял смысл слова "закрытое" в термине "закрытое адресное пространство" -
оно не от процесса "закрыто", а от других пользовательских процессов, т.е. в данном случае слово "закрытое" можно заменять словом "изолированное".
ы?
PM MAIL   Вверх
GIK
Дата 3.1.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



ыгы... Давайте Рихтеру напишем и спросим...


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.