- •Глава 4. Основы unix. 4.5 Организация дисков. Http://www.Freebsd.Org/doc/ru/books/handbook/disk-organization.Html#basics-dev-codes
- •Включение компьютера, post, BootMonitor (нулевой этап загрузки).
- •Загрузчик первого уровня.Mbr.
- •Загрузчик 2-го уровня. Partition Boot Sector
- •Начальный этап загрузки операционной системы. Менеджер загрузки ос
- •Загрузка ядра операционной системы
- •Диски, слайсы, разделы.
- •Менеджер загрузки и этапы загрузки.
Загрузчик 2-го уровня. Partition Boot Sector
Следующим этапом загрузки компьютера является передача управления исполняемому коду, записанному в PBS (Partition Boot Sector — загрузочный сектор активного раздела). PBS расположен в первом секторе (секторах) соответствующего раздела диска. В коде PBS прописано имя файла загрузчика операционной системы, которому и передается управление на этом этапе.
Начальный этап загрузки операционной системы. Менеджер загрузки ос
Любая ОС состоит из двух частей:
Загрузчик |
Ядро и программы |
Они независимы и могут быть расположены как в одном разделе, так и на разных разделах и даже на разных дисках. Загрузчик всегда автоматически устанавливается в активный раздел активного диска (к Linux ОС это не относится, у них загрузчик и ядро может быть на любом разделе), система (ядро и программы) устанавливается в раздел, который мы указываем установщику ОС. Т.е. если указать установщику поставить ОС на активный раздел активного диска, то загрузчик и система встанут в один раздел. Так обычно и происходит, если у нас один диск и одна ОС. Для Windows 2000/XP/Server 2003 загрузчиком является ntldr, для Windows 7/Vista/Server 2008 bootmgr, для Linux в основном применяют GRUB, для MAC OS X BootX, для Мхакинтоша MAC OS X Boot-132 или Chameleon.
Загрузка ядра операционной системы
Ядро операционной системы имеет сложную структуру и, следовательно, непростой способ загрузки. Ядро может быть большим и может располагаться в любом месте диска, подчиняясь законам файловой системы (например, состоять из нескольких частей, разбросанных по диску).
Вопрос № 2 «Загрузка операционной системы Linux»
Начальным загрузчиком, который определяет активный раздел диска и загружает в память ядро, в Linux являются LILO (сокращенно от Linux Loader) и GRUB(GRand Unified Bootloader). Загрузчик GRUB - является более новым загрузчиком с большими возможностями и используется в большинстве современных дистрибутивов. LILO, который долгое время был стандартом, потихоньку сдает позиции, уступая место более современному GRUB. Основное преимущество GRUB в том, что он умеет обращаться к файловой системе Linux.
Задача загрузчика загрузить в память ядро операционной системы и передать ему управление. Ядро Linux расположено в файле /boot/vmlinuz-2.6.24, где цифры обозначают номер (версию) ядра. Размер файла колеблется примерно от 400 Кб до 2 Мб. Ядро на диске находится в сжатом виде, поэтому происходит процедура распаковки ядра и уже потом, оно записывается в область оперативной памяти, которая недоступна пользовательским процессам. Ядро после того как записано в память берет управление в “свои руки” и проводит повторную инициализацию оборудования. Дело в том, что Linux в своей работе не использует функции БИОС, а “общается” с железом напрямую. Windows умеет работать с железом через функции БИОС.
Рассмотрим пример. На современных материнских платах есть возможность создавать рейды. Например, объединить два жестких диска в рейд 1 (зеркало). Это реализуется с помощью БИОС. Windows будет работать с таким рейдом, так как умеет обращаться к БИОС. Linux, тоже сможет обращаться с рейдом, но только если поддержка такого рейда будет реализована в ядре.
Загрузчик может передавать ядру некоторые параметры, которые влияют на загрузку системы. Например, если передать ядру параметр single, то Linux загрузится в однопользовательском режиме (можно грубо сравнить с безопасным режимом Windows XP). Параметры, передаваемые ядру, прописаны в конфигурационном файле. Для GRUB это файл /boot/grub/menu.lst.
Дальше ядро загружает несколько системных процессов: менеджер памяти и менеджер процессов. И только потом загружается первый пользовательский процесс - init. Процесс init является основным (родительским) процессом с идентификатором 1. Это первый процесс, к которому имеет доступ системный администратор. Система Linux работает до тех пор, пока “жив” процесс init. Получив управление, init выполняет алгоритм, описанный в конфигурационном файле /etc/inittab. В результате работы init запускаются скрипты собранные в директории /etc/init.d/.
Далее запускаются процессы, которые позволяют зарегистрироваться в системе. Эти процессы называются getty (сокращение от get teletype). Каждый процесс getty связывается с виртуальной (и не только виртуальной) консолью, которая отображается при помощи видеоадаптера и позволяет пользователю работать с этой консолью после того как пользователь зарегистрируется в системе. Это так называемый текстовый или алфавитно-цифровой режим работы с системой. Таких процессов запускается по умолчанию шесть штук.
Параллельно загружается служба - X Server для работы в графическом режиме. Кроме X Server в графическом режиме запускается программа, которая называется дисплей-менеджер. Наиболее популярные дисплей-менеджеры это xdm, gdm, kdm. Основная задача этих программ это регистрация пользователя в системе, только уже в графическом режиме.
Когда мы видим на экране приглашение в текстовом или графическом режиме, можно считать, что система уже почти загрузилась. Далее нужно ввести имя пользователя и пароль. В текстовом режиме при вводе пароля информация не отображается на экране (то есть, нет ни “звездочек” ни кружочков). Когда вы прошли регистрацию в текстовом режиме загружается так называемая программа-оболочка (shell), в которой пользователи и работают далее.
Вопрос № 2 «Загрузка операционной системы Windows 8»
Немногие операции в Windows исследуются, измеряются и обсуждаются так тщательно, как загрузка. Это вполне понятно — время загрузки представляет эффективный показатель общей производительности системы. Данные исследований показывают, что 57% пользователей настольных ПК и 45 % пользователей ноутбуков завершают работу компьютеров, а не переводят их в спящий режим. То есть примерно половина всех пользователей завершают работу компьютеров, а не переводят их в спящий режим.
В качественном отношении пользователи говорят, что предпочитают завершение работы, так как хотят полностью выключить компьютер, чтобы он не потреблял энергию (для экономии заряда аккумулятора или сокращения расхода электроэнергии).
Гибернация — также неплохой вариант с этой точки зрения, так как электроэнергия при этом почти не используется, и многие пользователи предпочитают гибернацию.
Гибернация (англ. Hibernation — «зимняя спячка») — энергосберегающий режим операционной системы компьютера, позволяющий сохранять содержимое оперативной памяти на энергонезависимое устройство хранения данных перед выключением. При активировании данного режима содержимое оперативной памяти записывается на энергонезависимое устройство (жёсткий диск), а компьютер выключается полностью (в отличие от ждущего режима). При включении содержимое памяти восстанавливается (загружается с диска в память), и пользователь может продолжить работу с того же места, на котором он остановился (остаются запущенные приложения, несохранённые документы и тп.).
Многие пользователи хотят включать компьютер и видеть «чистый лист», а не систему с открытыми приложениями и документами из предыдущего сеанса. Спящий режим и возобновление работы — это лучший вариант для быстрого включения и выключения компьютеров, но он потребляет электроэнергию для сохранения содержимого оперативной памяти, что приводит к разрядке аккумулятора, пусть даже и медленной (в правильно настроенной системе).
Компания Microsoft поставила перед собой задачу - придумать решение, удовлетворяющее всем этим пожеланиям для современных компьютеров без использования дополнительного оборудования.
Поставленные цели:
нулевое потребление энергии при отключении;
новый сеанс после загрузки;
очень короткое время между нажатием кнопки питания и готовностью компьютера к использованию.
В Windows 7 внесено много улучшений в способ загрузки, в том числе параллельную инициализацию драйверов устройств и службы, запускаемые определенными событиями.
Решение - новый быстрый режим запуска, представляющий собой гибрид традиционной «холодной» загрузки и возобновления работы после гибернации.
Вспомним, как реализовано завершение работы и загрузка в Windows 7.
Процедура завершения работы:
Пользователь инициирует завершение работы, выбирая параметр «Выключить компьютер» в меню «Пуск» или нажимая кнопку питания, либо приложение инициирует завершение работы, вызывая функцию интерфейса API, например ExitWindowsEx() или InitiateShutdown().
Windows транслирует сообщения запущенным приложениям, позволяя им сохранить данные и настройки. Приложения также могут запросить немного дополнительного времени на завершение своей работы.
Windows закрывает сеансы каждого пользователя, вошедшего в систему.
Windows отправляет сообщения службам, уведомляя их о начале завершения работы, а затем останавливает их. Упорядоченные службы с зависимостями отключаются последовательно, а остальные — параллельно. Если служба не отвечает, ее работа завершается принудительно.
Windows передает сообщения устройствам, информируя их о необходимости завершения работы.
Windows закрывает системный сеанс (который также называют «сеансом 0»).
Windows записывает все данные, ожидающие записи, на системный диск, чтобы обеспечить их полное сохранение.
Windows передает сигнал через интерфейс ACPI системе для отключения компьютера.
Процедура загрузки:
После нажатия кнопки включения питания микропрограммное обеспечение компьютера запускает тест POST и загружает настройки. Этот предварительный процесс завершается после обнаружения допустимого системного диска.
Микропрограммное обеспечение считывает основную загрузочную запись (MBR) и запускает программу Bootmgr.exe. Bootmgr.exe находит и запускает загрузчик Windows (Winload.exe) в загрузочном разделе Windows.
Загружаются драйверы, необходимые для запуска ядра Windows, после чего начинает работать ядро, загружая в память куст системного реестра и дополнительные драйверы, отмеченные как BOOT_START.
Ядро передает управление процессу диспетчера сеансов (Smss.exe), который инициализирует системный сеанс, загружает и запускает устройства и драйверы, не отмеченные как BOOT_START.
Запускается Winlogon.exe, отображается экран входа пользователя в систему, диспетчер управления службами запускает службы, и выполняются заданные сценарии групповой политики. Когда пользователь входит в систему, Windows создает сеанс для этого пользователя.
Запускается Explorer.exe, система создает процесс диспетчера окон рабочего стола (DWM), который инициализирует рабочий стол и отображает его.
На самом деле этот процесс намного более детальный; дополнительные сведения доступны здесь: http://msdn.microsoft.com/en-us/windows/hardware/gg463386
Главное — помнить, что при традиционном завершении работы мы закрываем все пользовательские сеансы, а в сеансе ядра мы закрываем службы и устройства для подготовки к полному выключению.
Основное отличие Windows 8: как и в Windows 7, мы закрываем пользовательские сеансы, но вместо того чтобы закрывать сеанс ядра, мы переводим его в режим гибернации. По сравнению с полной гибернацией, при которой сохраняется множество страниц памяти, используемых приложениями, объем данных гибернации сеанса 0 намного меньше, и они значительно быстрее записываются на диск. Если вы не знакомы с гибернацией, то в двух словах — система сохраняет свое состояние и содержимое памяти в файле на диске (hiberfil.sys), а затем читает его при возобновлении работы и восстанавливает содержимое памяти. Такой метод значительно сокращает время загрузки, так как чтение файла гибернации и повторная инициализация драйверов происходят значительно быстрее в большинстве систем (на 30-70 % быстрее в большинстве протестированных нами систем).
Пример
результатов тестирования от System
Integration.
Загрузка происходит быстрее, так как гибернация системного сеанса занимает значительно меньше времени, чем полная инициализация системы. Загрузка также осуществляется быстрее, потому что мы добавили новую возможность многоэтапного возобновления работы, которая позволяет использовать все ядра многоядерной системы параллельно для распределения чтения файла гибернации и восстановления содержимого памяти. К сведению тех, кто предпочитает гибернацию: такой метод также позволяет ускорить возобновление работы и при использовании гибернации.
Представление
разных этапов «холодной» и быстрой
загрузки.
Возможно, следует упомянуть о том, как обрабатывается файл гибернации (если вы сейчас читаете эту статью и выполните команду dir /s /ah hiberfile.sys, вы узнаете, как много места на диске он занимает). По умолчанию размер файла гибернации составляет 75 % от объема физической оперативной памяти. Этот файл по сути резервирует место для данных гибернации, которые будут записаны при переходе системы в режим гибернации. Обычно используется намного меньше места на диске, а при использовании нашей быстрой загрузки размер файла обычно составляет около 10-15% от объема физической оперативной памяти, но это зависит от установленных драйверов, используемых служб и других факторов.
Вопрос № 4 «FreeBSD»
