OSDev

для всех
Текущее время: 15 дек 2018, 14:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 15:36 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
scuter писал(а):
а если я заполню программами все 4гб и заставлю всё это работать процессор лопнет или оперативка с видеокартой начнёт обрабатывать код вместо процессора???

или когда я делаю far call [0008:12345678] это у меня оперативка код обрабатывает.


Если у тебя есть например 2Гб памяти оперативной, то ты их ебстественно можеш использовать все и забивать чем хочеш, спроси у биоса скока памяти и забивай её до того как.
С видео памятью и другой кроме оперативки работа идёт так, ты спрашиваеш, у весы где начало и размер, с регистрами устройств ты узнаёш в пространстве PCI начало и в спеках устройства узнаёш размер. Всё это должно быть за пределами объёма оперативки, внутри неё дыр не должно быть, хотя не факт, но пока это не важно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 16:14 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 949
Откуда: Дагоба
Ну вы, ребята, блин, даёте!!! Я в шоке с ваших постов! :shock:

scuter писал(а):
то есть память крепит BIOS, переадресацию тоже он делает

BIOS ничего не крепит и не переадресует. BIOS - это программа в ПЗУ, которая при старте компа конфигурирует чипсет так, чтобы отобразить имеющиеся модули памяти в физическое адресное пространство процессора.

scuter писал(а):
только вот как он это делает

Как он это делает, совершенно не важно. Это его внутреннее дело.

scuter писал(а):
и как определить реальную память процессора

Процессор не обладает независимой памятью. Он обладает только несколькими уровнями кэша, цель которых - ускорить работу с внешней памятью. Этот кэш программно никак адресоваться не может.
Как определить память системы, я уже дал ссылку. Имеющий глаза да увидит: http://wiki.osdev.org/Detecting_Memory_(x86)

scuter писал(а):
у процессора есть своя память, но когда записываю данные в адрес "12345678h"
получается записываю в оперативную память или тоже самое с VESA LFB.

Забудь про память процессора. Когда ты пишешь по адресу 12345678h, ты пишешь в то устройство, которое отображено на этот физический адрес. Это может быть оперативная память, регистры или память внешних устройств, ПЗУ какого-нибудь BIOSа или пустое место. Наугад, конечно, писать нельзя.

scuter писал(а):
и хотелось бы переместить это дело в какое нибудь другое место, если уж эта память предназначена не для работы CPU

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

scuter писал(а):
и присудствующий там код совершенно не предназначен для выполнения в CPU на много разумней будет переместить всё это дело в HMA или UMB

Забудь про HMA и UMB. Это понятия организации памяти внутри операционной системы DOS. Если ты пишешь ОС сам, никаких HMA и UMB не существует.

iz56 писал(а):
Как сказать, пример из жизни. У меня есть программа работающая в нереальном режиме. Это текстовый редактор , при работе загружаю текст в память начиная с первого метра. Пробовал грузить 700 метров - всё нормально.

Ни разу не встречал систем с дыркой на 16-м мегабайте? А систем с 512МБ или меньше ОЗУ? Я встречал.

scuter писал(а):
а если я заполню программами все 4гб и заставлю всё это работать процессор лопнет или оперативка с видеокартой начнёт обрабатывать код вместо процессора???

В бутылку объёмом пол-литра нельзя налить 10 литров воды.

scuter писал(а):
или когда я делаю far call [0008:12345678] это у меня оперативка код обрабатывает.

:o :shock:
Оперативка ничего обрабатывать не умеет!!! Оперативка только хранит код и данные для процессора.
far call по этому адресу заставит процессор начать выполнять последовательность инструкций, начиная с указанного адреса.

Станислав писал(а):
спроси у биоса скока памяти и забивай её до того как.
Всё это должно быть за пределами объёма оперативки, внутри неё дыр не должно быть, хотя не факт, но пока это не важно.

Станислав, повторяю, ты жестоко ошибаешься!

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 16:57 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
у процессора есть своя память, но когда записываю данные в адрес "12345678h"
получается записываю в оперативную память или тоже самое с VESA LFB.
получается что я могу запрограмировать видео карту используя внутренние адреса а не порты ввода/вывода?
и хотелось бы переместить это дело в какое нибудь другое место, если уж эта память предназначена не для работы CPU

При записи в память (mov [eax], ebx) процессор обращается к контроллеру (к северному мосту). Туда же подключена память и южный мост (картинка).
Этот набор контроллеров решает, куда отправить запрос на чтение/запись. Если адресу 12345678 поставлена в соответствие оперативка - то будет работа с оперативкой. Если туда отображена память какого-то устройства (видеокарта, сетевая карта,...), то данные отправятся в память этого устройства. Если там регистры какого-то устройства - будет запись в них. Так же и при чтении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 17:12 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Глупостей было много здесь сказано, причём это основы. Всему виной отсутствие практики, что поправимо только практикой.
Картинка хорошая.

Bargest писал(а):
При записи в память (mov [eax], ebx) процессор обращается к контроллеру (к северному мосту). Туда же подключена память и южный мост (картинка).
Этот набор контроллеров решает, куда отправить запрос на чтение/запись. Если адресу 12345678 поставлена в соответствие оперативка - то будет работа с оперативкой. Если туда отображена память какого-то устройства (видеокарта, сетевая карта,...), то данные отправятся в память этого устройства. Если там регистры какого-то устройства - будет запись в них. Так же и при чтении.


Объяснение хорошее, что то похожее читал на Вики какой то, не помню.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 18:09 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
Bargest писал(а):
Этот набор контроллеров решает, куда отправить запрос на чтение/запись.

ну вот этот набор контроллеров меня и интерсует, оно как таковое имеет решающую роль в производительности компьютера,
кстати на новых компьютерах могут использоваться 8гб оперативной памяти, это дело уж точно не поместится в ПЗУ адресацию 32-бита,
да и на моём компьютере 4гб оперативки, в этом случае моя оперативка должна была выместить всё адресное пространство,
Yoda писал(а):
Оперативка ничего обрабатывать не умеет!!! Оперативка только хранит код и данные для процессора.
far call по этому адресу заставит процессор начать выполнять последовательность инструкций, начиная с указанного адреса.

ага, а код как грузится, GDT помогает.
Yoda писал(а):
Перемещать ничего нельзя. Но если ты переведёшь процессор в защищённый режим, ты можешь использовать виртуальную память, тогда любую страницу физического адресного пространства ты можешь отобразить на нужный тебе логический адрес. То есть, в защищённом режиме ты можешь организовать логическое (виртуальное) адресное пространство, как тебе удобно.

и как же воспользоваться этим виртуальным адресным прострстранством, I/O map и перенаправление прерываний в TSS это понятно,
но адресное пространство как переделать (в защищённом режиме)

кстати перемещать может и не надо но если мне надо будеть использовать VMX, SVM, TV-X,
там уж точно надо будет это делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 18:51 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
ну вот этот набор контроллеров меня и интерсует, оно как таковое имеет решающую роль в производительности компьютера,

Они не видны для программиста, все функции они выполняют "сами". Просто в них записано, что "адреса с такого по сякой - в оперативку, с этого по тот - на видеокарту".
Цитата:
кстати на новых компьютерах могут использоваться 8гб оперативной памяти, это дело уж точно не поместится в ПЗУ адресацию 32-бита,

А причем тут 32 бита? Все эти контроллеры давно поддерживают много больше битов (от 40 и далее).
Цитата:
да и на моём компьютере 4гб оперативки, в этом случае моя оперативка должна была выместить всё адресное пространство

Куда вместить? Какое адресное пространство? Виртуальное? Так его на х86 архитектуре 4 ГБ, и сделать таких пространств можно дофига и больше.
Цитата:
ага, а код как грузится, GDT помогает.

Оперативка - устройство, осуществляющее запись, хранение и выдачу данных. Ей по барабану, что там лежит: код, данные или еще чего. Она просто пишет, хранит и выдает байты. Код выполняется процессором. Процессор читает команду из памяти и выполняет, читает следующую и выполняет.
GDT не может помогать. Это просто таблица. Набор байтов. Просто процессор при записи в cs, ss, fs, gs, ds, es регистры грузит информацию из этой таблицы во внутренние регистры и делает проверки.
Цитата:
и как же воспользоваться этим виртуальным адресным прострстранством

Прочитайте собрание сочинений Intel'а или AMD (документацию на архитектуру). Там все это подробнейшим образом описано.
Грубо говоря, адрес разбивается на несколько частей (по битам). Биты с N по M отвечают за смещение в таблице страниц 4 уровня (где лежат физические адреса таблиц 3 уровня), с M по K - в таблице 3-го и т.д. В последней таблице лежит физический адрес в оперативной памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 19:02 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
Bargest писал(а):
Прочитайте собрание сочинений Intel'а или AMD. Там все это подробнейшим образом описано.
Грубо говоря, адрес разбивается на несколько частей (по битам). Биты с N по M отвечают за смещение в таблице страниц 4 уровня (где лежат адреса таблиц 3 уровня), с M по K - в таблице 3-го и т.д. В последней таблице лежит физический адрес в оперативной памяти.

то есть наконец то дошло дело до TLB которое должно находится в процессоре,
ииии как оно работает и как этим пользоваться?????????????????????

неужели тот самый адрес который в CR3 находится имеет какое то отношение к этому делу.


Последний раз редактировалось scuter 01 июн 2012, 19:08, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 19:05 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
то есть наконец то дошло дело до TLB которое должно находится в процессоре,
ииии как оно работает и как этим пользоваться?????????????????????

Никак. Почти. Процессор не предоставляет инструкций для управления кешом (кроме пары-тройки, вида "сдампить кеш", "Invalidate кеш" или че-то в этом роде, особо не вчитывался).
Кеш - это дело процессора. Он сам старается использовать его оптимальным образом.
При загрузке адреса таблицы страниц верхнего уровня (для х64 - 4-го) в специальный управляющий регистр (cr3) этот кеш перезагружается процессором. Он туда считывает и хранит там самые часто используемые записи из таблиц страниц. Управлять кешом вручную почти никогда не приходится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 01 июн 2012, 22:28 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1197
ПиZдеC :mrgreen:

Yoda, сочувствую! Я уже научился на такое не обращать внимания.

Yoda писал(а):
Ни разу не встречал систем с дыркой на 16-м мегабайте? А систем с 512МБ или меньше ОЗУ? Я встречал.
Вероятность присутствия этой "дырки" есть, поэтому это нужно учитывать. По-любому местоположение и размер всех доступных диапазонов памяти выше 1-го мега я получаю от BIOS, так что могу ее и "не заметить", если не смотреть на суммарный объем доступной физической памяти, хотя на древних компах (где не поддерживается функция SMAP) она может стать причиной недоступности (для успешного детекта) памяти выше 16 мег, но не помню, чтобы я с таким сталкивался, правда, это может быть связано с тем, что даже на самом древнем компе, доступном мне для постоянного тестирования, есть функция SMAP. Насчет 1-го мега все понятно: функция int 12h теоретически должна учитывать и EBDA, и конфигурации с сокращенным количеством базовой памяти (для чего, собственно, она первоначально и предназначалась).

Yoda писал(а):
Станислав, повторяю, ты жестоко ошибаешься!
Товарищ, даже не отреагировал на твое замечание... типа не заметил :roll: Меня тоже это задело:
Yoda писал(а):
Так определять память - грубейшая ошибка!
Станислав писал(а):
Всё это должно быть за пределами объёма оперативки, внутри неё дыр не должно быть, хотя не факт, но пока это не важно.
Так что тебе мой респект!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 02 июн 2012, 01:49 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 949
Откуда: Дагоба
scuter писал(а):
и как же воспользоваться этим виртуальным адресным прострстранством, I/O map и перенаправление прерываний в TSS это понятно,
но адресное пространство как переделать (в защищённом режиме)

http://wiki.osdev.org/Paging
I/O map и TSS к этому не имеют ни малейшего отношения.

scuter писал(а):
кстати перемещать может и не надо но если мне надо будеть использовать VMX, SVM, TV-X,
там уж точно надо будет это делать.

Рекомендую прекратить наобум сыпать терминами и аббревиатурами, а то у меня складывается стойкое впечатление, что ты тут просто над всеми прикалываешься.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB