Процесс загрузки операционной системы.




Posted 9th Сентябрь, 2010 by rotonly

Процесс загрузки любой ОС начинается со считывания в память первого сектора жесткого диска, содержащего загрузочный код (Master Boot Record, MBR) и таблицу разделов (Partition Table). Программный код загрузочной записи, просматривает таблицу разделов в поисках загружаемого системного раздела. Найдя такой раздел, MBR загружает в память его первый сектор и исполняет код, содержащийся в нем. Загрузочный сектор раздела (partition boot sector), содержит загрузочный код установленной на данном разделе операционной системы. В системах Win2k/XP этот код находит файл загрузчика ntldr, который всегда находится в корневом каталоге системного диска, загружает его в память и передает управление ему.

NTLDR начинает выполнение c переключения процессора в защищенный режим с использованием 32-разрядной модели памяти с плоской адресацией (после включения питания процессор (CPU) всегда запускается в реальном режиме).
Затем загрузчик считывает расположенный в корневом каталоге системного диска файл Boot.ini и отображает на экране меню (boot loader screen - BLS) для выбора загружаемой ОС. Записи в boot.ini позволяют загрузчику найти дальнейшие компоненты загружаемой системы и определяют нужные параметры начальной загрузки. Пример содержимого boot.ini:

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINNT="MS Windows 2000 Server" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINNT="MS Windows 2000 Professional RUS" /fastdetect

Параметр timeout задает время ожидания выбора загружаемой ОС в секундах, default - определяет, что загружать по умолчанию. В секции [operating systems] - список загружаемых ОС и параметры их загрузки. Пути задаются в ARC-виде (Advanced RISC Computer), где:
multi(0) - номер контроллера HDD. 0 - Primary, 1 - Secondary.
disk(0) - для IDE всегда равен 0, для SCSI - номер логического устройства (LUN)
rdisk(0) - для SCSI всегда равен 0, для IDE - номер физического диска.
partition(1) - номер раздела с установленной OC. Номера разделов начинаются с &quot1"
\WINNT - имя каталога с установленной OC.

Далее - в кавычках указывается строка названия ОС, отображаемая загрузчиком в меню выбора, и ключ по умолчанию - /fastdetect, означающий, что не нужно производить распознавание устройств PnP при начальной загрузке. При определении причины, по которой не грузится ОС, полезно использовать ключи:
/BOOTLOG - записывать протокол загрузки в файл %SytemRoot%\ntbtlog.txt В нашем случае - C:\WINNT\ntbtlog.txt.
Пример журнала [»]
/SOS - выводить в процессе загрузки имена загружаемых драйверов. Выводимая информация по содержанию похожа на ту же, что записывается в ntbtlog.txt. Однако запись в файл журнала может и не сработать, например, при ошибке типа "STOP: 0x0000007B Inaccessible Boot Device".
Начало файла журнала или списка загружаемых модулей по /SOS:
Loaded driver \WINNT\System32\ntoskrnl.exe
Loaded driver \WINNT\System32\hal.dll
Loaded driver \WINNT\System32\BOOTVID.DLL
Loaded driver ACPI.sys
Loaded driver \WINNT\system32\DRIVERS\WMILIB.SYS
Loaded driver pci.sys
Loaded driver isapnp.sys
....
BOOTVID.DLL обеспечивает выдачу информации на экран при возникновении критических ошибок системы, и для русскоязычных систем, делает это не очень хорошо - русский текст в сообщениях выдается в неправильной кодировке и нечитаем. Однако в Интернете можно найти пропатченную BOOTVID.DLL для вашей системы с нормальной кодировкой и заменить ею существующую в \WINNT\System32\ и WINNT\System32\dllcache. Для проверки можно искусственно вызвать "синий экран" (BSOD), убив сервис winlogon, с помощью FAR или PSkill.exe.

Можно добавить в меню загрузки свои строки с желательными параметрами, просто скопировав элемент описания ОС и заменив /fastdetect на нужный вам ключ. Желательно, также отразить этот вариант загрузки в выводимом названии:
multi(0)disk(0)rdisk(0)partition(3)\WINNT="MS Windows 2000 Server-BOOTLOG" /bootlog

Версии загрузчиков Windows 2000 и Windows XP значительно отличаются, в первую очередь, по оптимицации программного кода для увеличения скорости загрузки (Fast Boot в XP), но в остальном они очень похожи.
После выбора ОС, NTLDR загружает в память находящийся в корневом разделе файл ntdetect.com, который собирает информацию о физических устройствах, подключенных на данный момент к компьютеру и возвращает полученную информацию загрузчику NTLDR, после чего загрузчик запускает ядро операционной системы Ntoskrnl.exe и hal.dll из каталога установленной ОС, и передает ему информацию, собранную модулем ntdetect.com. Программный код ядра выполняется в привилегированном режиме процессора и имеет прямой доступ к аппаратной конфигурации, а также, обеспечивает программный интерфейс доступа (HAL.DLL) к аппаратным ресурсам для других программ.
С этого момента на экране появляется графическая заставка с индикатором загрузки.
Ядро создает ключ HKEY_LOCAL_MACHINE\HARDWARE, используя информацию, полученную от загрузчика NTLDR. Этот ключ содержит данные об аппаратных средствах, распознавание которых осуществляется каждый раз при запуске системы. В состав этих данных входит информация об аппаратных компонентах на системной плате и о ресурсах, используемых конкретными аппаратными устройствами.
До этого момента причину, по которой может не загружаться ситема, установить довольно просто - отсутствие или повреждение загрузочных секторов, вышеперечисленных файлов, каталогов или реестра, естественно, при исправном оборудовании. Дальше все значительно сложнее. Начинается загрузка в память и инициализация драйверов и системных служб, информация о которых хранится в разделе реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Каждому драйверу соответствует свой ключ, в составе которого имеется параметр Start, определяющий, на каком этапе загрузки системы производится загрузка и инициализация данного драйвера или службы. Значения Start:
0 - BOOT - драйвер загружается загрузчиком.
1 - SYSTEM - драйвер загружается в процессе инициализации ядра.
2 - AUTO - служба запускается автоматически при загрузке системы.
3 - MANUAL - служба запускается вручную.
4 - DISABLE - отключено.
Сами файлы драйверов хранятся в каталоге %SystemRoot%\system32\drivers.

Сначала загружаются и инициализируются низкоуровневые драйверы устройств, параметр Start у которых равен 0. Для их загрузки используются функции BIOS (естественно, ведь никаких других драйверов в оперативной памяти еще нет.)

Затем загружаются и инициализируются остальные драйверы устройств, параметр Start у которых равен 1. Для их загрузки уже используются ранее загруженные драйверы с параметром Start=0
Имеено на этом этапе чаще всего возникают причины появления "Синих экранов смерти" (Blue Screen Of Death - BSOD), связанные с невозможностью загрузки нужного драйвера или неправильной его работы с оборудованием компьютера, например,
STOP: 0x0000007B Inaccessible Boot Device
Обработка ошибок в процессе инициализации драйверов устройств основана на значении элемента ErrorControl ключа реестра, относящегося к драйверу, и заканчивается "синим экраном" с соответствующим кодом ошибки.

После успешно отработанного данного этапа начальной загрузки запускается "Диспетчер сеансов" (\SystemRoot\System32\smss.exe), задача которого - запустить высокоуровневые подсистемы и сервисы (службы) операционной системы. На этом этапе запускаются процессы CSRSS (Client Server Runtime Process), WINLOGON (Windows Logon), LSASS (LSA shell), и оставшиеся службы с параметром Start=2 из HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Информация, предназначенная для диспетчера сеансов, находится в ключе реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager.
Система загружена и все готово к регистрации пользователя (если система не настроена на автоматическую регистрацию).

 

18. Третье поколение сетевых экранов.

19. Процедура тестирования POST.

20. Классификация ПО.

21 Классификация программного обеспечения

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

Различают системное и прикладное ПО. Схематически программное обеспечение можно представить так:

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

Базовое ПО включает в себя:

· операционные системы;

· оболочки;

· сетевые операционные системы.

Сервисное ПО включает в себя программы (утилиты):

· диагностики;

· антивирусные;

· обслуживания носителей;

· архивирования;

· обслуживания сети.

Прикладное ПО – это комплекс программ для решения задач определённого класса конкретной предметной области. Прикладное ПО работает только при наличии системного ПО.

Прикладные программы называют приложениями. Они включает в себя:

· текстовые процессоры;

· табличные процессоры;

· базы данных;

· интегрированные пакеты;

· системы иллюстративной и деловой графики (графические процессоры);

· экспертные системы;

· обучающие программы;

· программы математических расчетов, моделирования и анализа;

· игры;

· коммуникационные программы.

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

· трансляторы;

· среду разработки программ;

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

· отладчики;

· редакторы связей и др.

 

21. ОС как расширенная машина.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: