- •С. Ф. Храпский операционные системы, среды и оболочки основные теоретические сведения
- •Оглавление
- •Предисловие
- •Введение
- •1. Управление процессами в автономных однопроцессорных вычислительных машинах
- •1.1. Понятия вычислительного процесса и ресурса
- •1.2. Планирование процессов
- •1.3. Межпроцессное взаимодействие
- •1.4. Понятия потока («нити») и многопоточности
- •Контрольные вопросы и задания
- •2. Управление ресурсами в автономных однопроцессорных компьютерах
- •2.1. Управление памятью
- •Управление вводом-выводом
- •2.3. Управление файлами и файловая система
- •Контрольные вопросы и задания
- •3. Управление процессами и ресурсами в автономных многопроцессорных вычислительных машинах
- •3.1. Реализация операционных систем многопроцессорных вычислительных машин
- •Планирование и синхронизация в многопроцессорных вычислительных машинах
- •Контрольные вопросы и задания
- •4. Управление процессами и ресурсами в многомашинных вычислительных системах
- •4.1. Способы организации управления процессами
- •И ресурсами в многомашинных вычислительных системах
- •4.2. Понятия сетевой и распределенной операционных систем
- •4.3. Варианты реализации распределенных операционных систем
- •Контрольные вопросы и задания
- •5. Общие концепции разработки операционных систем
- •5.1. Основные принципы построения операционных систем
- •5.2. Архитектурные особенности проектирования операционных систем
- •5.3. Принципы построения системных и прикладных программных интерфейсов
- •Контрольные вопросы и задания
- •6. История развития операционных систем и эволюция их функциональных характеристик
- •6.1. Операционные системы разных этапов разработки вычислительных машин
- •6.2. История развития и характеристики операционных систем unix
- •6.3. История развития и характеристики операционных систем семейства Windows
- •Контрольные вопросы и задания
- •7. Пример практической реализации операционной системы: unix
- •7.1. Обзор системы unix
- •7.1.1. Общие представления
- •7.1.2. Интерфейсы системы unix
- •7.1.3. Оболочка и утилиты системы unix
- •7.1.4. Структура ядра системы unix
- •7.2. Процессы в unix
- •7.2.1. Основные понятия
- •7.2.2. Реализация процессов в unix
- •7.2.3. Планирование в системе unix
- •7.3. Управление памятью в unix
- •7.3.1. Основные понятия
- •7.3.2. Реализация управления памятью в unix
- •7.4. Ввод-вывод в системе unix
- •7.4.1. Основные понятия
- •7.4.2. Реализация ввода-вывода в системе unix
- •7.4.3. Потоки данных в unix
- •7.5. Файловые системы unix
- •7.5.1. Основные понятия
- •7.5.2. Реализация классической файловой системы unix
- •7.5.3. Реализация файловой системы Berkeley Fast
- •7.5.4. Реализация файловой системы Linux
- •7.5.5. Реализация файловой системы nfs
- •7.6. Безопасность в unix
- •7.6.1. Основные понятия
- •7.6.2. Реализация безопасности в unix
- •Контрольные вопросы и задания
- •8. Пример практической реализации операционной системы: Windows 2000
- •8.1. Обзор структуры операционной систем Windows 2000
- •8.1.1. Структура системы
- •8.1.2. Реализация объектов
- •8.1.3. Подсистемы окружения
- •8.2. Процессы и потоки в Windows 2000
- •8.2.1. Основные понятия
- •8.2.2. Межпроцессное взаимодействие
- •8.2.3. Реализация процессов и потоков
- •8.2.4. Загрузка Windows 2000
- •8.3. Управление памятью в Windows 2000
- •8.3.1. Основные понятия
- •8.3.2. Реализация управления памятью
- •8.4. Ввод-вывод в системе Windows 2000
- •8.4.1. Основные понятия
- •8.4.2. Реализация ввода-вывода в Windows 2000
- •8.5. Файловые системы Windows 2000
- •8.5.1. Файловые системы типа fat
- •8.5.2. Файловая система типа ntfs
- •8.6. Безопасность в Windows 2000
- •8.6.1. Основные понятия
- •8.6.2. Реализация защиты в Windows 2000
- •Контрольные вопросы и задания
- •Заключение
- •Библиографический список
- •Словарь терминов и определений
- •Алфавитно-предметный указатель
- •Храпский Сергей Филиппович операционные системы, среды и оболочки основные теоретические сведения
- •644099, Омск, ул. Красногвардейская, 9
8.2.4. Загрузка Windows 2000
Прежде чем операционная система Windows 2000 сможет начать работу, она должна загрузиться. Процесс загрузки создает начальные процессы. С точки зрения аппаратного обеспечения, процесс загрузки состоит из чтения первого сектора первого диска (главной загрузочной записи), после чего управление передается прочитанной программе. Эта короткая программа на ассемблере считывает таблицу разделов, чтобы определить, в каком разделе содержится загружаемая операционная система. Найдя раздел с операционной системой, начальный загрузчик считывает первый сектор этого раздела, называемый загрузочным сектором, и передает управление ему. Программа, содержащаяся в загрузочном секторе, считывает корневой каталог своего дискового раздела, находит в нем файл ntldr. Если этот файл удается найти, он загружается в память и ему передается управление. Программа ntldr загружает операционную систему Windows 2000. Существует несколько версий загрузочного сектора в зависимости от формата раздела (FAT-16, FAT-32 или NTFS). При установке Windows 2000 на диск записываются соответствующие версии главной загрузочной записи и загрузочного сектора.
Затем программа ntldr считывает файл Boot.ini, представляющий собой единственный файл с информацией о конфигурации, не содержащейся в реестре. Он хранит в себе списки всех версий файлов hal.dll и ntoskernl.exe, которые могут быть загружены с данного раздела диска. В этом файле также содержатся такие параметры, как количество центральных процессоров и оперативной памяти, сколько памяти отводить процессу пользователя (2 или 3 Гбайт), а также на какой частоте работают часы реального времени. Затем программа ntldr выбирает и загружает файлы hal.dll и ntoskernl.exe, а также файл bootvid.dll, представляющий собой видеодрайвер по умолчанию. Он обеспечивает вывод на дисплей во время процесса загрузки. После этого программа ntldr считывает реестр, чтобы найти драйверы, необходимые для завершения загрузки (например, драйверы клавиатуры и мыши, а также десятки других драйверов, требуемых для управления различными микросхемами на материнской плате). Наконец, загрузчик считывает все эти драйверы и передает управление программе ntoskernl.exe.
После запуска операционная система выполняет некоторые общие процедуры инициализации, а затем вызывает компоненты исполняющей системы, чтобы те также выполнили собственную инициализацию. Например, менеджер объектов подготавливает свое пространство имен, чтобы другие компоненты могли обращаться к нему и добавлять свои объекты в пространство имен. Многие компоненты также выполняют определенные действия, относящиеся к их функциям. В частности, менеджер памяти настраивает начальные таблицы страниц, а менеджер plug-and-play определяет, какие устройства ввода-вывода присутствуют, и загружает их драйверы. Вся загрузка состоит из десятков этапов, в течение которых на экране отображается полоса прогресса, растущая по мере выполнения очередных этапов. Последний этап заключается в создании первого настоящего пользовательского процесса – сеансового менеджера smss.exe. Как только этот процесс начинает работу, загрузка считается законченной.
Сеансовый менеджер представляет собой «родной» процесс операционной системы Windows 2000. Он обращается к истинным системным вызовам и не пользуется вызовами подсистемы окружения Win32, которая в тот момент еще даже не работает. Одной из его первоочередных обязанностей является запуск этой подсистемы (csrss.exe). Он также считывает с диска ульи реестра и узнает из них, что еще он должен сделать. Как правило, его работа заключается в помещении множества объектов в пространство имен менеджера объектов, создании дополнительных файлов подкачки и открытии нужных DLL. Завершив свою работу, сеансовый менеджер создает демон регистрации winlogon.exe.
В этот момент операционная система загружена и работает. Теперь пора запустить служебные процессы (демоны в пространстве пользователя) и позволить пользователям регистрироваться в системе. Сначала winlogon.exe создает менеджера аутентификации (lsass.exe), а затем запускает родительский процесс всех служебных процессов (sennces.exe). Последний процесс по информации, хранящейся в реестре, определяет, какие демоны в пространстве пользователя нужно запустить и в каких файлах они находятся. После этого он приступает к их созданию. Как правило, уже после того, как первый пользователь зарегистрировался в системе, но еще до того, как он успел в ней что-либо сделать, в операционной системе Windows 2000 наблюдается высокая активность с большим количеством обращений к диску. Это программа services.exe создает системные службы. Кроме того, она загружает все оставшиеся (еще не загруженные) драйверы устройств.
Программа winlogon.exe также отвечает за регистрацию всех пользователей в системе. После успешного входа пользователя в систему программа winlogon.exe получает из реестра профиль пользователя и определяет по нему, какую оболочку запустить. Стандартный рабочий стол Windows представляет собой программу explorer.exe, у которой настроены некоторые параметры. При желании пользователь может выбрать в качестве оболочки другую программу, для чего ему нужно просто отредактировать реестр. Отметим, что редактирование реестра требует особой внимательности и осторожности, а всего одна допущенная ошибка может сделать систему незагружаемой.