Загружает операционную систему с диска в оперативную память

Обновлено: 28.06.2024

Хотя технически память — это любая форма электронного хранилища, чаще всего она используется для идентификации быстрых временных форм хранения. Если бы центральный процессор вашего компьютера должен был постоянно обращаться к жесткому диску для извлечения всех необходимых ему данных, он работал бы очень медленно. Когда информация хранится в памяти, ЦП может получить к ней гораздо более быстрый доступ. Большинство форм памяти предназначены для временного хранения данных.

ЦП обращается к памяти в соответствии с четкой иерархией. Независимо от того, поступают ли они из постоянного хранилища (жесткий диск) или из ввода (клавиатура), большинство данных сначала попадают в оперативную память (ОЗУ). Затем ЦП сохраняет фрагменты данных, к которым ему необходимо получить доступ, часто в кэше, и поддерживает определенные специальные инструкции в регистре. Мы поговорим о кеше и регистрах позже.

Все компоненты вашего компьютера, такие как ЦП, жесткий диск и операционная система, работают вместе как одна команда, и память является одной из наиболее важных частей этой команды. С момента включения компьютера до момента его выключения ваш ЦП постоянно использует память. Давайте рассмотрим типичный сценарий:

  • Вы включаете компьютер.
  • Компьютер загружает данные из постоянной памяти (ПЗУ) и выполняет самотестирование при включении питания (POST), чтобы убедиться, что все основные компоненты работают правильно. В рамках этого теста контроллер памяти проверяет все адреса памяти с помощью операции быстрого чтения/записи, чтобы убедиться в отсутствии ошибок в микросхемах памяти. Чтение/запись означает, что данные записываются в бит, а затем считываются из этого бита.
  • Компьютер загружает базовую систему ввода-вывода (BIOS) из ПЗУ. BIOS предоставляет самую основную информацию об устройствах хранения, последовательности загрузки, безопасности, возможности Plug and Play (автоматическое распознавание устройств) и некоторых других элементах.
  • Компьютер загружает операционную систему (ОС) с жесткого диска в оперативную память системы. Как правило, критически важные части операционной системы хранятся в оперативной памяти, пока компьютер включен. Это позволяет ЦП иметь немедленный доступ к операционной системе, что повышает производительность и функциональность всей системы.
  • Когда вы открываете приложение, оно загружается в ОЗУ. Чтобы экономить ОЗУ, многие приложения сначала загружают только основные части программы, а затем загружают другие части по мере необходимости.
  • После загрузки приложения все файлы, открытые для использования в этом приложении, загружаются в ОЗУ.
  • Когда вы сохраняете файл и закрываете приложение, файл записывается на указанное устройство хранения, а затем он и приложение удаляются из ОЗУ.

В приведенном выше списке каждый раз, когда что-то загружается или открывается, оно помещается в оперативную память. Это просто означает, что он был помещен во временное хранилище компьютера, чтобы ЦП мог легче получить доступ к этой информации. ЦП запрашивает необходимые данные из ОЗУ, обрабатывает их и записывает новые данные обратно в ОЗУ в непрерывном цикле. В большинстве компьютеров перетасовка данных между ЦП и ОЗУ происходит миллионы раз в секунду. Когда приложение закрывается, оно и все сопутствующие файлы обычно очищаются (удаляются) из оперативной памяти, чтобы освободить место для новых данных. Если измененные файлы не сохраняются на постоянное запоминающее устройство перед очисткой, они теряются.

Один распространенный вопрос о настольных компьютерах, который возникает все время, звучит так: "Зачем компьютеру нужно так много систем памяти?"

Есть ли способ загрузить всю ОС и все программные файлы в Ram?

Подождите, я имел в виду Нет

Просмотреть изображение: /infopop/emoticons/icon_biggrin.jpg Просмотреть изображение: /infopop/emoticons/icon_wink.jpg

(за исключением стандартных дисков RamDrive/DOS, которые там есть. Они загрузили бы все в ОЗУ)

Даже если вы загрузите программные файлы в оперативную память, их запуск все равно приведет к тому, что им будет предоставлено собственное адресное пространство и т. д. Время запуска приложения будет немного лучше, но в целом это будет огромная трата времени. памяти. Что касается ОС, то она знает, что держать критически важные части готовыми к работе — это хорошо™. Другими словами, если он должен быть в ОЗУ, он, вероятно, уже есть.

Короткий ответ: нет

Честно говоря, я понятия не имею, но я отвечу "Нет", как и все остальные.

почему постоянно всплывает один и тот же глупый вопрос. вот настоящий вопрос.

Потому что люди все чаще и чаще имеют на своих компьютерах более 1 ГБ памяти и видят, что диспетчер задач говорит, что они используют только 100 МБ или около того, и хотят использовать остальную часть с пользой. Кроме того, это довольно расплывчатая тема для поиска, поэтому, даже если некоторые люди будут искать, они вряд ли найдут другие темы по этой теме. Возможно, это должно быть в faq, хотя я просто заметил, что без ссылки faq все равно никто не найдет. Просмотреть изображение: /infopop/emoticons/icon_wink.jpg

Это не глупый вопрос.Возможно, глупая идея, но не глупый вопрос. К сожалению, люди не пользуются функцией поиска или функция поиска не работает. поиск. И у нас также нет ссылки на часто задаваемые вопросы по NT/2K, чтобы осветить этот вопрос.

RAMDRIVE²²°°°² ULTRA® ВЗГЛЯД В БУДУЩЕЕ, И БУДУЩЕЕ СЕЙЧАС. ВУУУУУУУУУУУУУММММММММММММММММММММММММММММММММММММММММММММММММММММММММ

quote: Первоначальное сообщение от s@nDOk@n:
RAMDRIVE²²°°°² ULTRA® ВЗГЛЯД В БУДУЩЕЕ И БУДУЩЕЕ СЕЙЧАС. ВУУУУУУУУУУУУУУММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММ

Это было совсем не приятно.

Просмотр изображения: /infopop/emoticons/icon_biggrin.jpg

quote: Первоначальное сообщение от s@nDOk@n:
RAMDRIVE²²°°°² ULTRA® ВЗГЛЯД В БУДУЩЕЕ И БУДУЩЕЕ СЕЙЧАС. ВУУУУУУУУУУУУУУММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММ

АПК? Это ты?

Как вы думаете, как работают ваши программы, если они не в оперативной памяти? Ваш процессор может получить доступ только к памяти (и к пространству ввода-вывода).
Как вы думаете, как работает ваша ОС, если она не находится в оперативной памяти? Ваш процессор может получить доступ только к памяти (и к пространству ввода-вывода).

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

Так что, да, вы можете загрузить ОС в оперативную память, и вам не нужно ни черта делать, чтобы включить эту "функцию". ОС не может работать без загрузки данных в ОЗУ.

Если вы хотите загрузить всю ОС в ОЗУ, запустите всю ОС (на самом деле вы не можете, так как некоторые фрагменты кода являются взаимоисключающими с другими; например, если у вас Win2K и включены службы терминалов, вы отключаете режим гибернации, но вы можете довольно близко подойти к этому, хотя в этом случае вы повредите производительности из-за всего лишнего, что вы будете запускать).

Если вы хотите выполнить более разумную задачу загрузить нужные вам биты ОС в ОЗУ, это поведение по умолчанию и обязательно.

У меня сложилось впечатление, что у него не было доступа ни к какому жесткому диску, и он хотел хранить всю ОС в оперативной памяти, например, на RAMDisk.

В любом случае, ни одна современная ОС не сможет этого сделать.

Хмммм, все известные мне Unix могут это сделать. На самом деле, именно так работает большинство маршрутизаторов Linux и BSD, которые полностью работают с дискеты или компакт-диска. Загрузите ядро ​​в память, извлеките архив с базовой системой на рам-диск и запустите оттуда.

Это не особенно полезно для настольных компьютеров, но это далеко не то, что "ни одна современная ОС не может сделать".

Я был бы не против, если бы он загрузил всю чертову ОС в ОЗУ, тогда мне не пришлось бы сидеть и вертеть пальцами, пока он перезагружает образ рабочего стола, который я использую, с жесткого диска после того, как я сделано копирование особенно большого файла из одного места в другое. Просмотреть изображение: /infopop/emoticons/icon_frown.jpg

quote: Первоначальное сообщение от Nothinman:
Хмммм, каждый известный мне Unix может сделать это. На самом деле, именно так работает большинство маршрутизаторов Linux и BSD, которые полностью работают с дискеты или компакт-диска. Загрузите ядро ​​в память, извлеките архив с базовой системой на рам-диск и запустите оттуда.

Это не особенно полезно для настольных компьютеров, но это далеко не то, что "ни одна современная ОС не может сделать".

Я сомневаюсь, что операционная система загружается в системную память. Однако я думаю, что вы думаете о хранении кода ОС и приложения в специальной твердотельной памяти (флеш-диске?)

Это именно то, что происходит при загрузке любого компьютера. На самом деле это то, что означает термин «загрузка».

quote: Первоначальное сообщение от Nothinman:
Хмммм, каждый известный мне Unix может сделать это. На самом деле, именно так работает большинство маршрутизаторов Linux и BSD, которые полностью работают с дискеты или компакт-диска. Загрузите ядро ​​в память, извлеките архив с базовой системой на рам-диск и запустите оттуда.

Это не особенно полезно для настольных компьютеров, но это далеко не то, что "ни одна современная ОС не может сделать".

Хмммм, каждая известная мне Windows может это сделать. Перечитайте пост PeterB. Что касается Linux Router, они просто максимально урезали ОС, поэтому нет необходимости в массовом хранилище. На самом деле, вы когда-нибудь простаивали так долго, что жесткие диски останавливались? Как работает система, если жесткий диск даже не работает? Выполняя по памяти! [удушье] Система уходит в хранилище, когда нужно ввести что-то новое. В случае маршрутизатора Linux ничего нового не было представлено.

Ха-ха, Petwar заставляет меня смеяться. Просмотреть изображение: /infopop/emoticons/icon_biggrin.jpg

Маршрутизатор Linux, вероятно, можно было бы запустить из ПЗУ, имея всего несколько МБ ОЗУ для нестабильной среды.ПЗУ помещается в адресное пространство ЦП точно так же, как и ОЗУ.

<р>. Мне нужна ОС, статические компоненты которой хранятся в ПЗУ для возможности мгновенного включения, например Palm

quote: Первоначально опубликовано Valhalla1:
. Мне нужна ОС, статические компоненты которой хранятся в ПЗУ для возможности мгновенного включения, например Palm

Пойдите, получите Linux ROM (да, у кого-то есть какой-то сумасшедший bizzarro Linux, который может поместиться вместе с biod в некоторые материнские ПЗУ). Имейте в виду. у вас не будет плавника, так как он действительно оголен.

Или, что еще лучше, никогда не выключайте компьютер. (Что я делаю)

Пожалуйста, не шутите на тренировках. Просмотреть изображение: /infopop/emoticons/icon_biggrin.jpg

то, о чем вы говорите, возможно, но если вы ищете более быстрое время загрузки, этого не произойдет. Windows потратит еще больше времени на загрузку всех этих файлов в ОЗУ (большинство из которых вы никогда не будете использовать).

Я где-то читал (кажется, Boot), они сравнивали твердотельный RAM-накопитель, время загрузки было значительно ускорено, а затем процессор снова тормозил систему. таким образом, вы перемещаете узкое место из одной подсистемы в другую.

вы можете создать 768-мегабайтный RAM-диск в системе с 1 GIG и скопировать на него все программные файлы и файлы каталога winnt, которые Windows позволит вам скопировать. (обратите внимание, что Windows НЕ позволит вам копировать определенные системные файлы, которые используются).

Какую часть этого материала вы бы использовали на самом деле? Быстрый C-A-D показывает, что у меня запущено 32 процесса, в моем каталоге winnt почти 7000 файлов общим размером 900 МБ. даже если каждый процесс использует 5 других файлов (160), что составляет менее 2% от всех файлов, которые вы загружаете в ОЗУ. остальные тратят место на ramdrive

Насколько я слышал, вы также можете переместить файл подкачки на оперативную память. Я никогда не пробовал, и те, кто говорили, что это не очень хорошая идея.

Если вы действительно хотите использовать часть этой оперативной памяти, создайте оперативную память и попросите IE поместить туда свои временные интернет-файлы/историю. Это то, чем я пользовался до того, как перешел на оперу. Когда вы выключаете компьютер, все ваши интернет-треки исчезают. Идеально подходит для настоящих параноиков Посмотреть изображение: /infopop/emoticons/icon_wink.jpg.

Если у вас достаточно большой RAM-диск, вы можете даже перенаправить папку TEMP на диск, но, попробовав, это не стоит хлопот. в конце концов у вас закончится место.

quote: Первоначальное сообщение от Hat Monster:
Маршрутизатор Linux, вероятно, можно было бы запустить из ПЗУ, имея всего несколько МБ ОЗУ для нестабильной среды. ПЗУ помещается в адресное пространство ЦП точно так же, как и ОЗУ.

ROM помещается туда, куда вы скажете.

Он может находиться в области ввода/вывода.
Он может находиться в пространстве памяти.
Он может быть вообще недоступен процессору напрямую.

Операционные системы можно запускать напрямую из их энергонезависимого хранилища; это называется XIP (eXecute In Place) — это устраняет необходимость копирования программы в энергозависимую память для выполнения (хотя некоторая область энергозависимых данных все еще необходима). WinCE может это сделать, это могут специально настроенные Lunix'ы. Однако я не верю, что это может сделать любой вариант NT. Обычно для этого требуется определенная аппаратная поддержка.

Когда компьютер включен, где загружается операционная система? Это ОЗУ или ПЗУ?

Ну, я читал, что ОЗУ — это энергозависимая память (основная память), а в ПЗУ есть некоторая инструкция только для чтения, которая загружается/выполняется при включении компьютера.

4 ответа 4

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

Хорошо. По крайней мере, не участвует. В начале, когда вы включаете компьютер, ваш биос выполняет некоторый код. Этот код обычно сохраняется в EEPROM. Это электрически стираемое программируемое постоянное запоминающее устройство. Итак, это ПЗУ, но его можно стереть и перепрошить (что происходит при обновлении BIOS).

Биос загрузит загрузочный код вашей операционной системы с другого устройства (обычно жесткого диска) в ОЗУ и выполнит его. С этого момента ПЗУ обычно не используется.


Когда речь идет о загрузке ОС, не существует "высокого уровня". Также ничего нельзя "загрузить" из оперативной памяти при запуске, так как она содержит случайные значения.

При включении компьютера операционная система не загружается; загружается прошивка, будь то BIOS для x86 или (U)EFI для современных плат; прошивка загружается с какого-либо ПЗУ на материнской плате (при условии, что компьютер класса ПК). Затем прошивка решает, какие устройства (или разделы, в случае (U)EFI) являются загрузочными, а затем загружает их по физическому адресу 0x7c00 (в случае BIOS) или в любом другом месте, которое загрузчик хочет (в случае (U)EFI). ; Я пока ничего не писал для (U)EFI, так что я действительно не знаю, как это работает). Позже загрузчик делает все, что хочет.

Итак: при запуске прошивка загружается из ПЗУ; затем он решает, что делать, что загружать и откуда загружать, поэтому ваш вопрос слишком общий, чтобы дать вам точный ответ.

Когда компьютер включен, ПЗУ загружает систему BIOS, а операционная система загружается и помещается в ОЗУ, поскольку ПЗУ не является энергозависимым и операционная система должна быть на компьютере каждый раз при его включении, ПЗУ идеальное место для хранения операционной системы до включения компьютера. Как я уже упоминал, энергонезависимость ОЗУ не является хорошим местом для хранения операционной системы, но ОЗУ запускает и хранит используемые в настоящее время приложения и программное обеспечение, поэтому операционная система должна быть помещена в ОЗУ по мере загрузки компьютерной системы. . :)

В начале, когда вы включаете компьютер, ваш биос выполняет некоторый код. Этот код обычно сохраняется в EEPROM. Это электрически стираемое программируемое постоянное запоминающее устройство. Итак, это ПЗУ, но его можно стереть и перепрошить. Биос загрузит загрузочный код вашей операционной системы с другого устройства (обычно жесткого диска) в ОЗУ и выполнит его. С этого момента ПЗУ обычно не используется.

Очень активный вопрос. Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с меткой операционная система или задайте свой вопрос.

Связанные

Горячие вопросы о сети

Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.22.41737

Операционную систему иногда называют «первой программой», позволяющей запускать другие программы. Однако обычно он хранится в виде файла (или, чаще, набора файлов) на диске. Как запускается эта «первая» программа?

PDP-11 /70 передняя панель

Передняя панель PDP–11/70

Операционная система загружается в процессе начальной загрузки, более кратко известном как загрузка. Загрузчик — это программа, задачей которой является загрузка более крупной программы, например операционной системы.

Когда вы включаете компьютер, его память обычно не инициализируется. Следовательно, нечего бегать. Ранние компьютеры имели аппаратное обеспечение, которое позволяло оператору нажатием кнопки загружать последовательность байтов с перфокарт, перфоленты или ленточного накопителя. Переключатели на передней панели компьютера будут определять источник данных и целевой адрес памяти. В некоторых случаях программное обеспечение загрузчика было жестко подключено как энергонезависимая память (на ранних компьютерах это была сетка проводов с разрезами в соответствующих местах, где требовался 0-бит).

В ранних системах миникомпьютеров и микрокомпьютеров оператор компьютера использовал переключатели на передней панели компьютера, чтобы переключать код для загрузки более крупной программы, программируя каждую ячейку памяти, а затем запуская программу. Эта программа может делать что-то простое, например считывать последовательные байты в память с бумажной ленты, прикрепленной к телетайпу.

В более поздних системах постоянная память будет содержать небольшой загрузчик, обладающий базовыми интеллектуальными возможностями для чтения, скажем, первого сектора (512 байт) диска.

Поскольку эта первоначальная программа должна была быть как можно меньше, она должна была иметь минимальные возможности. Часто случалось, что загрузчик загружал другой загрузчик, называемый загрузчиком второго этапа, который был более сложным. Этот загрузчик второго этапа будет иметь проверку ошибок, среди возможных других функций, таких как предоставление пользователю выбора операционных систем для загрузки, возможность загрузки диагностического программного обеспечения или включение диагностических режимов в операционной системе. Этот многоэтапный загрузчик, когда загрузчик загружает больший загрузчик, называется цепной загрузкой.

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

Чтобы конкретизировать пример процесса загрузки, давайте взглянем на 32-разрядные Intel-совместимые ПК (через некоторое время мы перейдем к 64-разрядным системам). Эта архитектура известна как IA-32 (32-разрядная архитектура Intel) и определяет набор инструкций большинства микропроцессоров Intel, начиная с Intel 80386, представленного в 1986 году. Она по-прежнему поддерживается в новейших процессорах Intel.

Ожидается, что ПК на базе IA-32 будет иметь BIOS (базовую систему ввода/вывода, которая включает прошивку загрузчика) в энергонезависимой памяти (в прошлом ПЗУ и флэш-память NOR в наши дни). BIOS является потомком BIOS ранних систем CP/M, поскольку содержит низкоуровневые функции для доступа к некоторым базовым системным устройствам, таким как дисковый ввод-вывод, чтение с клавиатуры и доступ к видеодисплею. Он также содержит код для загрузки загрузчика этапа 1.

Когда ЦП сбрасывается при запуске, компьютер начинает выполнение в ячейке памяти 0xffff0 (архитектура IA–32 использует форму адресации сегмент:смещение; сегмент кода устанавливается на 0xf000, а указатель инструкции устанавливается на fff0 ) .

Процессор запускается в реальном режиме, что дает ему доступ только к 20-битному адресному пространству памяти и обеспечивает прямой доступ к вводу-выводу, прерываниям и памяти (в игру вступают 32-битная адресация и виртуальная память). при переключении процессора в защищенный режим). Адрес 0xffff0 фактически находится в конце ПЗУ BIOS и содержит инструкцию перехода в область BIOS, содержащую код запуска.

При запуске BIOS выполняет следующую последовательность действий:

  1. Самопроверка при включении питания (POST)
  2. Определить BIOS видеокарты (чипа) и выполнить его код для инициализации видеооборудования.
  3. Обнаружение любых других BIOS устройств и вызов их функций инициализации
  4. Отображение начального экрана BIOS
  5. Выполните краткий тест памяти (узнайте, сколько памяти в системе)
  6. Установите параметры памяти и накопителя
  7. Настройка устройств Plug & Play (обычно устройств с шиной PCI)
  8. Назначить ресурсы (каналы DMA и IRQ)
  9. Определить загрузочное устройство

Когда BIOS идентифицирует загрузочное устройство (обычно это один из нескольких дисков, помеченных как загрузочный диск), он считывает блок 0 с этого устройства в ячейку памяти 0x7c00 и переходит туда.

Этап 1: основная загрузочная запись

  • Загрузчик первого этапа (≤ 440 байт)
  • Подпись диска (4 байта)
  • Таблица разделов диска, которая определяет отдельные области диска (16 байт на раздел × 4 раздела)

Этап 2: Загрузочная запись тома

После того как BIOS передает управление началу MBR, который был загружен в память, код MBR просматривает свою таблицу разделов и загружает загрузочную запись тома (VBR) для этого раздела. VBR — это последовательность последовательных блоков, начиная с первого блока диска назначенного раздела. Первый блок VBR идентифицирует тип и размер раздела и содержит начальный загрузчик программы (IPL), который представляет собой код, загружающий дополнительные блоки, составляющие загрузчик второй ступени. В системах, производных от Windows NT (например, Windows Server 2012, Windows 8), IPL загружает программу NTLDR, которая затем загружает операционную систему.

Одна из причин, по которой низкоуровневым загрузчикам сложно загрузить полную ОС, особенно такую, которая может состоять из нескольких файлов, заключается в том, что для этого требуется возможность анализировать структуру файловой системы. Это означает понимание того, как располагаются каталоги и имена файлов и как найти блоки данных, соответствующие конкретному файлу. Без большого количества кода гораздо проще просто читать последовательные блоки. Загрузчик более высокого уровня, такой как Microsoft NTLDR, может читать форматы файлов NTFS, FAT и ISO 9660 (CD).

За пределами Windows

Существует множество вариантов загрузки других операционных систем на ПК с процессором Intel. Одним из популярных загрузчиков в системах Linux является GRUB или GRand Unified Bootloader. GRUB также является многоэтапным загрузчиком. BIOS, разумеется, делает то же, что и всегда: идентифицирует загрузочное устройство, загружает основную загрузочную запись и передает управление этому только что загруженному коду. В GRUB MBR обычно содержит загрузчик первого этапа, называемый GRUB Stage 1. Этот загрузчик этапа 1 загружает GRUB Stage 2. Загрузчик этапа 2 предоставляет пользователю выбор операционных систем для загрузки и позволяет пользователю указать любую дополнительные параметры загрузки для этих систем (например, установить максимальный объем памяти, включить отладку). Затем он считывает ядро ​​выбранной операционной системы и передает ему управление.

Особая проблема с использованием GRUB для загрузки Windows заключается в том, что Windows не совместима с мультизагрузкой. Мультизагрузка — это спецификация Free Software Foundation по загрузке нескольких операционных систем с использованием одного загрузчика. В этом случае GRUB имитирует обычный процесс загрузки Windows. Он загружает загрузчик, который обычно находится в MBR (или запускает программу меню загрузки Windows). С этого момента GRUB исчезает, Windows понятия не имеет, что произошло, и вступает во владение собственный процесс загрузки Windows.

До свидания, BIOS. Здравствуй, UEFI

Поскольку 64-разрядные архитектуры пришли на смену 32-разрядным, BIOS стал выглядеть довольно устаревшим.Intel намеревалась создать спецификацию преемника BIOS, в котором не было бы ограничений на выполнение кода запуска в 16-битном режиме с 20-битной адресацией. Эта спецификация называется Unified Extensible Firmware Interface или UEFI. Хотя он разработан Intel, с 2005 года им управляет Unified EFI Forum. Он используется во многих новых 64-разрядных системах, включая Mac, которые также имеют устаревшую поддержку BIOS для запуска Windows.

Загрузка с UEFI

Благодаря UEFI больше нет необходимости в основной загрузочной записи для хранения загрузчика этапа 1; UEFI умеет анализировать файловую систему и загружать файл сам по себе, даже если этот файл не занимает смежные блоки диска. Вместо этого UEFI считывает таблицу разделов GUID (глобальный уникальный идентификатор) (GPT), которая находится в блоках сразу после блока 0 (где MBR все еще находится по устаревшим причинам). GPT описывает структуру таблицы разделов на диске. Исходя из этого, загрузчик EFI идентифицирует системный раздел EFI. Этот системный раздел содержит загрузчики для всех операционных систем, установленных на других разделах устройства. Для систем Windows с поддержкой EFI UEFI загружает Диспетчер загрузки Windows (bootmgfw.efi). Для более старых 64-разрядных систем NT EFI загружал IA64ldr. Для Linux есть много вариантов. Двумя распространенными способами являются использование EFI-совместимой версии GRUB (Grand Unified Bootloader) и загрузка файла, такого как grub.efi, или загрузка EFI load load elilo.efi, загрузчик EFI.

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

Все наше обсуждение до сих пор было сосредоточено на загрузке с архитектурой на базе ПК Intel (включая архитектуры, совместимые с IA-32/IA-64, например, от AMD). Это доминирующая архитектура в современных ПК (от ноутбуков до серверов), но существует очень много устройств не Intel, особенно во встроенных устройствах, таких как сотовые телефоны. А что с ними?

Существует множество реализаций процесса загрузки. Многие встроенные устройства не загружают операционную систему, но уже хранят ее в энергонезависимой памяти (например, во флэш-памяти или ПЗУ). Те, которые загружают ОС, такие как телефоны Android на базе ARM, например, будут выполнять код в постоянной памяти (обычно во флэш-памяти NOR), когда устройство включено. Этот загрузочный код встроен в ASIC ЦП на некоторых устройствах, поэтому вам не нужна отдельная микросхема флэш-памяти на плате.

При перезагрузке системы (включая включение питания) процессор находится в режиме супервизора (SVC), а прерывания отключены. В системах на базе ARM процессор начинает выполнение по адресу 0x00000000. Флэш-память, содержащая код запуска, отображается на адрес 0x00000000 при сбросе. Этот код выполняет различные инициализации, включая настройку таблицы векторов исключений в DRAM и копирование кода приложения из ROM в DRAM (в DRAM код выполняется быстрее). Код переназначает DRAM на адрес 0, тем самым скрывая флэш-память (процессор имеет бит REMAP для изменения отображения флэш-памяти). Затем инициализируется система памяти. Это включает в себя настройку защиты памяти и настройку системных стеков. Затем инициализируются устройства ввода/вывода, а процессор переключается в пользовательский режим. Загрузочная прошивка обнаруживает загрузочный носитель, загружает и запускает загрузчик второго уровня (при необходимости). Загрузчик второго этапа часто представляет собой GRUB для больших систем или uBoot для встроенных систем. Этот загрузчик второго этапа загружает операционную систему и передает ей управление.

Старые версии систем Apple Macintosh на базе PowerPC, начиная как минимум с OS 8, а также с OS X, основывались на Open Firmware. Открытая прошивка была разработана Sun и использовалась в компьютерах, отличных от Intel Sun. Как только Apple перешла на системы Intel, она приняла UEFI в качестве встроенного ПО на уровне загрузки.

Старые компьютеры Mac

Открытая прошивка хранится в ПЗУ и, как и BIOS ПК, запускается при включении питания. Поскольку Open Firmware была разработана как независимая от платформы, она реализована на Forth (простой язык на основе стека) и скомпилирована в байт-коды, а не в машинные инструкции. Прошивка содержит интерпретатор байт-кода.

В отличие от BIOS, Open Firmware предоставляет пользователю процессор командной строки, из которого можно редактировать параметры конфигурации системы, такие как уменьшение объема физической памяти, отладка системы или даже запуск сервера telnet, чтобы вы могли взаимодействовать с прошивкой и процессом загрузки с удаленного компьютера через соединение Ethernet.

Перед загрузкой операционной системы Open Firmware создает дерево устройств, исследуя компоненты на основной плате и устройствах расширения.

Как и BIOS ПК, Open Firmware содержит драйверы устройств, которые в процессе загрузки встроенного ПО могут использоваться для доступа к диску, клавиатуре, монитору и сети. Однако все эти драйверы реализованы в FCode, системе байт-кода Forth. Также как и BIOS, эти драйверы используются только в процессе загрузки. Сама операционная система имеет собственные драйверы среды выполнения.

В отличие от BIOS, Open Firmware может анализировать файловые системы HFS/HFS+ (исходная файловая система на компьютерах Mac), поэтому вы можете использовать интерпретатор команд Open Firmware для загрузки загрузочного файла с жесткого диска и его запуска. По умолчанию Open Firmware загружает файл из системного раздела. В системах OS 9 это был файл с именем «Mac OS ROM» в папке System. В системах OS X он загружает /System/Library/CoreServices/BootX. BootX — это загрузчик, который затем загружается в ядро.

Макинтош сегодня

Mac использует UEFI для своей системной прошивки.

При запуске Mac первым выполняется код BootROM. При этом устанавливаются драйверы EFI для соответствующих аппаратных устройств, инициализируются некоторые аппаратные интерфейсы, проверяется наличие достаточного объема памяти и выполняется краткая самопроверка при включении питания. В отличие от BIOS ПК, который ничего не знал о файловых системах и мог только читать необработанные блоки диска, UEFI на Mac был расширен для анализа файловых систем FAT (устаревшие DOS/Windows) и HFS+ (родной Mac) на диске. Он считывает GPT (таблицу разделов GUID) для идентификации разделов диска. Загрузочный том по умолчанию хранится в NVRAM.

Вместо указания пути к загрузчику заголовок тома HFS+ (данные в начале файловой системы HFS+) указывает на благословенный файл или благословенный каталог (см. команду bless. Если каталог благословлен, это указывает прошивке EFI искать в этом каталоге загрузчик. Если файл благословлен, это указывает прошивке EFI загружать этот файл в качестве загрузчика (есть дополнительные варианты, такие как загрузка с несмонтированного тома).

По умолчанию загрузчик находится в /System/Library/CoreServices/boot.efi в корневом (часто единственном) разделе диска.

Кроме того, прошивка поддерживает загрузку загрузчика второго уровня или ядра с сетевого сервера (сервера сетевой загрузки).

При загрузке файла boot.efi на экране компьютера отображается металлический логотип Apple. Загрузчик загружает ядро, а также основные расширения драйверов, которые затем запускают launchd, выполняющий различные сценарии и программы запуска. После загрузки ядра под логотипом Apple появляется вращающаяся шестеренка. Когда ядро ​​запускает первый процесс, launchd, экран становится синим.

Описание запуска OS X можно найти в статье Что такое Mac OS X.

Для поддержки загрузки операционных систем на основе BIOS, таких как более старые системы Windows и системы Linux, использующие GRUB или другие загрузчики с поддержкой BIOS, EFI устанавливает компонент «модуль поддержки совместимости» (CSM) из микропрограммы системы. Затем запускается процесс загрузки на основе BIOS. Этот модуль поддержки совместимости загружается только тогда, когда пользователь выбирает Windows в качестве операционной системы по умолчанию для загрузки. Процесс загрузки теперь представляет собой стандартную загрузку на основе BIOS. Основная загрузочная запись (MBR) загружается и выполняется, которая затем находит и загружает загрузочную запись тома раздела Windows (или Linux).

Справочники по загрузке Mac

Ссылки на Mac OS X:

    , Справочная библиотека Mac OS X, Apple Inc. , Справочная библиотека Mac OS X, Apple Inc. , HT2674, Apple Inc. , © 2007 Apple Inc. , Проект rEFIt Sourceforge

Это обновленная версия исходного документа, написанного 14 сентября 2010 г.

© 2003-2015 Пол Кржижановский. Все права защищены.

С вопросами или комментариями по этому сайту обращайтесь к Полу Кржижановски, gro.kp@ofnibew

Все содержимое этого сайта защищено авторским правом в соответствии с национальным и международным законодательством. Никакая часть этого сайта не может быть скопирована, воспроизведена, сохранена в поисковой системе или передана в любой форме или любыми средствами, будь то электронными, механическими или иными, без предварительного письменного согласия владельца авторских прав. Если на этой странице есть что-то, что вы хотите использовать, сообщите мне об этом.

Любые мнения, выраженные на этой странице, не обязательно отражают мнение моих работодателей и могут даже не отражать мое собственное.

Читайте также: