Есть исходники memtest, но в С я не бум-бум. Если кто разбирал эту прогу, то напишите алгоритм ее работы. желательно не свое мнение, а что-то похожее на то как работает memtest. буду очень благодарен. особенно интересует нюанс с памятью выделенной под bios и устройства. я так понял ее эта прога не тестит.
ну так пиши7 или назови тему, "прошу написать за меня. или разжевать мне до такого состояния, когда я смогу чего то написать, при условии что я в С не бум-бум" PS а в чем вы бум бум?
abcd008 с таким подходом, только такой вариант: натравиливаешь IDA на то, что реализует необходимый тебе функционал и разбираешься, как это работает Отредактировано Jupiter (Сегодня 88:88:88)
BIOS не запустится, если будет повреждён. А каждое устройтво имеет свою нюнансы работы со своей памятью. Поэтому это тестить в утилите для проверки ОЗУ не надо. А проверять память легко: Надо записать некое значение в каждый байт памяти и затем прочитать - если прочиталось не то, что записано значит в этом месте память неисправна. При этом надо пропустить код самой программы, которая проверяет.
>>пишу прогу для проверки памяти... увидев название темы, не глянув на подфорум подумал по началу про человеческую память )))) млять , аж прет)
Записал потом считал. Если нужно восстановить состояние оси, то выгрузка на диск всей памяти. Логично да.. после изучения мсдн возвращайтесь с вопросами.
спасибо за ответы, но некоторые могут только хайть и боятся признаться что сами полный 0. Умный промолчит, а еще умнее подскажет. я полазил на форумах и понял: 1. память надо тестить выше 1мб, чтоб не испортить систему(DOS) 2. взять у биос карту памяти, и проверять только user тип памяти 3. прочитать все PCI на предмет использования памяти, и выкинуть их из адресов проверки 4. проверку памяти производят в два приема. сначало в цикле пишут во всю память, а потом через несколько сек (чтоб точно убедиться что память плохо держит заряд в ячейки) в другом цикле считывают и проверяют на соответствие всю память. но есть еще вопросы. как убедиться что память самой программы не испорчена? я думаю сделать контрольный crc код в программе. и сначало проверить какой-то адрес(куда перенести себя) а потом загрузить туда копию себя и передать управление. а дальше тестить всю память по блокам. в несколько приемов для точности. сохраняя контекст памяти в уже проверенный блок.
Вранье. Почти правда. При использовании 2 не нужно. Да почему бы и память PCI не проверить. Не в два, а как минимум в 3. На сайте wasm.ru обсуждалось.
память надо тестить вне ОС, которая умеет работать в PM - то есть либо DOS, либо свой собственный загрузчик. После загрузки надо проверить CRC своей программы, чтобы убедится, что память с ней работает нормально Затем надо запросить у BIOS карту памяти. Чекить все области, которые отмечены как доступные прикладной программе и расположенные выше 1 Мб (можно и ниже, но тут важно пропустить таблицу прерываний, область данных BIOS и код самой программы). Причём память восстанавливать не обязательно (на работе DOS изменение памяти выше 1 МБ не отразится, если не используются "драйверы верхней памяти", но их быть не должно иначе мы не получим нормального доступа к ОЗУ). Память PCI служит для управления устройствами. Если туда писать что попало, то устройствам это не понравится. К тому же не всегда может прочитаться то, что записано, и притом это будет абсолютно нормально для некоторых устройств (при записи и чтении одного и того же участка памяти происходят обращения к разным регистрам устройства, один из которых read only, другой - write only). Поэтому туда лучше не соваться.
он не путает. вся память выделенная устройству, перекрывается устройством будь оно mmio или обычная. так что если даже оперативная память по этим адресам испорчена, на устройстве это не скажется, так как у него своя память. >При использовании 2 не нужно. в спецификации про e820 написано что она описывает только интегрированные устройства. а те что отдельно вставлены и можно(нужно) искать самому. (так же как и устройства pnp) >Почти правда. почему? >Не в два, а как минимум в 3. На сайте wasm.ru обсуждалось. почему. именно здесь на форуме я и прочитал что два раза. но для уверенности можно еще сколько хочешь.
>память надо тестить вне ОС, которая умеет работать в PM - то есть либо DOS, либо свой собственный загрузчик. >После загрузки надо проверить CRC своей программы, чтобы убедится, что память с ней работает нормально Затем >надо запросить у BIOS карту памяти. Чекить все области, которые отмечены как доступные прикладной программе и >расположенные выше 1 Мб (можно и ниже, но тут важно пропустить таблицу прерываний, область данных BIOS и код >самой программы). Причём память восстанавливать не обязательно (на работе DOS изменение памяти выше 1 МБ не >отразится, если не используются "драйверы верхней памяти", но их быть не должно иначе мы не получим нормального >доступа к ОЗУ). про crc я это и имел ввиду. а прогу я пишу для dos и память надо сохранять, потому что некоторые могут работать в нереальном режиме и можно повредить данные. соглашусь только с проверкой 1Мб