Состав и загрузка операционной системы (на примере ос ms-dos). Список загрузки операционных систем

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

Решением данного парадокса является использование специальной маленькой компьютерной программы , называемой начальным загрузчиком , или команд расположенных в постоянной памяти (например на IBM PC - команд перезагрузки без какой бы то ни было помощи). Данное программное обеспечение может обнаруживать устройства, подходящие для загрузки, и загружать со специального раздела самого выбранного устройства (чаще всего загрузочного сектора) данных устройств загрузчик ОС .

Начальные загрузчики должны соответствовать специфическим ограничениям, особенно это касается объёма. Например, на IBM PC загрузчик первого уровня должен помещаться в первых 446 байт главной загрузочной записи , оставив место для 64 байт таблицы разделов и 2 байта для сигнатуры AA55, необходимой для того, чтобы BIOS выявил сам начальный загрузчик.

История

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

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

0: записать в регистр P число 8 1: проверить что устройство считывания с перфолент может начинать считывание 2: если не может, перейти к п. 1 3: прочитать байт с устройства считывания с перфолент и записать его в аккумулятор 4: если перфолента закончилась, перейти к п. 8 5: записать значение, хранимое в аккумуляторе, в оперативную память по адресу, хранящемуся в регистре P 6: увеличить значение регистра P на единицу 7: перейти к п. 1

Данный пример основан на начальном загрузчике одного из миникомпьютеров , выпущенного в 1970-х годах фирмой Nicolet Instrument Corporation.

0: записать в регистр P число 106 1: проверить что устройство считывания с перфолент может начинать считывание 2: если не может, перейти к п. 1 3: прочитать байт с устройства считывания с перфолент и записать его в аккумулятор 4: если перфолента закончилась, перейти к п. 8 5: записать значение, хранимое в аккумуляторе, в оперативную память по адресу, хранящемуся в регистре P 6: уменьшить значение регистра P на единицу 7: перейти к п. 1

Длина загрузчика второго уровня была такой, что последний байт загрузчика изменял команду, расположенную по адресу 6. Таким образом, после выполнения пункта 5 стартовал загрузчик второго уровня. Загрузчик второго уровня ожидал заправки в устройство считывания перфолент длиной перфоленты, содержащей операционную систему. Различием между загрузчиком первого уровня и загрузчиком второго уровня были проверки на ошибки считывания с перфоленты, которые часто встречались в то время, и, в частности, на используемых в данном случае телетайпах ASR-33.

Некоторые операционные системы, наиболее характерными их которых являются старые (до 1995 года) операционные системы компьютеров Apple Computer, настолько тесно связаны с аппаратным обеспечением компьютеров, что на данных компьютерах невозможно загрузить какую либо другую операционную систему. В данных случаях обычно разрабатывается начальный загрузчик, который работает как загрузчик стандартной ОС , а затем передает управление альтернативной операционной системе. Apple использовала данный способ для запуска A/UX версию Unix , а затем он использовался различными бесплатными операционными системами.

Устройства, инициализируемые BIOS

Загрузочное устройство - устройство, которое должно быть проинициализировано до загрузки операционной системы. К ним относятся устройства ввода (клавиатура , мышь), базовое устройство вывода (дисплей), и устройство, с которого будет произведена - дисковод , жесткий диск , флэш-диск, PXE).

Загрузочная последовательность стандартного IBM-совместимого персонального компьютера

Загружается персональный компьютер

Ссылки

Wikimedia Foundation . 2010 .

Смотреть что такое "Загрузка операционной системы" в других словарях:

    Загрузчик операционной системы системное программное обеспечение, обеспечивающее загрузку операционной системы непосредственно после включения компьютера. Загрузчик операционной системы: обеспечивает необходимые средства для диалога с… … Википедия

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

    Для термина «Планировщик задач» см. другие значения. Планирование выполнения задач одна из ключевых концепций в многозадачности и многопроцессорности как в операционных системах общего назначения, так и в операционных системах реального… … Википедия

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

    Доверенная загрузка функция персонального компьютера для воспрепятствования несанкционированному запуску пользователя, загрузке операционной системы (ОС) и получению возможности доступа к конфиденциальной информации. Обеспечение… … Википедия

    Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей … Википедия

    Windows XP стартует в интернет телефон автомате В информатике начальной загрузкой называется сложный и многошаговый процесс запуска компьютера. Загрузочная последовательность это последовательность действий, которые должен выполнить компьютер для … Википедия

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

    Основная и дублирующая микросхемы ПЗУ материнской платы Gigabyte, содержащие BIOS компании AWARD. BIOS (англ. basic input/output system «базо … Википедия

    Prefetcher компонент операционной системы Microsoft Windows, ускоряющий процесс её начальной загрузки, а также сокращающий время запуска программ. Prefetcher впервые появился в операционной системе Windows XP. Начиная с Windows Vista, он… … Википедия

Назначение, описание, установка и настройка известного загрузчика GRUB http://www.сайт/linux/zagruzchik-grub http://www.сайт/@@site-logo/logo.png

Назначение, описание, установка и настройка известного загрузчика GRUB

Что такое загрузчик?

Загрузчик операционной системы – это программа, расположенная в первых секторах жесткого диска (далее просто загрузчик), например в MBR (главная загрузочная запись) жесткого диска. После теста системы, в момент загрузки, BIOS (базовая система ввода-вывода) передает управление MBR, если система настроена для загрузки из неё. Затем программа, расположенная в MBR начинает выполняться. Эта программа называется загрузчиком, её задача - передать управление ядру операционной системы, которое продолжит загрузку.

Существуют несколько загрузчиков, включая загрузчик операционных систем GRUB (универсальный загрузчик), Boot manager, LILO (загрузчик ОС Linux), NTLDR (загрузчик Windows NT систем) и другие. Я решил описать GNU GRUB и как его использовать.

Что такое загрузчик операционных систем GRUB ?

Загрузчик операционных систем GRUB – это очень мощный загрузчик, который может загружать разнообразные операционные системы, такие как Windows, DOS, Linux, GNU Hurd, *BSD и другие. В данное время LILO является самым популярным загрузчиком, используемым почти всеми c мультизагрузочными системами. Но если Вы используете LILO, то не должны забывать перезапускать LILO каждый раз, когда вы меняете конфигурацию или инсталлируете новое ядро. Также LILO не такой гибкий как GRUB. это второе имя гибкости. Его последняя версия– 0.5.96.1. Эта версия поддерживает такие файловые системы, как ext2 (используемая ОС Linux), FAT16 и FAT32 (используемые Win9x и WinME), FFS (быстрая файловая система, используемая *BSD UNIX), ReiserFS (журналируемая файловая система, разработанная для ОС Linux и интегрированная в ядро Linux 2.4.1) и minix (старая файловая система, разработанная для ОС MINIX, используемая также в ранних версиях ОС Linux). С GRUB Вы можете “видеть” содержимое файловой системы без загрузки операционной системы. Например, если Вы хотите посмотреть дату и время, записанные в файле, но не имеете времени для загрузки операционной системы, то можете использовать командную строку GRUB (“grub>”) и написать:

grub> cat (partition number)/home/god/filename.txt

Вы получите полное содержимое файла, включая дату и время.

Самая большая польза загрузчика GRUB в том, что он может загрузить любое ядро из любого раздела диска. Например, если Вы забыли добавить недавно откомпилированное ядро в список, компьютер должен нормально загрузиться, добавить его в список и перезагрузиться, чтобы его использовать. Но Вы можете легко использовать командную строку загрузчика GRUB и загрузить нужное ядро.

Сейчас я объясню три главных шага для использования GRUB: компиляция, инсталляция и конфигурация.

Шаг 1 : Компиляция и инсталляция программного пакета загрузчика GRUB

Загрузите исходные тексты

GRUB с ftp://alpha.gnu.org/pub/gnu/grub

Распакуйте архив командой

“tar -xvzf filename.tar.gz”. В моем случае имя файла было grub-0.5.96.1.tar.gz и я сделал:

# tar -xvzf grub-0.5.96.1.tar.gz

Эта команда извлекла из архива файлы и папки в папку с именем

“grub-0.5.96.1”. Теперь делайте следующее:

# ./configure

Если Вы хотите изменить некоторые настройки компиляции

Например, добавить или удалить поддержку индивидуальных файловых систем, сетевых карточек, наберите:

# ./configure --help

Эта команда выведет на экран все возможные опции

Теперь используйте –enable и -disable префиксы для добавления или удаления поддержки некоторых устройств и т.п. ПРИМЕЧАНИЕ: GRUB поддерживает сетевую загрузку.)

Для начала процесса компиляции, наберите:

# make

Для инсталляции всех файлов наберите:

# make install

Вы установили программный пакет GRUB, теперь можно приступать к установке загрузчика GRUB в загрузочный сектор.

Хорошей идеей является хранить все файлы загрузчика, относящиеся к загрузке в директории /boot/grub. Для того, чтобы сделать это, следуйте следующему примеру: По умолчанию все файлы загрузчика проинсталлированы в /use/share/i386-pc или в /use/local/share/grub/i386-pc в зависимости от того, как определены переменные среды. Создайте каталог /boot/grub. Затем скопируйте следующие файлы в папку:

Я опишу эти файлы позже. Также скопируйте программу GRUB (которая может находиться в каталоге /usr/sbin или в /use/local/sbin) в папку /boot/grub.

Перед тем, как инсталлировать GRUB, Вы должны знать о том, как GRUB воспринимает жесткий диск и информацию о разделах. Прежде всего, отсчет начинается с 0, а не с 1. В Linux первый жесткий диск, прикрепленный к основному контроллеру, называется “hda”, а в GRUB он называется “hd0”. Подобно этому, дисковод в GRUB называется “fd0”. Итак, первый, второй и третий раздел на первом жестком диске (hda1, hda2, hda3) называются “hd0,0”, “hd0,1” и “hd0,2” в GRUB. ПРИМЕЧАНИЕ: запятая – это неотъемлемая часть названия раздела жесткого диска в GRUB.

Для описания двух полей (диск и номер диска, номер раздела диска) используйте круглые скобки. Например: (hd0,0) (hd0,1) (hd0,2) и так далее. (hd0,0) – это первый раздел первого диска. Подобным образом, (hd1,5) – это шестой раздел второго диска, а (hd2,0) – первый раздел третьего диска.

Шаг 2 : Инсталляция загрузчика операционных систем GRUB

Инсталляцию непосредственно загрузчика можно разделить на три этапа

: Инсталляция "stage1" в MBR. Настройка адреса или расположения, "stage2". Настройка меню загрузки или набора опций для выбора операционной системы для загрузки.

Начните инсталляцию со следующих команд:

# ./grub

Эта команда опрашивает устройства и выводит сообщения. Это может занять много времени.

end_request: I/O error, dev 02:00 (floppy), sector 0

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

ПРИМЕЧАНИЕ: GRUB имеет минимальную оболочку, похожую на bash. Для первого слова TAB выводит все возможные завершения команды. В других случаях TAB выводит возможные завершения названий устройств, имен файлов. Вы можете быть удивлены этой возможностью. Нечто вроде этого может произойти:

grub> install (hd0,4)/boot/grub/stage1 (hd0) (hd0,4)/boot/grub/stage2 p (hd0,4)/boot/grub/menu.conf

Теперь давайте рассмотрим эту команду более детально:

встроенная команда, заставляющая GRUB проинсталлировать (hd0,4)/boot/grub/grub/stage1 to (hd0), MBR.

(hd0,4)/boot/grub/stage2

указывает, где расположен stage2 образ. со следующими опциями: (hd0,4)/boot/grub/menu.conf

устанавливает конфигурационный файл для отображения нужного меню. Позже я объясню структуру конфигурационного файла.

Мы можем суммировать команды:

Теперь у Вас есть элементарная инсталляция.

Инсталляция на дискету:

Для инсталляции GRUB на дискету Вы должны знать команду “dd” и как она работает. Для загрузочной GRUB дискеты Вы должны записать stage1 и stage2 файлы на первые секторы дискеты.

Инсталляция stage1 на дискету

Вставьте форматированную дискету и наберите:

# dd if=stage1 of=/dev/fd0 bs=512 count=1

Опять рассмотрим команду детальнее:

в нашем случае stage1

например, дисковод (может быть отличным от приведенного в примере устройства на вашем компьютере)

bs=bytes to read and write

В нашем случае

count=how many times to perform this operation

количество копий.

Инсталляция stage2 на дискету

[root@heaven /boot/grub ]# dd if=stage2 of=/dev/fd0 bs=512 seek=1

Здесь все, так же как и для stage1, за исключением нового параметра, называемого seek. Этот параметр заставляет пропустить одно "bs" значение. Например, в выше описанной команде bs – это 512 байт, тогда seek=1 будет означать пропуск первых 512 байт на дискете и продолжение записи с 513-го байта. Это сохранит результат первой команды, записанные данные не будут повреждены переписыванием.

Теперь у Вас есть простейшая инсталляция GRUB загрузчика на дискете.

Шаг 3 : Конфигурация загрузчика операционых систем GRUB

В этой секции мы рассмотрим, как загружать разные операционные системы и составить menu.conf - конфигурационный файл меню.

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

1) Передача управления ядру ОC

2) Передача управления другому загрузчику: Указать корневое устройство или корневую файловую систему. Указать GRUB место нахождения ядра системы и параметры. Перезагрузить компьютер и испробовать это.

У меня ядро Linux находится в каталоге /boot под названием bzImage, а корневая файловая система - /dev/hda5 или (hd0,4) в GRUB. Следовательно, моя процедура загрузки выглядит следующим образом: [ Указывает корневой раздел]

2. kernel /boot/bzImage root=/dev/hda5 Указывает ядро]

[ Указывает ядро]

3. boot Начинает загрузку Linux]

[ Начинает загрузку Linux]

Загрузочная процедура по второму методу подразумевает наличие другого загрузчика, например LILO или NTLDR, установленного в один из разделов жесткого диска: Указать корневой раздел, но не монтировать его. Активировать раздел 3.

Указать первый сектор устройства, которому будет передано управление. Перезагрузить компьютер и испробовать это.

Приведу пример с ОС Windows, проинсталлированной в /dev/hda1 или (hd0,0). процедура загрузки Windows следующая: [+1 указывает первый сектор текущего основного раздела]

4. boot передает контроль]

[ передает контроль]

файл используется для загрузки различных операционных систем и конфигурации меню. Составить menu.conf файл не сложно. Как Вы увидите в этом разделе, в нем используется текст на английском языке.

Все записи меню начитаются с "title TITLENAME" без запятых. Вы можете присвоить TITLENAME что угодно.

Для создания меню загрузки Linux: Установите title. Установите корневой раздел. Установите ядро и параметры. Загрузитесь.

Для создания работающего меню:

title Debian GNU/Linux 2.2 kernel 2.4.1

kernel /boot/bzImage.2.4.1

(Символ (#) в начале строки обозначает комментарий.)

Чтобы создать меню для

Windows или DOS:

rootnoverify (hd0,0)

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

Существует легкий путь инсталляции двух экземпляров ОС на Ваш компьютер путем скрытия одного из разделов жесткого диска в момент загрузки и использования другого. При этом Вы можете защитить раздел паролем, так что никто не сможет использовать его по ошибке. Ниже приведен пример, как создать несколько экземпляров ОС Windows, hda1 и hda2 или (hd0,0) и (hd0,1), используя команды lock, password, hide и unhide.

Для ОС Windows "My Entry":

rootnoverify (hd0,0)

Для эффективного использования команды lock Вы должны указать команду password в начале конфигурационного файла. Синтаксис команды password следующий: password secret ("secret" – это пароль). Вы можете ввести пароль в любое время с помощью нажатия клавиши p.

Для ОС Windows "Family Entry":

title Family Entry

rootnoverify (hd0,1)

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

Существует ещё один интересный трюк с использованием команды

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

/boot/grub/secret-list.conf

В этой команде "secret" – это пароль, а /boot/grub/secret-list.conf – это файл паролей. Перед тем, как делать это, Вы должны установить корневой раздел и полный путь. Например:

Ещё одной важной командой является команда "map", которую Вы можете использовать, когда у Вас есть два жестких диска и операционная система, которая не может загружаться со второго диска, например ОС Windows. Вы можете отобразить hd0 как hd1 и hd1 как hd0. Другими словами, можно виртуально переставлять жесткие диски. Пример:

grub> map (hd0) (hd1)

grub> map (hd1) (hd0)

Для загрузки ОС FreeBSD:

title FreeBSD 4.0

kernel /boot/loader

Здесь мы передаем управление загрузчику ОС FreeBSD. Вы видите, что корневой раздел (hd0,4,a) включает три аргумента, это потому, что FreeBSD виртуально делит существующий раздел жесткого диска. Мы передаем управление корневому подразделу раздела жесткого диска “a”. Если FreeBSD полностью занимает диск вашей системы, тогда корневой подраздел будет называться (hd0,a). Итак, мы передаем управление загрузчику FreeBSD, что намного лучше, чем передать управление непосредственно ядру этой ОС по ряду причин.

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

Различные команды GRUB:

xx – это метка для загрузки по умолчанию.

yy – это таймаут, после которого GRUB начнет загрузку по умолчанию.

zz – это метка для загрузки, которую GRUB станет загружать, если по истечении таймаута не удастся загрузить метку по умолчанию.

Используется для раскраски меню. Синтаксис следующий: color normal current_selection. Оба поля могут иметь два значения, такие как приоритетный и фоновый цвета. Например:

color green/black or light-gray/blue

Вы также можете использовать соответствующие номера.

ЗАПОМНИТЕ: все значения начинаются с 0, следовательно, 0 – первый элемент.

Операции с документом

А вы никогда не задумывались над тем, что же происходит с операционной системой в тот момент, когда она рисует свой логотип и говорит «Starting Windows»? И вообще, почему она долго загружается? Ведь при старте системы уж точно не решаются никакие задачи, сложные с вычислительной точки зрения!

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

Давайте интереса ради разберемся, какие модули, в каком количестве и в каком порядке загружаются при старте ОС. Чтобы выяснить это, можно, например, получить лог загрузки системы. Подопытная ОС в моем случае - Windows 7 Enterprise x64. Логировать процесс загрузки будем при помощи отладчика ядра. Существует несколько вариантов отладчиков ядра, лично я предпочитаю WinDbg. Также нам понадобятся некоторые вспомогательные средства для волшебного превращения лога в нечто более приятное глазу.

Mining and crafting

Настройка отладки хорошо гуглится, поэтому описывать подробно этот процесс я не буду. Поскольку нас интересует все происходящее с момента старта системы, нам нужно отметить пункт «Cycle Initial Break», с помощью чего отладчик остановится, как только в отлаживаемой системе будет загружена подсистема отладки ядра. Дублирование вывода в файл можно осуществить при помощи команд ".logopen" и ".logclose", это просто. Другая полезная команда - ".cls". Она очищает экран команд, и да, только экран команд.

Интересующая нас функция - «MiCreateImageFileMap». Это внутренняя функция менеджера памяти, проецирующая исполняемый файл в память. Проецирование в память происходит при создании секции, например, при запуске исполняемого файла. Однако учтите, что если исполняемый файл проецируется в память, это не гарантия того, что будет выполнен его код! Эта функция просто создает проекцию, чаще всего «про запас», чтобы, если кто-то надумает запустить модуль на исполнение, можно было сэкономить время его загрузки. На эту функцию поставим логирующую точку останова.

Если у вас достаточно маны, вводите следующую команду:
bu nt!MiCreateImageFileMap "dt nt!_EPROCESS -d ImageFileName @$proc; dt nt!_FILE_OBJECT -d FileName @rcx; g"
Магическая строчка буквально означает следующее:

  • bu (Set Unresolved Breakpoint) - установить неразрешенную точку останова. Не то чтобы кто-то или что-то не разрешал, просто для ее установки необходимо определиться, по какому адресу ее ставить. Дело в том, что заранее не известно, по какому адресу она должна располагаться. При загрузке любого модуля проверяется присутствие в нем необходимой функции, и если такая функция найдена, точка останова устанавливается автоматически. Такой способ установки незаменим при включенном ASLR - рандомизации адресного пространства, поскольку модули будут загружаться каждый раз по разным адресам, и точка останова, установленная по фиксированному адресу, с большой вероятностью окажется не у дел.
  • nt!MiCreateImageFileMap - символ, на котором нужно останавливаться. В WinDbg принята запись в форме "module_name!function_name". В данном случае nt является предопределенным псевдонимом для ntoskrnl.exe.
  • далее следует часть WinDbg-скрипта, которая будет выполняться каждый раз при остановке на этой функции. «dt nt!_EPROCESS -d ImageFileName @$proc» по-русски означает «отобразить поле ImageFileName структуры _EPROCESS из модуля nt при условии ее отображения по адресу, определенному в псевдорегистре «текущий процесс»». Следующая после разделителя ";" команда означает примерно то же самое, только адрес структуры берется из регистра rcx, в котором в Microsoft x64 ABI передается первый параметр функции. «g» означает «go», т.е. продолжить исполнение.

Небольшая рекомендация по использованию логирующих точек останова: старайтесь не использовать расширения отладчика (команды, начинающиеся с "!"), поскольку в таком случае логирование будет выполняться на порядок медленнее.

Поехали! Отжимаем тормоз точки останова и ждем. Я ждал, пока не прогрузится рабочий стол, т.е. я залогинился. Полученный «урожай» немного редактируется, обрезается все лишнее для удобства дальнейшей обработки и скармливается дружище питону. Не будем заострять внимание на парсинге лога. Отметим только, что граф укладывался в форму спирали Архимеда с дальнейшей коррекцией вручную, поскольку происходило наложение узлов друг на друга. В полученном графе учитывается порядок загрузки библиотек. К сожалению, пришлось пожертвовать учетом порядка загрузки исполняемых файлов относительно библиотек в угоду удобочитаемости графа.

Карта звездного неба


Условно выделим несколько групп загрузки.

Начинается работа OC в модуле ntoskrnl.exe, являющимся ядром ОС. А если еще конкретнее - с функции KiSystemStartup(). Вместе с загружаемыми системными компонентами она формирует фундамент ОС: разделение режимов работы, базовые сервисы для пользовательских приложений и т.п. В эту же группу входят драйверы, отмеченные для загрузки во время старта системы. В двух словах, в этой ракушке зарождается ОС Windows.

Следующий узел - менеджер сессий (session manager). Его представляет первый после системного процесс, стартующий в Windows - smss.exe. Процесс примечателен тем, что является родным (native) процессом Windows, то есть он не использует подсистему Win32, которая в общем-то еще не загружена. Этот процесс использует только нативные сервисы операционной системы посредством ntdll.dll, представляющей собой интерфейс режима пользователя для сервисов ОС. Также этот процесс является доверенным компонентом операционной системы и обладает исключительными правами, например, он может создавать маркеры безопасности (security tokens). Но главное его предназначение - создание сеансов и инициализация подсистем, как графической, так и различных исполняемых (Windows, POSIX). Эта ракушка воздает каждому по потребностям.

Группа входа в систему (logon) состоит из нескольких процессов. В целом они отвечают за инициализацию сеансов. Это включает в себя отображение экрана приветствия, создание рабочих столов, запуск процессов автозагрузки и инициализацию подсистемы безопасности и т.п. Этот веник отметает всех посторонних.

Самой массивной оказалась группа сервисов. Во многом она обязана своим объемом службе SuperFetch. Эта та самая, про которую говорят, что она по выходным заранее прогружает офисный пакет, а в начале рабочей недели - Steam с игрушками. Superfetch прогружает огромное количество модулей при старте системы, чтобы потом «все быстрее работало». Да и кроме него в системе хватает сервисных приложений и автозапускающихся драйверов. Думаю, все видели оснастку «Службы и приложения». Эта звезда жизни заводит в системе все, что нужно и не очень.

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

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

Лично я держу получившуюся картинку под боком. По ней хорошо прослеживаются зависимости, например, драйверов. Также в паре с утилитой Sysinternals Autoruns можно увидеть, на каком этапе загрузки подтягиваются те или иные модули.

Граф загрузки был построен для ОС Windows 7 Enterprise x64, установленной на виртуальной машине VMware. Ниже приведены векторное изображение графа и непосредственно файл в формате gml, с которым можно поиграться в любом редакторе графов.

Д лительное время бегать из одной операционной системы в другую, если их установлено на компьютере две, не получится. После тщательного изучения обоих, рано или поздно придётся выбрать только одну из них – основную , с которой работа будет проводиться преимущественно. Если по большей части используется только одна система Windows, иные её версии или редакции, размещённые на других разделах диска, не обязательно удалять. Конечно же, при условии, что пространство жёсткого диска не стеснено в размерах.


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

Как отредактировать процесс загрузки нескольких операционных систем Windows, установленных на одном компьютере – об этом подробнее ниже.

Итак, имеем в нашем случае компьютер с установленными версиями Windows 7 и 8.1. При включении компьютера видим окно загрузчика с перечнем систем для выбора.

Каждый раз при загрузке компьютера попасть в нужную систему можно, сделав соответствующий выбор. В противном случае по истечении определённого времени – а по умолчанию это 30 секунд – автоматически будет загружена Windows, стоящая в списке первой. В нашем случае это Windows 7 , поскольку она установлена на компьютер последней, и именно её загрузчик, как видим, встречает нас после запуска компьютера.

Что же, изменим это. Настроим автоматическую загрузку основной системы – Windows 8.1. Для этого, естественно, необходимо войти в неё.

Нам нужен раздел настроек , и в Windows 8.1 в него можно попасть с помощью контекстного меню на кнопке .

В окошке системы выбираем дополнительные параметры .

Попасть в раздел настроек в Windows 7 можно также с помощью контекстного меню, но вызванном на значке «Компьютер» в проводнике. В числе команд необходимо выбрать .

В Windows 7 также выбираем дополнительные параметры .

Дальнейшие шаги в обоих системах идентичны.

В появившемся окне свойств системы во вкладке «Дополнительно» жмём кнопку параметров в последнем разделе .

Теперь можно приступать к редактированию загрузки нескольких систем. Меняем загружаемую по умолчанию Windows из числа вариантов в выпадающем списке. В нашем случае предустановленную Windows 7 меняем на Windows 8.1.

Как упоминалось, по умолчанию загрузчик Windows ждёт полминуты , чтобы пользователь мог осуществить выбор операционной системы.

Если преимущественно работа проводится только в одной системе , нет смысла оставлять полминуты ожидания её автоматической загрузки. Другую операционную систему можно не лишать возможности запуска, но сократить предустановленное время для выбора вариантов загрузки. В отображении списка загружаемых систем в нашем случае установим 5-секундное ожидание перед автоматической загрузкой основной системы Windows 8.1. Этого времени хватит с лихвой, чтобы осуществить выбор, если вдруг когда-то понадобится войти в Windows 7.

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

Если вторая операционная система когда-то понадобится, войти в неё можно будет, сделав эту опцию снова активной .

После внесения изменений жмём «Ок» внизу этого окна, а также внизу окна свойств системы.

Всё – список загрузки операционных систем отредактирован.

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

Н есуществующую операционную систему лучше вообще удалить из вариантов загрузки, чтобы она не затягивала процесс запуска основной Windows.

В основной системе вызываем команду . В Windows 8.1 быстрый доступ к ней реализован в контекстном меню на кнопке .

Нам нужен раздел конфигурации системы . Вводим в поле команды значение:

Жмём «Ок» .

В Windows 7 запустить окно конфигурации системы можно проще — прописав ключевой запрос в поисковом поле меню .

Появится окно конфигурации системы, переходим на вкладку . Выбираем запись о загрузке несуществующей системы и удаляем её .

В нашем случае перечень загрузки содержал разные версии Windows, и определиться с удаляемой «Семёркой» нам явно не составило труда. Но если в перечне загрузки числятся записи о двух одинаковых версиях Windows, в ориентации с той, которую нужно удалить, помогут описания систем. Windows, в которой мы по факту находимся, будет обозначена как текущая .

Внесённые изменения сохраняем кнопкой . После нажатия «Ок» система предложит перезагрузиться .

После перезапуска компьютера можем наблюдать незамедлительную автозагрузку основной системы.

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

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

    Загрузчик операционной системы;

    Системные файлы IO.SYS и MSDOS.SYS ;

    Драйверы устройств.

    Командный процессор MS DOS (файл COMMAND.COM);

    Внешние команды MS DOS .

Кроме того, MS-DOS, как и все другие операционные системы для IBM PC , использует встроенное программное обеспечение компьютера, именуемое Базовой Системой Ввода-Вывода (BIOS).

Рассмотрим указанные программные модули в том порядке, в каком они загружаются в оперативную память после включения ПК.

Базовая система ввода-вывода - это самый низкий уровень управления, своего рода интерфейс между аппаратными средствами компьютера и программами. BIOS управляет непосредственно аппаратурой компьютера и избавляет другие программы от знания деталей того, как это делается. Программы BIOS записываются в ПЗУ компьютера фирмой-производителем и осуществляют:

    самотестирование компьютера при его включении (программа POST);

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

    выполнение обслуживающих функций и обработку аппаратных прерываний;

    загрузку операционной системы, записанной на магнитном диске (программа BOOT).

Сразу после включения компьютера начинает работать программа POST, проверяя работоспособность оперативной памяти и других компонентов компьютера. Затем BIOS производит инициализацию и пытается считать с диска в дисководе А: программу-загрузчик операционной системы, чтобы передать ей управление и продолжить процесс загрузки DOS. При отсутствии необходимых файлов или самого гибкого диска поиск продолжается на жестких дисках С:, D:, Е: и т.д. Если загрузочный (или, иными словами, системный) диск не найден, сообщение об этом выдается на монитор.

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

Загрузчик операционной системы - это очень короткая программа, находящаяся в первом секторе каждой дискеты и жесткого диска (винчестера) с операционной системой MS DOS. Функция этой программы заключается в считывании с загрузочного диска в оперативную память системных файлов DOS.

Системный файл IO.SYS - это расширение BIOS. Этот модуль настраивает операционную систему на конкретную конфигурацию вычислительного комплекса и позволяет подключать новые драйверы к нестандартным устройствам ввода-вывода,

Системный файл MSDOS.SYS - модуль обработки прерываний. В основном он обслуживает файловую систему и распоряжается распределением оперативной памяти.

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

При успешной загрузке системных файлов программный модуль IO.SYS устанавливает требуемую конфигурацию вычислительной системы. С этой целью он помещает в оперативную память компьютера драйверы внешних устройств.

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

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

Файлы с расширением.ВАТ играют при работе в системной среде особую роль. Они содержат совокупность ко­манд операционной системы или имен исполняемых файлов. После запуска файла с расширением.ВАТ все записанные в нем команды выполняются автоматически одна за другой.

Если файл AUTOEXEC.BAT не найден в корневом каталоге диска, с которого загружается операционная система, то MS DOS запрашивает у пользователя текущую дату и время.

После выполнения файла AUTOEXEC.BAT процесс загрузки операционной системы заканчивается. Командный процессор выдает приглашение, показывающее, что MS-DOS готова к приему команд. Приглашение обычно имеет вид А:\> или, например,С:\>, если загрузка производилась с жесткого диска.