|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » начальная загрузка компьютера |
|
|
начальная загрузка компьютера
|
Старожил Сообщения: 215 |
Профиль | Отправить PM | Цитировать
Здравствуйте!
Прошу помочь разобраться с начальной загрузкой компьютера (IBM PC-совместимого). За основу беру статью википедии Начальная загрузка компьютера и некоторые другие статьи оттуда, а также начал прикладываться к Intel® 64 and IA-32 Architectures Software Developer Manuals Хотелось бы исправить ошибки, уточнить детали, понять на что и на каком уровне можно воздействовать, выявить детали для дальнейшего изучения и т.п. Итак, нажимаем кнопку включения (power) или кнопку сброса (reset). В последнем случае сначала идёт так называемое "снятие сигнала RESET" (здесь нужно будет уточнить, что конкретно происходит). Далее 1. x86-совместимый процессор начинает работать в реальном режиме (Real-address mode) и исполняет инструкции с предопределённого адреса FFFF:0 (формат "segment_selector : offset" === "сегмент:смещение"), то есть с начала второго сегмента. Исполнение инструкций с адреса оперативной памяти FFFF:0 является следствием помещения встроенными средствами компьютера, значения FFFF в сегментный регистр CS (таким образом, это значение FFFF расценивается как адрес, с которого начинается сегмент кода программы) и значения 0 в регистр-указатель инструкций IP (таким образом, это значение 0 расценивается как адрес (смещение) внутри сегмента CS, с которого начинается инструкция, которую процессор должен выполнить следующей). Для справки: Режим реальных адресов является программным окружением (programming environment) для процессора Intel 8086, которое для совместимости сохранёно в последующих версиях процессоров. У процессора Intel 8086 всего 20 адресных линий, поэтому ему доступно всего 2 ^ 20 = 1 048 576 (физических) адресов оперативной памяти (это адреса от 0 до 1 048 575), то есть 1МиБ (мебибайт (а может и мёбибайт), 1MиБ = 2^20 = 1 048 576 Б (байт), то есть приблизительно 10^6 = 1МБ (мегабайт)). 1 сегмент в реальном режиме занимает 64КиБ (кибибайт, 1КиБ = 2^10 = 1024 Б (байт), то есть приблизительно 10^3 = 1КБ (килобайт)), 64КиБ = 64 * 1024 = 65536 Б, то есть в одном сегменте доступны эффективные адреса (смещения, offset) от 0 до 65536. Сегменты также называются страницами памяти. Всего сегментов 16 (= 1 048 576 / 65536). Также есть ещё понятие параграфа: 1 параграф = 16 байт, в 1МиБ ровно 65536 параграфов. Каждый сегмент удовлетворяет условию: он должен начинаться ровно на границе параграфа. Селектор сегмента как раз представляет собой номер параграфа, с которого начинается сегмент, то есть линейный (он отображает физический) адрес байта оперативной памяти при таком раскладе вычисляется как segment_selector * 16 + offset. 2. В конец доступного процессору физического адресного пространства оперативной памяти (а в реальном режиме ему доступен 1МиБ, реально чуть больше из-за наличия дополнительной памяти типа Upper Memory Area, High Memory Area), опять же встроенным в материнскую плату механизмом, копируется содержимое микросхемы BIOS. По адресу FFFF:0 содержится команда безусловного перехода (нечто типа jmp в ассемблере) на начало этого кода BIOS (скопированного из микросхемы BIOS). Тут, вроде бы очевидно, что начало кода BIOS и адрес, на который идёт безусловный переход в команде по адресу FFFF:0, должны зависеть от размера программы BIOS (обычно говорят о наборе программ BIOS). Если так, то размер новой версии BIOS при перепрошивке либо должен совпадать с размером прежней версии, либо при несовпадении размеров переводить командой безусловного перехода из места, в которое будет осуществлён безусловный переход по команде по адресу FFFF:0 в место начала кода новой версии. Вероятно здесь важно понимать, что процессор не читает напрямую содержимое микросхемы микросхемы BIOS, а читает её копию, отображённую (встроенными механизмами платы) в оперативную память. Далее, говоря "BIOS что-то делает", имеется в виду эти действия являются результатами выполнения кода BIOS в оперативной памяти. 3. BIOS запускает процедуру POST (Power-On Self-Test - самотестирование при включении), которая производит опрос и тестирование доступных устройств и ряд других операций, после успешного выполнения POST программа BIOS продолжает исполняться дальше или пытается сообщить о возникших проблемах. 4. BIOS опрашивает по порядку загрузочные устройства из списка, который сформирован настройками программы BIOS Setup (или CMOS Setup, эти настройки хранятся в CMOS-памяти, питаемой от батарейки), опрос продолжается до тех пор, пока загрузочное устройство не будет найдено или список не закончится. 5. BIOS считывает первый (нулевой - под номером 0) сектор (в 512 байт) загрузочного устройства (например, жёсткого диска), в котором предполагается находится MBR (Master Boot Record - главная загрузочная запись), размещает содержимое этого сектора в оперативной памяти по адресу 0:07C0 (07C0h = 31744), проверяет значение (сигнатуру) в последних двух байтах этого содержимого (там должно быть значение 55 AA) и при корректной сигнатуре управление передаётся в начало этого содержимого. 6. Далее всё зависит от содержимого MBR .... Спасибо! |
|
Отправлено: 00:43, 03-09-2014 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Неужели всё правильно и нечего добавить или нет интереса к этой важной теме?
Цитата jah:
Колесниченко О.В, Шишигин И.В, Соломенчук В.Г. Аппаратные средства PC (6-е изд.) и лаконичного Цитата:
или разве не возникает вопрос Цитата jah:
|
|||
Отправлено: 22:40, 03-09-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Дед Сообщения: 40597
|
Профиль | Отправить PM | Цитировать Цитата jah:
|
|
------- Отправлено: 23:00, 03-09-2014 | #3 |
Ветеран Сообщения: 1630
|
Профиль | Отправить PM | Цитировать Цитата jah:
Для разработчиков есть другие форумы, но если уж спрашивать, то по частям, а не одним большим текстом. Непонятен также практический смысл для Вас столь детального изучения процесса загрузки или приведения чрезмерно подробных азбучных истин про Reset. Цитата jah:
|
||
Последний раз редактировалось alef2474, 03-09-2014 в 23:58. Отправлено: 23:50, 03-09-2014 | #4 |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать Цитата jah:
Ведь в литературе это давно (лет 25-30 назад) в общих словах расписано. А конкретика постоянно меняется. Да и про BIOS пора забывать, --- активно внедряется UEFI |
||
Отправлено: 00:42, 04-09-2014 | #5 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать спасибо за ответы, по меньшей мере, не с собой разговариваю и дело двигается
Цитата WSonic:
Цитата alef2474:
В данном случае спрашивать по частям не вижу смысла, иначе большинство ответов сведётся к изложению, того, что можно было изложить сразу, и потом долго притираться в понятиях, к тому же не такой большой объём я затронул, в основном блоки крупные, хочется уточнить некоторые потенциально принципиальные детали, о которых возможно я не знаю, или знаю с ошибками когда объём информации велик, а её исчерпываемость не достаточна, то то, что для одного азбучные истины, для другого - вопрос, отложенный для дальнейшего изучения и поиска источника для изучения разве про reset больше нечего добавить? Цитата alef2474:
но только сейчас начинают прояснятся вроде бы очевидные вещи, которые раньше были для меня неочевидными: раз сектор диска - это минимальная адресуемая единица хранения информации на дисковых запоминающих устройствах (НЖМД, дискета, CD), значит механизм заключается в том, что bios начинает считывать первую из этих единиц, остаётся вопрос как программа определяет сколько для устройства является минимально адресуемой единицей, очевидно, информация об этом становится доступной во время опроса устройства при выполнении процедуры POST если всё так, то похоже, что удалось выявить нексколько принципиальных деталей Цитата Tau_0:
Цитата Tau_0:
Цитата Tau_0:
схема с UEFI меня тоже интересует, так как, допустим я хочу разработать свою ОС, значит мне как-то необходимо будет загрузить её в оперативную память для выполнения при включении компьютера |
||||||
Последний раз редактировалось jah, 04-09-2014 в 01:39. Отправлено: 01:25, 04-09-2014 | #6 |
Дед Сообщения: 40597
|
Профиль | Отправить PM | Цитировать jah,
Цитата:
|
|
------- Отправлено: 01:45, 04-09-2014 | #7 |
Ветеран Сообщения: 2270
|
Профиль | Отправить PM | Цитировать jah, я Вам больше скажу: многие не только не понимают, что происходит с ПК во время включения-выключению. Но им это не особенно нужно в повседневной деятельности.
|
Отправлено: 08:43, 04-09-2014 | #8 |
Ветеран Сообщения: 3945
|
Цитата jah:
Изучайте спецификации, интересно. |
|
Последний раз редактировалось Nerdy, 15-09-2014 в 19:58. Отправлено: 11:14, 04-09-2014 | #9 |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать Цитата jah:
|
|
Отправлено: 11:14, 04-09-2014 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
8 / 2012 - [решено] Загрузка компьютера | thevlados907@vk | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 3 | 16-06-2013 13:15 | |
загрузка компьютера | DeBill | Непонятные проблемы с Железом | 0 | 11-06-2011 15:20 | |
[решено] долгая загрузка компьютера | PV25 | Непонятные проблемы с Железом | 3 | 17-04-2011 22:05 | |
2008 R2 - Начальная настройка | DrZoD | Windows Server 2008/2008 R2 | 1 | 04-12-2010 12:02 | |
Начальная настройка Samba | Admiral83 | Общий по Linux | 7 | 27-01-2006 23:37 |
|