Помощь - Поиск - Пользователи - Календарь
Полная версия: Reboot - перезагрузка
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Altair
Извините за ламерский вопрос, он как происходит выключение и перезагрузка компьютера?
Нигде не нашел описание этих процессов.

И еще, при включении, процессор переходит в особый режим работы, и обнуляет все ячейки памяти, а это он автоматически делает, или можно этим управлять?
virt
это далеко не ламерский вопрос.
не помню где ,но в какойто книге по системному программированию я читал что посылка опр. значения на опр. порт приведет к перезагрузке.

а пока вот ,может поможет.
GLuk
Цитата(Oleg_Z @ 5.07.04 5:25)
Извините за ламерский вопрос, он как происходит выключение и перезагрузка компьютера?
Нигде не нашел описание этих процессов.

И еще, при включении, процессор переходит в особый режим работы, и обнуляет все ячейки памяти, а это он автоматически делает, или можно этим управлять?

Это тебе просто интересно? Или хочешь как-то применить на практике (эти знания)?


1. Пишешь, что нигде не нашел описания этих процессов, а где ты искал??
2. Было дело тож интересовался, осталось только это; кое что тут в DOS-кодировке, надеюсь разберешься. Описание горячего ресета, который включается опосля холодной чой-то не нашел.

Код

     POST - •®«®¤­ п ЇҐаҐ§ Јаг§Є  / Power On Self Test Activities

       - power supply starts Clock Generator (8284) with Power
         Good signal on BUS
       - CPU reset line is pulsed resetting CPU
       - DS, ES, Ё SS а ў­л ­г«о

       ЏаЁ е®«®¤­®© Ё Ј®ап祩 ЇҐаҐ§ Јаг§ЄҐ ўлЇ®«­повбп б«Ґ¤гойЁҐ и ЈЁ:
       - CS:IP гбв ­ ў«Ёў овбп а ў­л¬Ё FFFF:0000 ( ¤аҐб POST-Є®¤ )
       - ЇҐаҐе®¤ ­  CS:IP  (ўлЇ®«­Ґ­ЁҐ POST, Power On Self test)
       - IF = 0
       - д« ЈЁ CPU = 1, вҐбв ­  з⥭ЁҐ/§ ЇЁбм/з⥭ЁҐ ॣЁбва®ў CPU
       - Їа®ўҐаЄ  Є®­ва®«м­®© б㬬л ROM BIOS
       - ?­ЁжЁ «Ё§ жЁп DMA (verify/init 8237 timer, begin DMA RAM refresh)
       - save reset flag then read/write test the first 32K of memory
       - Initialize the Programmable Interrupt Controller (8259)
         and set 8 major BIOS interrupt vectors (interrupts 10h-17h)
       - determine and set configuration information
       - initialize/test CRT controller & test video memory (unless 1234h
         found in reset word)
       - test 8259 Programmable Interrupt Controller
       - test Programmable Interrupt Timer (8253)
       - reset/enable keyboard, verify scan code (AAh), clear keyboard,
         check for stuck keys, setup interrupt vector lookup table
       - hardware interrupt vectors are set
       - test for expansion box, test additional RAM
       - read/write memory above 32K (unless 1234h found in reset word)
       - addresses C800:0 through F400:0 are scanned in 2Kb blocks in
         search of valid ROM.  If found, a far call to byte 3 of the ROM
         is executed.
       - test ROM cassette BASIC (checksum test)
       - test for installed diskette drives & FDC recalibration & seek
       - test printer and RS-232 ports.  store printer port addresses
         at 400h and RS-232 port addresses at 408h.  store printer
         time-out values at 478h and Serial time-out values at 47Ch.
       - NMI interrupts are enabled
       - perform INT 19 (bootstrap loader), pass control to boot record
         or cassette BASIC if no bootable disk found
       - WARM BOOT procedure is now executed
GLuk
Цитата(virt @ 5.07.04 6:04)
это далеко не ламерский вопрос.
не помню где ,но в какойто книге по системному программированию я читал что посылка опр. значения на опр. порт приведет к перезагрузке.

а пока вот ,может поможет.

А что ты имел ввиду? По-моему сабж не об этом.. blink.gif
P@sh@
Oleg_Z
И еще, при включении, процессор переходит в особый режим работы, и обнуляет все ячейки памяти, а это он автоматически делает, или можно этим управлять?
Как это понимать? оперативная память не очищается после отключения питания ??? не верю!
имхо, и при перезагрузке тоже имеет место быть кратковременное отключение питания на память и т.д.

и что ты подразумеваешь под процессом выключения компа? это вроде мгновенное дело: было питание - раз, и нет его...
или ты про нормальное завершение работы в винде ? smile.gif
BlackShadow
Оперативная память - она на то и оперативеная, что была и нет. А при загрузке она не обнуляется, а проверяется. Что-то типа scandisk'а перед виндой smile.gif
Altair
При включении я так понимаю в ячейках памяти бардак вот и обнуляются.
Это я прочел в Питере Абеле "Ассемблер".
Altair
Цитата
Или хочешь как-то применить на практике (эти знания)?

Просто интересно. Но если мне что-то интересно, то становится для меня важнее, чем если бы это было бы надо!

Цитата
1. Пишешь, что нигде не нашел описания этих процессов, а где ты искал??

Книги:
Фаронов (smile.gif )
Питер Абель "Ассемблер"
справочник по ДОС techhelp
Журден.
Поисковик Рамблер. (УЖАС, несколько десятков тясяч ччылок, в основном анекдотыsmile.gif )


P.S. короче никто не знает sad.gif
GLuk
На первый вопрос я тебе по-моему ответил... blink.gif или нет???
А вот искать надо в гугле
Altair
Често говоря не совсем. Мне бы код не помешал для понимания. На любом языке. Хотя конечно лучше на асме.
GLuk
Цитата(Oleg_Z @ 9.07.04 15:36)
Често говоря не совсем. Мне бы код не помешал для понимания. На любом языке. Хотя конечно лучше на асме.

Помню только для гор. перезагрузки:

Код

push 0F000h
push 0FFF0
ret


Ессесно эта функция недокументирована, каждый производитель BIOS'a не обязан следовать этому неписанному правилу... ;)
P@sh@
Oleg_Z
При включении я так понимаю в ячейках памяти бардак вот и обнуляются.

нашел у себя книгу... на винте... вот:
Каждый бит памяти проверяется, может ли он быть установлен в единицу и
сброшен в нуль. По окончании теста процедура POST записывает нули по всем
адресам памяти.

и еще:
INT 19h - точка входа в процедуру начальной загрузки...

Эх, помянуть что ли опять добрым словом свой старый комп ПК8000 Веста...
как же там все идеально было сделано: биос проецировался на первые 16кб памяти (read-only естественно), туда же проецировалась и вся видео память - запись по адресам 0-3fff шла прямо на экран, чтение... по умолчанию из биоса, для видеопамяти была спецкоманда. Точка входа в подпрограмму инициализации (POST?) была - 0000h ! т.е. для теплого рестарта достаточно было загнать в память тройку байт - jmp 0 (C3 00 00)...
щас самое интересное: холодного рестарта как такового не было! после завершения POST'а биос проверял 2 байта в ОЗУ (!) и если они были не нули (!), отправлялся на этот адрес (!). как это понимать? этим пользовались в основном для защиты игрушек от изменения и копирования - запустившись, они всего лишь проставляли в том секретном месте свой адрес... нажатие на кнопку СБРОС память не очищало(!), и если какой-нибудь хакер, знающий эту особенность компа, хотел после перезагрузки посмотреть код игры (если выйти из нее нельзя было), он обламывался - игра запускалась биосом автоматически (покруче всяких autoexec-ов и автозапусковsmile.gif).
Такой же эффект можно было наблюдать даже отключив питание, правда лишь на долю секунды, если дольше - память обнулялась...
BlackShadow
А ещё когда-то давно было INT 18h. Это была точка входа во встроенный басик (на ямаха вроде). При обломе на INT 19h биосярка не плакала с криками "вставь мне... системный диск!", а обращалась к этому чудному и безотказному smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.