|
|
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вычитал из литературы в интернете, что начало каждого сегмента находится в ячейке адрес которой кратен 16... Когда проверил, так оно и есть.... Например при выводе дампа памяти (через командную строку командой debug (ентер) -d) начиная с ячейки 001A:0003 я получаю точно ту же информацию что и с ячейки 0010:00A3 (таких експериментов я проводил десятки)... Но тогда возникает вопрос, каким же образом адресуется память? Ведь тогда получается, что максимальный адрес равен FFFFF и таким образом адресуется только 1 Мб памяти (как в процессоре i8086). Помогите пожалуйста, а то самому никак не разобраться (уже десятки статей прочитал, а там везде написано, что в новых процессорах может адресоваться до 4 Гб памяти, но как это делается не написано)... P.S. Если можно, посоветуйте ссылочки на хорошие ресурсы, где можно было бы вычитать что-нибуть интересное по данной теме. СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 18:16 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
вобще-то с появлением 64-битной архитектуры может и больше адресоваться )) как ваши рассуждения мешают указателю иметь размер 32 или даже 64-бита? _______________________________________ 2pro4U ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 20:13 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, что не отвечал... отходил от компа )) подскажите пожалуйста, а как в таком случае обратиться к любому участку памяти (ведь обращаясь по адресам от 0000:0000 до ffff:ffff как я понимаю используется только мегабайт памяти... или там есть какая-то хитрость, до которой я никак не могу додуматься? )? О вот ещё одну статью нашёл... может там повезёт и что-нибуть вычитаю )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 21:59 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
нет.... всё не то... подскажите пожалуйста как это работает... или дайте ссылочки )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 22:25 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Програмёрнет.... всё не то... подскажите пожалуйста как это работает... или дайте ссылочки )) Дядя... Федор. При чем тут сегмент и адрес, и выравнивание? Ты вообще о чем? 16-ть байт - это выравнивание. Просто процессор данные так быстрее обрабатывает, когда они расположены выровнено по 16-ть байтному смещению. Хотя никто не запрещает адресовать (иметь доступ) в любую ячейку памяти, пофег, чему она там кратна. Но сегменты - это вообще отдельно. Сегмент - это вообще архаизм времен DOS, о знании которого уже можно не париться. Нет, ну есть еще страницы памяти - так то тоже, и сегменты памяти, выделяемые из операционной системы по запросу... так то совсем отдельная ботва (вопросы менеджера памяти, про который тебе знать и вредно, и рано, поди). Короче, ты бы лучше обзадачился вопросом того - какого размера страницы между кешами и линейками памяти циркулируют (чисто для понимания, почему обход массива по Код: plaintext Код: plaintext А в остальном - то все туфта бесполезная, почитай лучше Playboy - оно всяк полезнее будет (для организму). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 23:26 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
ПрограмёрПрошу прощения, что не отвечал... отходил от компа )) подскажите пожалуйста, а как в таком случае обратиться к любому участку памяти (ведь обращаясь по адресам от 0000:0000 до ffff:ffff как я понимаю используется только мегабайт памяти... или там есть какая-то хитрость, до которой я никак не могу додуматься? )? Верно. Эта модель памяти (сегментная) использовалась в DOS-режиме. Указатель имеет 32 разряда но использует свою сетку неэффективно. Это последствия Intel-овских экспериментов. С режимами адресации. Как следствие - неудобство кодинга и различные драйверы (himem, emm) для доступа к памяти выше 1 м. В современном программировании, практикуют подходы, при которых процессу доступно 4 Гб адресного пространства (из них 2 - системные) для 32х разрядных архитектур шины адреса (с небольшими извращениями PAE/3GB процесс мог через специально окно видеть и более адресов), и практически неограниченная память для 64х разрядных архитектур (Itanium). Ограничиватеся только своп-файлом, что само по себе очень здорово и решает массу ненужных проблем (вроде оверлеев), с которыми бились головой об клавиатуру кодеры 90-х годов. В догонку, покури вот эту бумагу . Всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 23:53 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
))) возможно и правда рано ... просто у меня в запасе очень мало времени, что бы понять чем побольше про компы... Поэтому некоторые вещи пропускаю надеясь, что догоню в ходе изучения более важных вещей. Иногда срабатывает, а иногда к сожалению нет :) Всем спасибо за общение и пояснения :) . P.S. Если кто-то знает хорошие ресурсы, где можно было бы побольше про компы прочитать (их строение, организация разных типов памяти и т.д.) киньте ссылочки пожалуйста... просто очень надо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 23:54 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
mayton В догонку, покури вот эту бумагу . Гугл ? ))) я эти запросы уже смотрел... ну лано, всё равно спасибо, пройдусь ещё раз (просто привычка у меня пропускать некоторые из результатов поиска :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 00:00 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Програмёрменя пропускать некоторые из результатов поиска :) ) Ты скажи, че тебе вообще надо (как вариант - в этой жизни). Изучать все подряд - и глупо, и непродуктивно: уже не 90-е, и не 80-е, прочитать все книги по программированию несколько не реально (да и смысла нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 00:36 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Програмёр пишет: > Вычитал из литературы в интернете, что начало каждого сегмента находится > в ячейке адрес которой кратен 16... Когда проверил, так оно и есть.... Эт какая платформа имеется в виду, какой процессор, какая операционка ? Везде по разному. > Но тогда возникает вопрос, каким же образом адресуется память? Ведь > тогда получается, что максимальный адрес равен FFFFF и таким образом > адресуется только 1 Мб памяти (как в процессоре i8086). Сегментная адресация реального режима i8086 уже давно не используется. (точнее используется на старте операционной системы) > Помогите пожалуйста, а то самому никак не разобраться (уже десятки > статей прочитал, а там везде написано, что в новых процессорах может > адресоваться до 4 Гб памяти, но как это делается не написано)... Новых ? i-32 уже я не помню даже сколько лет. В 1995-ом году уже вышла Windows-95, работавшая частично в виртуальном режиме. А это значит процессоры уже под это дело существовали года 3-4. > P.S. Если можно, посоветуйте ссылочки на хорошие ресурсы, где можно было > бы вычитать что-нибуть интересное по данной теме. Книжку любую по процессорам Intel. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 02:11 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо.... Вроде бы разобрался. Как я понял, что бы добраться к памяти свыше 1 Мб можно спомощью GDT (Global Data Table помоему так расшифровывается :-) ). > Книжку любую по процессорам Intel. Ну... любую не очень хотелось качать... Я имел ввиду если кто-то конкретную книгу посоветовать может ). Ща уже читаю несколько, но оказалось так, что они обе про i8086 и i8088 рассказывают... Хотелось бы что-нибуть по-новее )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 14:35 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Если вы видите только метр памяти, значит работаете в виртуальной машине DOS, либо загризились под чистым DOS-ом (что маловероятно). Вы не видите физических адресов, все адреса "вымышленные". В реальном режиме вы то же не увидите, не "пощупаете" физических адресов. Будете адреса лишь в своей виртуальной памяти адресовать, кстати 32-разрядными регистрами адреса, так что и предел памяти тут другого порядка. Бывшие 16-адреса сегментов теперь не адреса вовсе, это - коды дескрипторов в которых хранится реальный адрес смещения доступный ОС, но не вам. Обо всем этом очень доходчиво написал А. Кинг. в книге "Windows 95 изнутри" ("Дорога в Чикаго" - второе название ее). Книга вышла за год до выхода Windows-95, но до сих пор актуальна когда речь заходит о виртуальной памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 15:04 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Ок... Спасибо... постараюсь эту книгу достать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 16:38 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Програмёр пишет: > Всем большое спасибо.... Вроде бы разобрался. Как я понял, что бы > добраться к памяти свыше 1 Мб можно спомощью GDT (Global Data Table > помоему так расшифровывается :-) ). Нет, ты понял неправильно. И нифига не разобрался. i80486 и более напрямую адресуют 4 гига памяти, и для того, чтобы ее адресовать, ничего дополнительно не надо. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 18:05 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Господи, неужели эти книжонки еще не сожгли? Действительно лучше уж читать Плейбой, чем ус-во процессоров и компов, которых уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 18:45 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
> Нет, ты понял неправильно. И нифига не разобрался. ))) Хм.... значит буду искать далее... (Windows 95 изнутри уже скачал... щас читаю, может оттуда что-то вычитаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 20:21 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Програмёр> Нет, ты понял неправильно. И нифига не разобрался. ))) Хм.... значит буду искать далее... (Windows 95 изнутри уже скачал... щас читаю, может оттуда что-то вычитаю) Ищи книжки по внутреннему ус-ву Windows 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 20:45 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
> Ищи книжки по внутреннему ус-ву Windows 2000 ок... Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 20:48 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Програмёр wrote: > Вычитал из литературы в интернете, что начало каждого сегмента находится > в ячейке адрес которой кратен 16... Когда проверил, так оно и есть.... > Например при выводе дампа памяти (через командную строку командой debug > (ентер) -d) начиная с ячейки 001A:0003 я получаю точно ту же информацию > что и с ячейки 0010:00A3 (таких експериментов я проводил десятки)... > Но тогда возникает вопрос, каким же образом адресуется память? Ведь > тогда получается, что максимальный адрес равен FFFFF и таким образом > адресуется только 1 Мб памяти (как в процессоре i8086). > Помогите пожалуйста, а то самому никак не разобраться (уже десятки > статей прочитал, а там везде написано, что в новых процессорах может > адресоваться до 4 Гб памяти, но как это делается не написано)... > Современные процессоры intel поддерживают три режима адресации (кстати, все они - сегментные, хотя нынешние операционки это прячут). Первая, о которой вы читали появилась в i8086 и позволяла адресовать до 1 мегабайта физической памяти, размер сегмента - 64 килобайта. Это та называется реальных режим (real mode). Вторая - появившаяся в i80286, позволяла адресовать 16 мегабайт физической памяти, и имела размер сегмента 1 гигабайт. Это называют защищенным режимом (protected mode). Последняя, появившаяся в i80386, позволяет адресовать до 64 терабайт физической памяти и имеет размер сегмента 4 гигабайта. Этот режим называют виртуальным режимом (virtual mode). В общем случае, в i80386, эти адреса (их называют логическими) не соответствуют адресам физической памяти - а преобразование адреса выполняется при помощи таблиц преобразования, и могут быть настроены на любой участок памяти. Конечно, ограничения все равно присутствуют, так, например, в i386 адресуемый участок имеет адрес и размер кратные 4k. И, кстати, коль скоро логические адреса не связанны жестко с физическими, по ним нельзя сказать, какой объем физической памяти адресуется процессором. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2008, 22:05 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
И что-то напоминающее FAT там есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2008, 22:47 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
Спасибо за данный ответ, teras ... очень познавательно (а главное кратко и ясно :) ). Но дело в том, что меня сбили немного с толку слова: > Последняя, появившаяся в i80386, позволяет адресовать до 64 терабайт > физической памяти и имеет размер сегмента 4 гигабайта. Этот режим > называют виртуальным режимом (virtual mode). Дело в том, что я читаю эту статью (точнее прочитал, но решил вернуться, так как у меня не совсем "сошлось" :) ) и там написано, что данный режим называется защищённым (сама статья называется "Программирование процессоров Intel x86 в защищённом режиме")... Хотелось бы уточнить, надо ли расценивать это как недосмотр автора статьи, или же я чего-то не так как надо понял? Просто вроде бы мелочь, а хотелось бы её знать (ведь если ошибка автора статьи, то не охота мучаться на .286 (хотя не уверен, что такими сейчас пользуются, но всё же..) стараясь включить виртуальный режим, думая что это защищённый) Заранее спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2008, 01:21 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
И ещё один вопрос по данной теме, только ближе к ессемблеру... почему, когда моя программа доходит до команды lgdt (запись регистра gdtr) в виндовсе (сам файл досовский с расширением *.com), то она просто закрывается (соответственно весь код после этой команды остаётся невыполненный)? Является ли это защитой операционной системы, и будет ли команда выполнена нормально (и вообще вся программа), если загрузиться с чистого доса, а не с виндовса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2008, 02:28 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
ПрограмёрВычитал из литературы в интернете вот правильная литература , если точнее, вот – архитектура и модель памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2008, 11:45 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЯвляется ли это защитой операционной системыэто защита процессора. Читай там же Volume 2: System programming и Volume 3, раздел system instructions – там все исключения расписаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2008, 11:51 |
|
||
|
Адресация памяти
|
|||
|---|---|---|---|
|
#18+
maXmo вот правильная литература , если точнее, вот – архитектура и модель памяти. Спасибо... жалко только там на английском, не всё понимаю :) А данная защита (от перезаписи регистра gdtr) срабатывает потому, что ОС выставляет для моей программы (сегментам с моей программой) авторитет ниже нулевого? просто очень хочеться знать когда защита всё же не сработает (то есть возможно ли задать свою таблицу загрузившись в досе, или же надо свою ОС начинать писать ?)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2008, 12:29 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35304141&tid=1345268]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 494ms |

| 0 / 0 |
