WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  шаровая секция модуля

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   шаровая секция модуля
zAg опубликован 14-02-2002 22:40 MSK   Click Here to See the Profile for zAg   Click Here to Email zAg  
Всем привет. Пытаюсь разобраться с примером Рихтера по поводу создания глобальной переменной расшариваемой между всеми экземплярами приложения. Для этого в исполнимом файле создается дополнительная секция (.shared) с атрибутом RWS. DUMPBIN'ом Смотрим хедеры секций модуля - все нормально среди флагов секции действительно имеется Shared.Тут все понятно, но теперь рассмотрим фрагмент адресного пространство процесса с образом exe-шника:

00400000 Image 102400 5 ERWC G:\VC\Richter\x86\17_AppInst.exe
00400000 Image 4096 -R-- ---
00401000 Image 73728 ER-- --- //.text
00413000 Image 4096 -R-- --- //.rdata
00414000 Image 12288 -RW- --- //.data,.idata,.shared
00417000 Image 8192 -R-- --- //.reloc

Так вот вопрос такой:по идее, страницы памяти где находятся обычные (не расшариваемые) данные должны быть с атрибутом PAGE_WRITECOPY а общие данные просто с PAGE_READWRITE, а здесь три секции .data ,.idata и наша .shared имеют одинаковый атрибут PAGE_READWRITE. Судя по таблице получается что секция импорта тоже шаровая! Но этого не может быть!!Т.е. вроде бы должно быть так:

00400000 Image 102400 5 ERWC G:\VC\Richter\x86\17_AppInst.exe
00400000 Image 4096 -R-- ---
00401000 Image 73728 ER-- --- //.text
00413000 Image 4096 -R-- --- //.rdata
00414000 Image 4096 -RWC --- //.data
00415000 Image 4096 -RWC --- //.idata
00416000 Image 4096 -RW- --- //.shared
00417000 Image 8192 -R-- --- //.reloc

Более того, если убрать атрибут Shared из шаровой секции то в памяти ничего не изменится >:|
Неужели наличие IMAGE_SCN_MEM_SHARED в заголовке секции никак не влияет на атрибуты cтраницы куда она отображается? Ведь для проецирования модулей винда использует обычный файл-маппинг - откуда такая мистика? Существует ли научное объяснение этих явлений ?

zAg опубликован 14-02-2002 23:27 MSK     Click Here to See the Profile for zAg  Click Here to Email zAg     
Все, вопрос снимается: Ведь когда процесс модифицирует страницу с атрибутом WRITE_COPY система подсовывает ему другую страницу из page-файла - это понятно, НО! атрибут-то будет уже READ_WRITE !
x опубликован 15-02-2002 02:37 MSK     Click Here to See the Profile for x  Click Here to Email x     
лучше поищи объяснения почему в 2k bprw не работает

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.