Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение количества физической памяти  (Прочитано 11783 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« : 02-05-2007 04:38 » 

Даже не знаю в какой раздел поместить данную тему. Вот решил сюда.

Тут такой вопрос, как мне определить количество установленной физической памяти на машине?

Считывание значения по адресу (в реальном режиме) 0040:0016 (сильно не пинайте, сейчас точно не помню точный адрес, по этому могу и ошибаться) слова, у меня на машине показывает 614 Кбайт, что соответственно не правда. Хотя BIOS както определяет размер физической памяти. Может кто знает, по какому адресу он размещает данное значение.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 02-05-2007 11:28 » 

Не думаю, что в переменных окружения BIOS будет записано, сколько есть памяти. Во старые и добрые времена, когда существовала только романтика ДОС, И Билли думал, что 640 килобайт, для обычного пользователя Это выше крыши. Практически небыло ПК с памятью выходящие за пределы 1 мегабайта.

Поэтому очень сильно зависит, от среды работы программы. Если все таки это консоль Windows, то поможет тебе функция >GlobalMemoryStatus<
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 02-05-2007 17:03 » 

Serg79,
https://club.shelek.ru/viewfiles.php?id=3
MemorySpy  Улыбаюсь
Записан

Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 03-05-2007 04:46 » 

Не парни, вы не вту сторону копаете. Мне нужно узнать количество установленной физической памяти на машине при ее старте.

Мне тут подсказали, что можно просканировать всю физическую память и вычислить ее размер, что то типа такого:
Код:
/* отправляем в память тестовое значение */
xchgl %eax, (%edi)
/* получаем его обратно */
xchgl (%edi), %eax
/* если значение изменилось, значит память закончилась */
Мне вот интересно, как BIOS определяет доступную физическую память, а также память выделенную под графический видеоадаптер? При старте машины он все эти значения высвечивает на консоле. А также он должен где то сохранить эти данные, вот только где он их сохраняет я не знаю.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 03-05-2007 06:06 » 

Мне вот интересно, как BIOS определяет доступную физическую память, а также память выделенную под графический видеоадаптер?

Это происходит при старте системы с нуля - запускается программа POST (power on self test) - она всё и проверяет. Если очень надо - в эту сторону ищи. Но ума не приложу - ЗАЧЕМ???
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 03-05-2007 13:38 » 

Serg79, попробуй записывать и cчитывать данные в ячейки начиная с 0 и до победного, с шагом, скажем, 1 метр.
Не знаю, правда, реально ли моё предложение )  Просто фантазирую
Записан

Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 04-05-2007 04:26 » new

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

Вот только я одного не пойму, как BIOS производит сканирование доступной памяти (у меня дома РIII стоит и мамка ASUS, так при включении питания показывается процес обнаружения физической памяти, счетчик в Кб увеличивается). Проблема в том, что при включении питания процессор стартует в реальном режиме процессора 8086. А его адресное пространство в этом режиме равно толко FFFF:FFFFh (примерно 1087 Кб). Получается, чтобы ему дотенуться до верхней памяти надо проц переключать в защищенный режим, а он этого не делает (слишком много проблем получиться). Мне так кажется, что определение памяти идет через обращения к портам ввода-вывода контроллера памяти мамки (что то подобное как работа с APIC).

Вчера скачал "System Programming Guide" от Intel, буду на выходных разбираться, что к чему.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines