Uploaded by Wladimir Nikolskii

МДК 01.01

advertisement
ОГБОУ СПО «Черемховский горнотехнический колледж им. М.И. Щадова»
МДК 01.01. Системное
программирование
Конспект лекций
Чипиштанова ДВ
ПКС
Оглавление
ТЕМА 1. БАЗОВАЯ СИСТЕМА ВВОДА/ВЫВОДА (BIOS) .............................................................................................. 3
1.1 Программы BIOS. Их ключевые адреса. ..................................................................................................... 3
Интерфейс BIOS Setup и приемы работы с параметрами ............................................................................... 3
Системное ПО. Периферия ПК. .......................................................................................................................... 4
1.2 Прерывания. Клавиатурное прерывание. .................................................................................................. 6
1.3 Дисковое прерывание 13h. Структуры дисков. Физическая структура диска. Логические диски ..... 12
Метафайлы. Загрузочный сектор. FAT. NTFS. ................................................................................................. 14
Возможности NTFS ............................................................................................................................................ 17
Структура NTFS .................................................................................................................................................. 17
Файлы NTFS ....................................................................................................................................................... 18
Изменение системных ресурсов Windows ..................................................................................................... 18
ТЕМА 2. OS Windows: загрузка, настройка, управление, обслуживание ............................................................. 20
2.1 Каталоги, корневой каталог. Загрузчик ОС, этапы загрузки ОС. Системный диск. ............................... 20
2.2 Работа со служебными программами. API ОС. Структура окон, функций, сообщений. ...................... 30
ТЕМА 3 Программирование в OS Windows............................................................................................................ 33
Структура системного реестра Windows......................................................................................................... 33
Типы данных системного реестра Windows .................................................................................................................. 34
ТЕМА 1. БАЗОВАЯ СИСТЕМА ВВОДА/ВЫВОДА (BIOS)
1.1 Программы BIOS. Их ключевые адреса.
BIOS
(basic input/output system базовая
система
ввода-вывода) - это
набор
микропрограмм системного программного обеспечения низкого уровня, записанных в ПЗУ
(постоянное запоминающее устройство), имеющая программу для проверки установленной
конфигурации (система POST), начальной загрузки операционной системы и управления
системами компьютера. Является одним из основных устройств компьютера и находится на
материнской плате. Микросхемы часто называют также чипом, а набор микросхем - чипсетом.
Микросхема BIOS является чипом, так как находится в одной микросхеме. Они очень
чувствительны к статическому электричеству.
Микросхема BIOS предназначена для установки параметров системы. Изначально в ней
применяются заводские настройки, принятые по умолчанию, но в процессе модернизации такие
установки приходится настраивать в соответствии с нуждами пользователя.
BIOS представляет собой элементы памяти и содержит:
- тестовую систему POST (Power On Self Test - самотестирование при включении
электропитания), проверяющую после включения компьютера основные его компоненты;
- аппаратные драйверы основных устройств компьютера;
- программу установки основных параметров и аппаратной конфигурации. Значения
параметров при этом записываются в специальный контроллер периферии, который содержит
область памяти размером 100-130 байт памяти. Записанные значения, чтобы они не обнулялись,
поддерживаются при помощи аккумуляторной батарейки в то время, когда к компьютеру не
подключено электропитание.
Основной программой BIOS является POST (Power-On Self Test, в переводе
«самотестирование при старте») - программа, которая начинает выполняться после включения
компьютера. POST выполняет тестирование устройств, подключенных к компьютеру, и готовит
оперативную память для загрузки операционной системы.
Программа Setup является составной частью BIOS а для ее запуска служит программа CMOS
Setup. При помощи данной программы возможно управлять работой всего железа компьютера, а
именно процессором, чипсетом, оперативной памятью и другими компонентами. Самое важное,
что нужно запомнить в начале, так это то, что все параметры BIOS хранятся в CMOS памяти.
Интерфейс BIOS Setup и приемы работы с параметрами
В основном, программа BIOS Setup предполагает текстовый интерфейс с возможностью
управления при помощи клавиатуры. В главном окне программы BIOS Setup имеется меню с
перечнем основных разделов программы Setup. Это главное меню BIOS Setup как правило
представленно в виде двух столбцов.
Абсолютно все разделы BIOS Setup имеют схожую структуру.
1. В верхней части окна выводится наименование текущего раздела или подраздела.
2. В левой части располагается список всех доступных параметров выбранного раздела. Кроме
определенных параметров, могут быть названия подразделов, которые имеют треугольные стрелки в своем
обозначении.
3. Справа от наименования параметров выводятся их текущие значения. Когда параметр и его
значения отображаются бледным цветом, это значит, что либо он предназначен только для чтения, либо же
для его редактирования нужно изменить другой связанный параметр.
4. В правой части окна как правило выводится краткая информация о выбранном параметре, а в
нижней части — подсказка по использованию функциональных клавиш.
В программе BIOS Setup можно использовать следующие управляющие клавиши:
5. Стрелки вправо, влево, вверх, вниз (клавиши управления курсором) — перемещение курсора по
разделам и параметрам;
6. Enter — вход в выбранный раздел, выполнение выбранной команды, открытие всплывающего
окна со списком значений выбранного параметра;
7. Page Up/Page Down или +/- на дополнительный цифровой блок клавиатуры — изменение
значений выбранных параметров; при нажатии указанных клавиших несколько раз, имеется возможность
последовательно перебрать все допустимые значения данного параметра;
8. Esc — выход из раздела в главное меню, а при нажатии в главном меню — выход из BIOS Setup с
отменой всех изменений;
9. F1 — вызов справки по работе с BIOS Setup;
10. F2 — смена цветной палитры программы BIOS Setup (эта настройка доступна не во всех версиях
BIOS);
11. F5 — восстановление предыдущих значений для выбранного раздела: будут возвращены те
значения, которые имелись на момент входа в программу BIOS Setup (в некоторых версиях BIOS эта
клавиша используется для установки значений по умолчанию);
12. F6 — установка для выбранного раздела значений по умолчанию (команда Load Fail-Safe
Defaults); в некоторых версиях BIOS для этих целей могут использоваться клавиши F5 или F9;
13. F7 — устанавливается оптимизированное значени для выбранных параметров раздела (команда
Load Optimized Defaults);
14. F10 — выход из BIOS Setup с сохранением всех внесенных изменений, при этом нужно
подтвердить действия с помощью клавиш Y и Enter.
Некоторые ключевые адреса проверяются после включения компьютера:
1. После включения источник питания проводит самотестирование и в случае положительного
результата теста выдает на материнскую плату сигнал Power Good. Все это происходит за 0.5 сек.
2. После получения сигнала Power Good таймер перестает генерировать подаваемый на процессор
сигнал Reset.
3. CPU начинает выполнять код, который записан в BIOS по адресу FFFF:0000. По данному адресу
записана команда перехода на реально выполняемый код ROM BIOS.
4. BIOS проводит тестирование системы на наличие ошибок, в случае нахождения которых будет
подан лишь звуковой сигнал, так как видеоадаптер еще не инициирован.
5. Для того, что бы найти программу работы с видеоадаптером, BIOS сканирует адреса от C000:0000
до C780:0000. В случае нахождения программы, BIOS проверяет контрольную сумму кода. При совпадении
суммы с заданной управление передается BIOS видеоадаптера и на монитор выводится первичная
информация. В случае, если BIOS видеоадаптера на найдена, управление передается, встроенному в BIOS
материнской платы, драйверу.
6. Сканируются следующие адреса памяти начиная с C800:0000 до DF80:0000 с целью обнаружения
BIOS каких либо еще устройств в системе. В случае обнаружения оных так же проверяется контрольные
суммы кодов и затем управление этих устройств отдается их встроенным BIOS.
7. По адресу 0000:0472 BIOS проверяет значение слова, определяющего тип загрузки – холодная или
горячая. В случае холодной загрузки в работу будет запущена POST, в случае горячей – POST будет
пропущен.
8. Выполняется POST (в случае холодного пуска) для проверки всех компонентов системы. При
отсутствии фатальных ошибок выдается встроенным динамиком короткий сигнал.
9. ROM BIOS производит поиск дискеты в дисководе (при соответствующей настройке) и читает на
ней сторону 0, цилиндр 0 сектор 1. Этот сектор загружается по адресу 0000:7С00 и проверяет, является ли
дискета загрузочной. В случае повреждения этих данных или же дискета не является загрузочной, то на
экран выводится соответствующее сообщение.
10. Если в дисководе нет дискеты, то BIOS читает MBR (Memory Boot Record), которая лежит в
первом секторе жесткого диска и загружает его (сектор) в память по адресу 0000:7С00.
11. В работу вступает программа, находящаяся в MBR. Дальнейшее нас уже не должно интересовать,
так как не относится к теме данной статьи.
ОЗУ и ПЗУ разделять на диаметрально противоположные памяти нельзя. Часть адресного
пространства ОЗУ отводится под данные и коды BIOS. Т.е., во время работы компьютера BIOS является
частью оперативной памяти.
Системное ПО. Периферия ПК.
В компьютерной терминологии термин «периферия» объединяет собой все устройства ПК, кроме
процессора и оперативной памяти. Есть и другие термины для этих устройств, например, «устройства
ввода-вывода данных», «дополнительные устройства» и др.
Периферийные устройства персонального компьютера — это устройства, которые подключаются к
компьютеру с помощью специальных разъёмов. Ниже приведены примеры основных устройств, которые
можно часто встретить на компьютерах.
1. Монитор, дисплей, экран. Это устройство, которое часто называют пользователи «телевизор». Он
выводит изображение на экран, а значит, является очень важным компонентом в компьютере.
Мониторы по технологии работы делятся на ЭЛТ (Электронно — лучевая трубка) и ЖК
(жидкокристаллический). Первый вид – это устройство, содержащее в себе кинескоп, такой же, как в
старых телевизорах. Использование такого монитора довольно вредно для здоровья пользователя. Второй
вид – жидкокристаллический монитор – это современное решение, его использование гораздо менее вредно
для здоровья.
Второй важной характеристикой является размер экрана в мониторе. Его принято измерять по
диагонали и указывать в дюймах. Жидкокристаллические мониторы бывают широкоформатными, это
значит, что экран будет слегка вытянут по ширине, соотношение сторон такого экрана обычно 16:9 (у
обычного квадратного 4:3).
Мониторы можно подключать через следующие интерфейсы VGA, DVI, HDMI и DisplayPоrt. В данное
время на персональных компьютерах широко используются VGA и DVI интерфейсы, также существуют
различные переходники, если в мониторе или в материнской плате не предусмотрены данные интерфейсы.
2. Клавиатура. Это устройство для ввода информации. Все клавиши разделены на несколько групп:
 Буквенно-цифровые;
 Управляющие (клавиши Enter, Backspace, Shift, Ctrl, Alt, Win, Caps Lock, Tab, Print Screen, Scroll
Lock, Pause Break, Num Lock);
 Функциональные (клавиши F1 – F12);
 Клавиши управления курсором (Стрелки, Insert, Delete, Home, End, Page Up, Page Down);
 Малая цифровая клавиатура.
Кроме перечисленных выше, на клавиатуре может находиться набор мультимедийных клавиш самого
разного назначения. Также обычно имеются индикаторы режима Num Lock, Caps Lock, Scroll Lock.
Устройство может подключаться по интерфейсу Ps/2, USB. Существуют также переходники, которые
позволяют подключить USB клавиатуру в порт PS/2 и наоборот.
На ноутбуках и нетбуках в целях экономии места могут отсутствовать некоторые группы клавиш.
Также могут отсутствовать они и в обычных клавиатурах.
Плюсом USB клавиатуры является, что ее можно подключать с включенным компьютером и через
некоторое время операционная система автоматически опознает клавиатуру, тем самым вам не надо
перезагружать компьютер, чтобы начать работать с ней. Если подключить клавиатуру PS/2 с включенным
компьютером, то система не сможет определить устройство и придется перегрузить компьютер, чтобы
начать использовать клавиатуру.
3. Мышь. Это устройство-манипулятор, которое преобразует движения руки пользователя в движения
курсора на экране. Минимальный набор – это две клавиши и колесико прокрутки, некоторые модели могут
иметь расширенный набор: более одного колесика и дополнительные клавиши по левой и правой стороне
мышки.
Кнопки мыши обычно принято называть «левая кнопка мыши» (ЛКМ, Mouse 1) и «правая кнопка
мыши» (ПКМ, Mouse 2), под колесиком обычно тоже имеется третья дополнительная кнопка.
По принципу работы мышки бывают механическими, оптическими и лазерными. Механические
содержат внутри прорезиненный шар, который при движении вращает маленькие валы, с которых и
считывается информация о направлении и скорости движения манипулятора (устаревшая модель).
Оптические мышки имеют направленный вниз светодиод. Отраженный от поверхности свет и дает
возможность узнать направление и скорость перемещения. Лазерные мышки являются разновидностью
оптических.
Разница состоит в том, что светодиод заменен миниатюрным лазером. Это позволило избавиться от
свечения мыши и увеличило точность позиционирования. Механические мыши устарели и почти не
используются, обычно применяются разновидности оптических манипуляторов.
Способы подключения мыши такие же, как и у клавиатуры: USB и PS/2. Как и с клавиатурами USB
мышки определяются с включенным компьютером.
4. Принтер. Это устройство для вывода (печати) информации на бумагу.
В первую очередь они различаются по технологии печати. Бывают лазерные (светодиодный принтер),
струйные, матричные и другие принтеры (твердочернильный, сублимационный).
Лазерные принтеры – наиболее практичные для работы устройства. У них наибольшая скорость печати,
ресурс картриджа и наименьшая стоимость обслуживания и заправки. Обычно бывают черно-белыми, хотя
существуют и цветные. Для печати используется специальный порошок, называемый тонер. Он наносится
на лист бумаги в нужных местах, а затем закрепляется на ней путем нагрева и расплавления. Также есть
cветодиодный принтер, который является параллельной веткой развития технологии лазерной печати.
Струйный принтер – самый подходящий вариант для печати цветных изображений, в том числе
фотографий. В качестве печатающего вещества используется жидкая краска 4-х или 6-и цветов. Смешение
этих красок в разных сочетаниях дает всю палитру при печати. Недостатком является опасность засыхания
краски в картридже в случае длительного простоя и невысокая скорость печати. Однако такие принтеры
дают наибольшее качество цветной печати, а также невысокую стоимость заправки при условии
использования СНПЧ – системы непрерывной подачи чернил. Это система, при которой емкости с краской
находятся рядом с принтером и подача в картриджи осуществляется по специальным трубкам.
Матричный принтер. Это наиболее старый и наименее удобный вариант. В нем для печати
используется лента, пропитанная красящим веществом. Лента прижимается к бумаге специальными
уголками в нужных местах и формирует из точек изображение. Главными минусами таких принтеров
является: низкая скорость печати, качество и повышенный шум при печати. Однако они по-прежнему
используются во многих организациях потому, что некоторые старые программные продукты могут
печатать только на таких принтерах.
Принтеры подключаются к компьютеру через интерфейс USB или LPT (старые модели).
5. Сканер. Устройство для передачи информации с бумажного носителя в компьютер. Отсканировав
изображение, мы получим картинку. В случае если сканируется текст и его нужно отредактировать,
применяются специальные программы для распознавания текста. Одна из популярных программ, которая
распознает текст со сканированного документа ABBYY FineReader, которая распространяется как платный
программный продукт.
Сканеры подключаются через USB.
Клавиатура.
Практически ни одна программа не обходится без обращения к клавиатуре.
Программа может использовать клавиатуру по-разному. Она может задержать свое выполнение до тех
пор, пока оператор не введет какое-нибудь число или пока не нажмет какую-нибудь клавишу. Выполняя
некоторую работу, программа может периодически проверять, не нажал ли оператор на клавишу,
изменяющую режим работы программы. Резидентные программы могут контролировать все нажатия на
клавиши, активизируясь при нажатии определенной заранее комбинации. Можно использовать
прерывание, вырабатываемое клавиатурой, например, для завершения работы программы. Клавиатура
представлена в виде одной микросхемы, которая выполняет специализированные функции. Она
отслеживает нажатия на клавиши и посылает номер нажатой клавиши в микропроцессор. Номер клавиши,
посылаемый клавиатурным процессором, однозначно связан с распайкой клавиатурной матрицы и не
зависит напрямую от обозначений, нанесенных на поверхность клавиш. Этот номер называется скан-кодом
(Scan Code).
Слово scan ("сканирование"), подчеркивает тот факт, что клавиатурный компьютер сканирует
клавиатуру для поиска нажатой клавиши.
Но программе нужен не порядковый номер нажатой клавиши, а соответствующий обозначению на
этой клавише ASCII-код. Этот код не зависит однозначно от скан-кода, т.к. одной и той же клавише могут
соответствовать несколько значений ASCII-кода. Это зависит от состояния других клавиш. Например,
клавиша с обозначением '1' используется еще и для ввода символа '!' (если она нажата вместе с клавишей
SHIFT).
Поэтому все преобразования скан-кода в ASCII-код выполняются программным обеспечением. Как
правило, эти преобразования выполняют модули BIOS. Для использования символов кириллицы эти
модули расширяются клавиатурными драйверами.
Если нажать на клавишу и не отпускать ее, клавиатура перейдет в режим автоповтора. В этом режиме в
центральный компьютер автоматически через некоторый период времени, называемый периодом
автоповтора, посылается код нажатой клавиши. Режим автоповтора облегчает ввод с клавиатуры большого
количества одинаковых символов.
Следует отметить, что клавиатура содержит внутренний 16-байтовый буфер, через который она
осуществляет обмен данными с компьютером.
1.2 Прерывания. Клавиатурное прерывание.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события.
При этом выполнение текущей последовательности команд приостанавливается, и управление
передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего
возвращает управление в прерванный код.
Использование прерываний при работе с медленными внешними устройствами позволяют совместить
ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую
производительность системы. Некоторые прерывания (первые пять в порядке номеров) зарезервированы
для использования самим центральным процессором на случай каких-либо особых событий вроде попытки
деления на ноль, переполнения и т. п.
Причины:
1. События, происходящие в периферийных устройствах (внешн)
2. Программное прерывание – вызов супервизора (внутр)
3. Неопределенные события в процессах. (внутр)
4. Действия оператора. (внешн)
5. Прерывания по таймеру. (внешн)
Каждой конкретной причине прерывания назначен номер от 0 до 255. Некоторые номера прерываний
уже назначены аппаратно процессором, другие присваиваются аппаратной системой, в которую встроен
процессор. (Например, прерывания дискового накопителя). Еще одни зарезервированы для дальнейшего
расширения, а все остальные могут использоваться программами. Когда возникает прерывание, процессор
использует номер прерывания, как индекс в таблице. Из таблицы извлекается адрес обработки прерывания.
Обработчик вызывается для производства конкретной обработки, требуемой прерыванием. Похоже, как
будто в программе в точке прерывания вставлена команда вызова.
Запись процедуры прерывания должна быть такой, чтобы прерванная программа продолжалась так, как
будто ничего не произошло. Необходимо запоминать и восстанавливать PSW и регистры, используемые
процедурой прерывания, и возврат должен происходить к команде, следующей за командой, выполненной
до прерывания.
В зависимости от источника возникновения сигнала прерывания делятся на:
 асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников
(например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от
таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши,
кончилась бумага в принтере. Во всех этих случаях требуется прервать выполнение текущей программы и
перейти на выполнение другой программы (подпрограммы), обслуживающей данное событие. Факт
возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request,
IRQ);
 синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то
условий при исполнении машинного кода: деление на ноль, появление несуществующего кода
команды, обращение программы в область памяти, для нее не предназначенную, сбой при выполнении
передачи данных или операции в АЛУ и многое другое;
 программные (частный случай внутреннего прерывания) — инициируются исполнением
специальной инструкции в коде программы. Программные прерывания как правило используются для
обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной
системы.
Все прерывания устройства подключаются к контроллеру прерываний, а контроллер к процессору.
Прерывания от некоторых периферийных устройств более срочные и важные, чем другие. Если
прерывания от двух устройств возникают одновременно, то контроллер передает в процессор прерывание с
более высоким приоритетом, а второе запоминает. Только процессор завершает обработку первого
прерывания, контроллер сообщает ему о втором. Контроллер прерываний узнает о том, что прерывание
обработалось, по специальной команде: OUT – код конца прерывания выводит в порт, подключенный к
контроллеру. Эта команда записывается в конце процедуры прерывания.
Организация прерываний должна быть обеспечена определенными аппаратными и программными
средствами, которые называют подсистемой прерываний.
Подсистема прерываний должна обеспечивать выполнение следующих функций:
 обнаружение изменения состояния внешней среды (запрос на прерывание);
 идентификация источника прерывания;
 приоритет запросов - разрешение конфликтной ситуации в случае одновременного возникновения
нескольких запросов;
 приоритет программ - определение возможности прерывания текущей программы;
 фиксация состояния прерываемой (текущей) программы;
 обработка прерываний - переход к программе, соответствующей обслуживаемому прерыванию;
 возврат к прерванной программе после окончания работы прерывающей программы.
Такие прерывания возникают, как правило, случайно и асинхронно по отношению к программе и
требуют прекращения (чаще временного) выполнения текущей программы и переход на выполнение
другой программы (подпрограммы), соответствующей возникшему событию.
Обслуживание
прерываний
могут
взять
на
себя
BIOS
карт
расширений
(например, сетевых или видеокарт), операционная система и даже обычные (прикладные) программы,
которые постоянно находятся в памяти во время работы других программ (т. н. резидентные программы).
Таблица векторов прерываний. Клавиатурное прерывание
Для того чтобы связать адрес обработчика прерывания с номером прерывания, используется таблица
векторов прерываний, занимающая первый килобайт оперативной памяти - адреса от 0000:0000 до
0000:03FF. Таблица состоит из 256 элементов -FAR-адресов обработчиков прерываний. Эти элементы
называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором адрес сегмента обработчика прерывания. Прерыванию с номером 0 соответствует адрес 0000:0000, прерыванию с номером 1 - 0000:0004 и т. д.
(Домашнее задание – найти и записать в тетрадь таблицу векторов прерываний; ссылка
http://emanual.ru/download/8237.html)
Клавиатура подключена к линии прерывания IRQ1. Этой линии соответствует прерывание INT 09h.
Клавиатурное прерывание обслуживается модулями BIOS. Как работает стандартный обработчик
клавиатурного прерывания, входящий в состав BIOS?
Этот обработчик выполняет следующие действия:
 читает из порта 60h скан-код нажатой клавиши;
 записывает вычисленное по скан-коду значение ASCII-кода нажатой клавиши в специальный буфер
клавиатуры, расположенный в области данных BIOS;
 устанавливает в 1 бит 7 порта 61h, разрешая дальнейшую работу клавиатуры;
 возвращает этот бит в исходное состояние;
 записывает в порт 20h значение 20h для правильного завершения обработки аппаратного
прерывания.
Обработчик прерывания INT 09h не просто записывает значение ASCII-кода в буфер клавиатуры.
Дополнительно отслеживаются нажатия таких комбинаций клавиш, как Ctrl-Alt-Del, обрабатываются
специальные клавиши PrtSc и SysReq. При вычислении кода ASCII нажатой клавиши учитывается
состояние клавиш Shift и CapsLock. Буфер клавиатуры имеет длину 32 байта.
Кольцевой буфер (417h, 418h).
Клавиатурный буфер организован циклически (кольцевой буфер). Это означает, что при его
переполнении самые старые значения будут потеряны. Указателями на начало и конец клавиатурного
буфера обычно управляют обработчики прерываний INT 09h и INT 16h. Программа извлекает из буфера
коды нажатых клавиш, используя различные функции прерывания INT 16h.
Помимо управления содержимым буфера клавиатуры, обработчик прерывания INT 09h отслеживает
нажатия на так называемые переключающие клавиши - NumLock, ScrollLock, CapsLock, Ins. Состояние
этих клавиш записывается в область данных BIOS в два байта с адресами 0000h:0417h и 0000h:0418h.
Формат байта 0000h:0417h: (0-7 – биты)
0
Нажата правая клавиша Shift.
1
Нажата левая клавиша Shift.
2
Нажата комбинация клавиш Ctrl-Shift с любой стороны.
3
Нажата комбинация клавиш Alt-Shift с любой стороны.
4
Состояние клавиши ScrollLock.
5
Состояние клавиши NumLock.
6
Состояние клавиши CapsLock.
7
Состояние клавиши Insert.
Формат байта 0000h:0418h: (0-7 – биты)
0
Нажата левая клавиша Shift вместе с клавишей Ctrl.
1
Нажата левая клавиша Shift вместе с клавишей Alt.
2
Нажата клавиша SysReq.
3
Состояние клавиши Pause.
4
Нажата клавиша ScrollLock.
5
Нажата клавиша NumLock.
6
Нажата клавиша CapsLock.
7
Нажата клавиша Insert.
ASCII
ASCII (англ. American Standard Code for Information Interchange) —американская стандартная
кодировочная таблица для печатных символов и некоторых специальных кодов.
ASCII представляет собой кодировку для представления десятичных цифр, латинского и
национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной.
В компьютерах обычно используют расширения ASCII с задействованным 8-м битом и второй половиной
кодовой таблицы.
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В
ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
 a BS ' → á
 a BS ` → à
 a BS ^ → â
 o BS / → ø
 c BS , → ç
 n BS ~ → ñ
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на
символ накладывается подчёркивание, то получается подчёркнутый текст.
 a BS a → a
 a BS _ → a
Национальные варианты ASCII
Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов на
месте @ [ \ ] ^ ` { | } ~. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая
система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов.
Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».
Для
некоторых языков с
нелатинской письменностью (русского, греческого, арабского, иврита)
существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных
латинских букв — на их месте размещались национальные символы (для русского и греческого — только
заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету»
с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно
полностью устранить латинские буквы и занять всё пространство под свои символы.
Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю
половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) —
дополнительные символы, включая набор национальных символов. Таким образом, верхняя половина
таблицы ASCII до повсеместного внедрения Юникода активно использовалась для представления
локализированных
символов,
букв
местного
языка.
Отсутствие
единого
стандарта
размещения кириллических символов в таблице ASCII доставляло множество проблем с кодировками
(КОИ-8, Windows-1251 и другие). Другие языки с нелатинской письменностью тоже страдали из-за наличия
нескольких разных кодировок.
В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII. ASCII-коды
используются также для определения нажатой клавиши при программировании. Для стандартной
QWERTY-клавиатуры таблица кодов выглядит следующим образом:
Escape
27
F1 F2 F3
112 113 114
F4 F5 F6 F7 F8 F9 F10 F11 F12
115 116 117 118 119 120 121 122 123
`ё
192
Print
Screen
Scroll
Lock
Pause
19
145
Back
1 2 3 4 5 6 7 8 9 0
- =+ Space
Insert Home Page Up Num Lock /
33
144 доп.
49 50 51 52 53 54 55 56 57 48 189 187 8
45
36
111
Page
Tab Q W E R T Y U
I O P
[
]
Delete End Down 7 доп. 8
9
81 87 69 82 84 89 85 73 79 80 219 221
46
35
103 доп.
34
104
Caps Lock
A S D F G H J K L ;ж 'э
Enter
4 доп. 5
20
65 83 68 70 71 72 74 75 76 186 222
13
100 доп.
101
Shift Z X C V B N M ,< .> / Shift \|
Up
1 доп. 2
16
90 88 67 86 66 78 77 188 190 191 16 220
38
97 доп.
98
Ctrl win Alt
Space Bar
Alt win list Ctrl
Left Down Right
Ins/0
17
18
32
18
17
37
40
39
45/96
Командная строка DOS
* доп.
106
+
доп.
9 доп. 107
105
6 доп.
102
Enter
3 доп. доп.
99
13
Del/.
46/110
Среду командной оболочки Windows запускают разными способами, в частности указывая параметры
при запуске Cmd.exe или используя собственный стартовый файл, хранящийся в каталоге
%SystemRoot%\System32.
Кроме того, командная строка может работать в пакетном режиме для выполнения набора команд. В
пакетном режиме командная строка считывает и выполняет команды одну за другой.
Работая с командной строкой Windows, вы должны понимать, откуда берутся используемые вами команды.
«Родные» команды (встроенные в операционную систему) бывают двух видов:
1. внутренние — существуют внутри командной оболочки; у них нет отдельных исполняемых
файлов;
2. внешние — реализованы в отдельных исполняемых файлах, которые обычно хранятся в
каталоге %SystemRoot% \System32.
























Краткий справочник по командам командной оболочки (Cmd.exe)
assoc Выводит или изменяет сопоставления (associations) типов файлов
break Задает точки останова при отладке
call Вызывает из сценария процедуру или другой сценарий
color Задает цвета текста и фона окна командной оболочки
echo Выводит текст в окно командной строки или задает, надо ли отображать команды на экране
(on|off)
endlocal Отмечает конец локализации (локальной области видимости) переменных
exit Выход из оболочки командной строки
for Выполняет заданную команду для каждого файла в наборе
ftype Выводит или изменяет текущие типы файлов в сопоставлениях расширений файлов с
программами
goto Указывает, что интерпретатор команд должен перейти настроку с заданной меткой в
пакетном сценарии
if Выполняет команды но условию
path Показывает или задает путь к командам, используемый операционной системой при поиске
исполняемых файлов и сценариев
pause останавливает выполнение пакетного файла и ожидает ввода с клавиатуры
popd Делает текущим каталог, имя которого было сохранено командой PUSHD
prompt Указывает, какой текст должен показываться в строке приглашения
pushd Сохраняет имя текущего каталога и при необходимости делает текущим заданный каталог
rem Помечает комментарии в пакетном сценарии или Config.nt
set Показывает текущие переменные окружения или задает временные переменные для текущей
командной оболочки
setlocal Отмечает начало локализации (локальной области видимости) переменных в пакетных
сценариях
shift Сдвигает позицию замещаемых параметров в пакетных сценариях
start Запускает заданную программу или команду в отдельном окне
title Задает заголовок окна командной оболочки
verify Включает режим проверки файлов после записи на диск
vol Показывает метку и серийный номер дискового тома
Синтаксис любой внутренней команды (и большинства внешних) можно получить, введя в
командной строке имя команды и /?, например: сору /?
Командная оболочка — весьма мощная среда работы с командами и сценариями. В командной строке
можно запускать команды разных типов: встроенные команды, утилиты Windows и версии приложений,
рассчитанные на командную строку. Независимо от типа каждая команда, которую вы будете использовать,
должна соответствовать одним и тем же синтаксическим правилам. Согласно этим правилам, за именем
команды идут обязательные или необязательные аргументы. Кроме того, аргументы могут использовать
перенаправление ввода, вывода или стандартных ошибок.
Выполняя команду в командной оболочке, вы инициируете такую последовательность событий.
1. Командная оболочка заменяет любые переменные, введенные в тексте команд, их текущими значениями.
2. Если введена группа или цепочка из нескольких команд, строка разбивается на отдельные
команды, которые в свою очередь разбиваются на имя и аргументы команды. Далее команды
обрабатываются по отдельности.
3. Если в имени команды указан путь, командная оболочка ищет команду по этому пути. Если в
указанном каталоге такой команды нет, командная оболочка возвращает ошибку.
4. Если в имени команды не задан путь, командная оболочка сначала пытается разрешить имя
команды на внутреннем уровне. Если найдена внутренняя команда с таким именем, значит, вызвана
внутренняя команда, которую сразу же можно выполнить. Если внутренней команды с таким именем нет,
командная оболочка сначала ищет исполняемый файл команды в текущем каталоге, а затем в каталогах,
перечне в переменной окружения PATH. Если файла команды нет ни в одном из этих каталогов, командная
оболочка возвращает ошибку.
5. Если команда найдена, она выполняется с заданными аргументами и при необходимости ввод
считывается из источника, указанного в этих аргументах. Вывод и ошибки команд показываются в окне
командной
строки
или
направляются
заданному
приемнику
вывода
и
ошибок.
Как видите, на выполнение команд влияют многие факторы, в том числе пути к командам, перенаправление
ввода-вывода,
группирование
или
создание
цепочек
команд.
При работе с командной оболочкой вы, вероятно, запускали ее, открывая меню Start (Пуск) и выбирая
Programs (Программы) или All Programs (Все программы), затем Accessories (Стандартные) и Command
Prompt (Командная строка). Другие способы запуска командной строки — диалоговое окно Run (Запуск
программы) или ввод cmd в другом, уже открытом окне командной оболочки.
Сценарии командной строки — текстовые файлы с командами, которые вы хотите выполнить. Это те
же команды, которые обычно вводятся в командной оболочке Windows. Однако, вместо того чтобы вводить
команды каждый раз, когда они понадобятся, можно создать соответствующий сценарий.
Поскольку сценарии состоят из стандартных текстовых символов, их можно создавать и
редактировать в любом стандартном текстовом редакторе, скажем, в Notepad (Блокнот). Вводя команды,
убедитесь, что каждая команда или группа команд, которые должны выполняться совместно, разметаются с
новой строки. Это обеспечит их корректное выполнение. Закончив создание сценария командной строки,
сохраните файл сценария с расширением .bat или .cmd. Оба расширения работают одинаково. Например,
если вам надо создать сценарий для вывода имени системы, версии Windows и конфигурации IP, включите
в файл SysInfo.bat или SysInfo.cmd следующие три команды:
Hostname
Ver
ipconfig –all
Команда ECHO служит двум целям: для записи текста в вывод (например в окно командной
оболочки или текстовый файл) и для включения/выключения эхо-отображения команд. Обычно при
выполнении команд сценария сами команды и вывод этих команд отображаются в консольном окне. Это
называется эхо-отображением команд (comand echoing).
Чтобы использовать команду ECHO для отображения текста, введите echo и текст, который надо
вывести: echo The system host name Is: hostname
Чтобы с помощью ECHO управлять эхо-отображением команд, введите echo off или echo on,
например:
echo off
echo The system host name is:
hostname
Теперь посмотрим, как подавляется эхо-отображение команд. Запустите командную оболочку,
введите echo off, затем другие команды. Вы увидите, что приглашение командной строки больше не
выводится. Вместо него появляется только то, что набирается в консольном окне, и вывод выполненных
команд. В сценариях команда ECHO OFF отключает эхо-отображение команд и приглашение командной
строки. Добавляя в свои сценарии команду ECHO OFF, вы предотвращаете загромождение окна командной
оболочки или файла текстом команд, если вас интересует лишь вывод от этих команд.
Часто при работе с компьютером пользователя или удаленным сервером возникает необходимость в
получении базовой информации о системе вроде имени зарегистрированного в ней пользователя, текущего
системного времени или местоположения определенного файла. Команды, которые позволяют собрать
основную информацию о системе, включают:
1. DRIVERQUERY — выводит список всех установленных драйверов устройств и их свойства, в том
числе имя моду¬ля (module name), отображаемое имя (display name), тип драйвера и дату сборки
(driver link date). В режиме отобра¬жения всей информации (/V) сообщается статус (status) и
состояние (state) драйвера, режим запуска, сведения об использовании памяти и путь в файловой
системе. Параметр /V также включает вывод детальной информации обо всех неподписанных
драйверах.
2. SYSTEMINFO — выдает подробную информацию о конфигурации системы, в том числе сведения о
версии, типе и из¬готовителе операционной системы, процессоре, версии BIOS, объеме памяти,
региональных стандартах, часовом поясе и конфигурации сетевого адаптера.
3. NOW — отображает текущую системную дату и время в 24-часовом формате, например Sal May 9
12:30:45 2003. Доступна только в Windows Server 2003 Resource Kit;
4. WHOAMI — сообщает имя пользователя, зарегистрированного в системе на данный момент,
например adatum\admi-nistrator.
Управление приложениями, процессами и производительностью
Всякий раз, когда операционная система или пользователь запускает службу, приложение или команду,
Microsoft Windows запускает один или более процессов для управления соответствующей программой.
Несколько утилит командной строки упростят вам мониторинг программ и управление ими. К этим
утилитам относятся:
 Pmon (Process Resource Manager) — показывает статистические данные по производительности,
включая использование памяти и процессора, а также список всех процессов, выполняемых в
локальной системе. Позволяет получать детальные «снимки» задействованных ресурсов и
выполняемых процессов. Pmon поставляется с Windows Resource Kit;
 Tasklist (Task List) — перечисляет все выполняемые процессы по имени и идентификатору процесса,
сообщает информацию о сеансе пользователя и занимаемой памяти
 Taskkill (Task Kill) — останавливает выполнение процесса, заданного по имени или идентификатору. С
помощью фильтров можно останавливать процессы в зависимости от их состояния, номера сеанса,
процессорного времени, занимаемой памяти, имени пользователя и других параметров. В следующих
разделах подробно обсуждается, как применяются эти утилиты командной строки. Но сначала
рассмотрим, как выполняются процессы и каковы наиболее распространенные проблемы, которые
могут встретиться при работе с ними.
1.3 Дисковое прерывание 13h. Структуры дисков. Физическая структура диска.
Логические диски
Функции дискового сервиса вызываются программным прерыванием Int 13h.
Традиционно дисковый сервис подразделяет физические диски на дискеты (diskette) и фиксированные
диски (fixed disk). Набор функций для этих классов устройств несколько различается как по составу, так и
по реализации. Классы различаются по диапазонам номеров физических устройств: для дискет отводятся
номера 0-7Fh (реально только 0-3), а для фиксированных дисков — 80h-FFh.
Контроллеры дисковых интерфейсов, имеющие в своем составе дополнительные модули BIOS,
перехватывают вектор Int 13h, беря на себя обслуживание своих устройств. Когда в IBM PC/XT появились
жесткие диски со своим контроллером, модуль BIOS этого контроллера, инициализирующийся во время
теста POST, вставал на место Int 13 h, а указатель на исходный обработчик дискового сервиса (драйвер
НГМД из системной BIOS) сохранялся на месте Int 40h. Хотя поддержка жестких дисков давно уже
включена в системную BIOS, ради совместимости возможность использования прерывания Int 40h для
вызова драйвера гибких дисков сохраняется. Интерфейс этого вызова совпадает clnt 13h,но номер устройства (в регистре DL) не должен превышать 7Fh.
Кроме функций дискового сервиса (Int 13h)c дисковыми устройствами связаны еще и векторы,
обслуживающие аппаратные прерывания от контроллера НГМД — Int 0Eh (линия IRQ 6) и от контроллера
жестких дисков — Int 76h (линия IRQ 14). При наличии двухканального порта АТА второй канал обычно
задействует линию IRQ 15 (вектор 77h). В XT контроллер жестких дисков занимал линию IRQ 5 (вектор
ODh). Дополнительные контроллеры дисков могут использовать и другие прерывания. Аппаратные
прерывания вырабатываются контроллерами по завершении (нормальному и аварийному) внутренних
операций. На эти прерывания BIOS не реагирует, а при инициализации их векторы направляются на
программную заглушку (инструкцию IRET).
Стандартные драйверы дисковых функций BIOS (включая и расширенный сервис) имеют однозадачное
происхождение. Во время выполнения функции значительное процессорное время может затрачиваться на
ожидание завершения операции устройством. Драйверы многозадачного режима построены иначе: у них
есть вызывающая часть, инициализирующая начало операции, и обработчик аппаратного прерывания от
контроллера, сообщающий операционной системе о выполнении операции и результате.
♦
♦
♦
♦
♦
♦
♦
♦
♦
Традиционный сервис BIOS
Традиционный дисковый сервис работает в 16-разрядном режиме процессора, все параметры вызова
передаются через регистры процессора. Адрес сектора задается в системе CHS и размещен весьма
специфично. Сервис вызывается программным прерыванием Int 13h, при вызове принимаются следующие
соглашения:
♦ номер функции задается в регистре АН и не должен превышать 3Fh;
логический номер диска задается в регистре DL (бит 7 = 0 — признак обращения к НГМД);
номер цилиндра (О-1023) задается в регистре СН (младшие8бит)и СЦ7:6] (старшие 2 бита);
♦ номер головки (0-255) задается в регистре DH;
♦ номер начального сектора (1-63) задается в регистре CL [5 :0];
♦ количество секторов, участвующих в операции, 8 бит — в регистре AL (0-255);
указатель на начало буфера оперативной памяти для считываемых и записы
ваемых данных (address of buffer) — в регистрах Е S: ВХ;
результат выполнения операции определяется по флагу переноса: С F = 0 —успешное выполнение
операции, CF = 1 — обнаружены ошибки (код состояния возвращается в регистре АН, код завершения
последней операции с дискетами хранится по адресу 40:4lh, с жесткими дисками — 40:74h);
таблица параметров диска для дискет (DPT) задана указателем в памяти по
адресу 0:78h, для жестких дисков (HDPT) — 0:104h или 0:118h.
Расширенный сервис BIOS
Чтобы получить возможность работы через BIOS с дисками объема более 8,4 Гбайт, потребовалось ввести
новые функции дискового сервиса.
Расширенный дисковый сервис BIOS, Enhanced Disk Drive Services (EDD), продвигаемый фирмой Phoenix
Technologies LTD, реализуется многими разработчиками BIOS и устройств массовой памяти. Он позволяет
работать с устройствами, имеющими объем до 264 секторов, эффективно используя архитектуру
процессоров IA-32 и IA-64. Сервис оперирует линейным логическим адресом сектора (LBA). Вместо
традиционных таблиц параметров дисков в нем используются новые, дающие исчерпывающую
информацию об устройствах, их физической организации и интерфейсе. Устройства могут иметь сменные
носители и сами быть съемными в процессе работы компьютера (например, подключенные к шине USB
или IEEE1394), так что понятие «сменяемость носителя» несколько размывается. Такие устройства должны
поддерживать механизм уведомления о смене носителя и программное блокирование смены носителя. По
прогнозам емкости данного интерфейса должно хватить на 15-20 лет.
Расширения BIOS Int 13h используют ОС Windows 95, Windows 98, Windows 2000. Правда, это
использование ограничено лишь начальной загрузкой и процессом установки (FDISK, FORMAT),
поскольку в регулярной работе применяются собственные 32-разрядные драйверы. Расширения BIOS Int
13h не используют DOS (все версии), Windows 3. lx, Windows NT, Novell NetWare, OS/2 Warp, Linux, Unix.
В настоящее время определены три набора функций:
доступ к фиксированным дискам (fixed disk access subset) — функции 41-44h,47h и 48h;
блокировка и смена носителя (device locking and ej ecting subset) — функции 41 h,45h, 46h, 48h и 49h;
поддержка расширенных дисков (enhanced disk drive (EDD) support subset) —функции 41h и 48h.
Расширенный сервис, как и традиционный, вызывается программным прерыванием I n t 13 h с номерами
функций свыше 3Fh (регистр АН); номер устройства (регистр DL) допустим в диапазоне 80h-FFh.
Основные параметры вызова — начальный адрес блока, число секторов для передачи и адрес буфера —
передаются через адресный пакет (device address packet). Формат пакета в сравнении с передачей
параметров традиционного сервиса через регистры процессора довольно просторный.
Поскольку расширение BIOS может и отсутствовать, имеется функция проверки его наличия (номер 41h).
Расширение может действовать избирательно (не для всех устройств), так что проверку надо производить
для конкретного устройства, интересующего программу. Проверка дает номер версии расширения и карту
поддерживаемых наборов функций. Функции расширенного чтения, записи, верификации и поиска (42h,
43h, 44h и 47h) по смыслу не отличаются от их аналогов из традиционного сервиса. Для работы со
сменными носителями введены функции отпирания/запирания, извлечения и проверки факта смены
носителя (45h, 46h и 49h). От идеологии традиционного сервиса сильно отличается функция получения
параметров устройства (48h). Она возвращает в ОЗУ буфер с набором параметров и детальным описанием
устройства, позволяющим ОС и приложениям работать с ним, минуя BIOS. Функция установка аппаратной
конфигурации (4Eh) позволяет управлять режимом передачи (РЮ, DMA), а также предварительной
выборкой (поиском).
Для эмуляции дисков на загружаемых CD-ROM к сервисам BIOS Int 13h добавляется несколько новых
функций:
начать/завершить эмуляцию диска (4Ah/4Bh), начать эмуляцию диска и вы
полнить загрузку (4Ch);
♦ прочитать секторы загрузочного каталога (4Dh); функции 41-48h позволяют обращаться к любым
логическим секторам CD-ROM (в режиме LBA с размером сектора 2048 байт), когда для данного привода
включена эмуляция.
Физическая структура жёстких дисков предполагает разбиение диска на рабочие поверхности,
дорожки и секторы, номера которых образуют адрес, по которому на диске хранится информация.
Логическая структура жёсткого диска предполагает деление общего дискового пространства на
области,
каждая
из
которых
хранит
специфическую
информацию: MBR(Master Boot Record), BR (Boot Record), FAT1 и FAT2, Root Directory и область для
данных.
MBR-это главный загрузочный сектор, это первый сектор на диске, с чтения его содержимого
начинается работа компьютера при включении или перезагрузке. MBR состоит из двух частей: в первой
части записана программа IPL1- Initial Program Loading 1, при выполнении которой компьютер исследует
содержимое второй части MBR- таблицу разделов диска Partition Table, в которой указаны номера первого
и последнего секторов каждого из разделов диска. Количество разделов может быть от 1 до 4-х, когда диск
условно разделён на 4 логических диска. В Partition Table также хранится информация о типе файловой
системы раздела и признак того - является раздел загрузочным или нет. Каждый из разделов жёсткого
диска содержит сектор BR (Boot Record), две копии File Allocation Table (FAT )- FAT1 и FAT2, корневой
каталог Root Directory и область данных.
Сектор BR (Boot Record)- это первый сектор раздела, в котором записана одноимённая
программа Boot Record, являющаяся частью операционной системы и предназначенная для запуска на
выполнение остальных программ операционной системы, хранящихся на диске. BR имеется во всех
разделах жёсткого диска, хотя не все разделы содержат файлы операционной системы, т.е. не все разделы
являются "системными".
Таблица FAT (File Allocation Table) – таблица размещения файлов, хранит записи длиной 16 или 32
бита, хранящие информацию о месторасположении кластеров, на которых записан каждый файл.
Если FAT повреждается, то компьютер теряет доступ к файлу и на диске появляются "потерянные
кластеры"- т.е. секторы с бесполезной информацией, которую невозможно прочесть.
Root Directory- корневой каталог диска, содержит записи с информацией о каждом файле – имя, тип,
объём, дата и время создания, атрибут файла (системный, скрытый, только для чтения, архивный) и хранит
указатель на первый кластер файла. Корневой каталог является самым «главным» каталогом в разделе
диска, все остальные каталоги и файлы располагаются по иерархии ниже его.
Data Area- область для данных- основная область раздела диска, хранит сами файлы.
Физическая и логическая структуры жёсткого диска создаются в процессе форматирования. В отличие
от дискет, процесс форматирования жёсткого диска разбит на 2 этапа- низкоуровневое форматирование и
форматирование высокого уровня. Низкоуровневое форматирование выполняется один раз на заводеизготовителе. Форматирование высокого уровня выполняется утилитой Format.exe, хранящейся на
загрузочной дискете, либо соответствующими средствами Windows.
Метафайлы. Загрузочный сектор. FAT. NTFS.
Microsoft Windows Metafile Format (WMF) используется для хранения векторных и растровых
изображений и графических данных в памяти или в дисковых файлах. Векторные данные хранимые WMFфайлом описывают команды Microsoft Windows Graphics Device Interface (GDI). Система интерпретирует и
воспроизводит эти команды в контексте отображения, используя Windows API функцию PlayMetaFile().
Растровые изображения в WMF файле могут содержаться в формате Microsoft Device Dependent Bitmap
(DDB), или Device Independent Bitmap (DIB). В Windows, метафайлы обычно создаются и воспроизводятся
в памяти. Если данные метафайла слишком велики, что бы держать их в памяти, или должны быть
сохранены прежде, чем приложение завершилось, то они могут быть записаны на диск в формате WMF или
EMF и воспроизведены обратно с диска. Максимальный размер метафайла - 4 Гб. WMF - это базовый 16битный формат, который появлялся в Windows 2.0. Формат EMF является 32-битной дополненной
переработкой формата WMF. EMF расширил функциональное назначение WMF, включая цветную палитру
и полную поддержку для всех 32-битовых команд GDI. Win32 API (Windows 95 и Windows NT) и 32битный OLE поддерживает как WMF, так и EMF файлы. Win16 API и 16-битный OLE поддерживает только
WMF. Хотя формат Windows Metafile поддерживают большое количество приложений, работающих на
других платформах, основное его назначение - это обмен графической информацией между Windows
приложениями. Например, Adobe's Encapsulated PostScript (EPS) поддерживает использование включенного
Windows Metafile, когда требуется сохранить векторные данные. При использовании метафайлов в
Windows или OS/2, нет необходимости писать специальные программы для выполнения грамматического
разбора их содержимого, можно вызывать имеющиеся в Windows API функции. Поскольку есть обширная
документация Microsoft и IBM по использованию метафайлов в Windows и OS/2, эта статья рассмотрит
структуру и синтаксический анализ метафайлов без использования Windows API. Все структуры данных и
определения типов данных связанные с файлами WMF находятся в заголовочном файле WINDOWS.H. Для
Win32 SDK определения WMF и EMF содержатся в WINUSER.H WINGDI.H.
Метафайл состоит из одного или двух информационных заголовков и массива переменной длины,
который содержит информацию о реальных GDI командах.
Есть четыре разновидности метафайлов standard, placeable, clipboard, и enhanced.
Метафайлы standard содержат 18-байтовый заголовок WMF, после которого следуют одна или более
записей GDI команд. Последняя запись в файле содержит информацию, указывающую, что достигнут
конец данных.
Метафайлы placeable содержат дополнительный 22-байтовый заголовок, который содержит
информацию, описывающую положение изображения на устройстве отображения. После него следует
стандартный 18-байтовый заголовок WMF и командные записи GDI. Placeable метафайлы были
разработаны корпорацией Aldus, как нестандартный путь указать параметры отображения на устройстве
отображения. Placeable метафайлы широко распространены, но не поддерживаются Windows API. Для
воспроизведения placeable метафайла используя Windows API необходимо переделать его заголовок.
Метафайлы clipboard содержат дополнительный 8-байтовый (Win16) или 16-байтовый заголовок
(Win32), который предшествует стандартному заголовку метафайла и описывает режим отображения и
размер изображения. Clipboard метафайлы используют формат заголовка стандартных метафайлов, но ему
предшествует 8- или 16-байтный заголовок.
Enhanced метафайлы, как и предыдущие, содержат записи GDI команд, но с другим заголовком,
являющимся объединением заголовков placeable и clipboard метафайлов. EMF заголовок также содержит
строку описания файла и программируемую палитру. Enhanced метафайлы являются новой и расширенной
32-битной версией стандартных метафайлов. Только 32-разрядный Windows API (Win32) поддерживает
EMF файлы.
Строковые данные в EMF файлах используют Unicode кодировку.
Строка описания EMF файла представляет собой набор Unicode символов. Размер строки практически
не ограничен (может содержать более 2 миллионов символов). Формат строки является "double NULLterminated" где каждый первый 0 является признаком конца подстроки.
После заголовка всех типов метафайлов следуют записи описания данных. Структура записей
METARECORD описана в файле WINDOWS.H
Последняя запись метафайлов всегда содержит функцию с номером 0000h. Эта запись является
заглушкой и показывает, что достигнут конец данных.
Enhanced метафайлы имеют свою собственную структуру, которая похожа на структуру записей
стандартных метафайлов, но является полностью 32-разрядной
EMF файл также может содержать таблицу цветов, используемую при отображении изображения. По
умолчанию, файл не содержит таблицу цветов и использует системную палитру.
Загрузочный сектор, бутсектор (англ. boot sector) — это особый сектор на жёстком
диске, дискете или другом дисковом устройстве хранения информации. (Для дискеты это первый
физический сектор, для жесткого диска — первый физический сектор для каждого раздела) В процессе
загрузки компьютера с дискеты он загружается в память программой POST (в компьютерах архитектуры
IBM PC обычно с адреса 0000:7c00), ему передается управление командой long jump.
Загрузочный сектор, иногда называемый stage1, то есть первым этапом загрузки операционной
системы, загружает программу второго этапа загрузки операционной системы stage2 (вторичный загрузчик,
иногда в качестве stage2 загружается boot manager или программа авторизации и защиты доступа). В
некоторых ОС роль stage1 выполняет MBR, и при загрузке ОС с жесткого диска загрузочный сектор не
используется. На незагружаемых разделах жесткого диска загрузочные секторы также могут не содержать
программу загрузки.
Файловая система (file system) – способ организации данных в виде файлов на устройствах внешней
памяти (жестких и оптических дисках, устройствах флеш-памяти и т. п.).
Файловая система должна обеспечивать:
1. безопасное и надежное хранение данных (т. е. защищенное от несанкционированного
использования и различного рода сбоев и ошибок);
2. программный интерфейс доступа к файлам;
3. организацию файлов в виде иерархии каталогов.
Windows поддерживает несколько файловых систем для различных внешних устройств:
 NTFS – основная файловая система семейства Windows NT;
 FAT (File Allocation Table – таблица размещения файлов) – простая файловая система используемая
Windows для устройств флеш памяти, а также для совместимости с другими операционными системами
при установке на диски с множественной загрузкой. Основным элементом этой файловой системы является
таблица размещения файлов FAT (по имени которой названа вся файловая система), необходимая для
определения расположения файла на диске. Существует три варианта FAT, отличающихся разрядностью
идентификаторов, указывающих размещение файлов: FAT12, FAT16 и FAT32;
 exFAT (Extended FAT – расширенная FAT) – развитие файловой системы FAT, использующее 64
разрядные идентификаторы. Применяется в основном для устройств флеш-памяти;
 CDFS (CD ROM File System) – файловая система для CD дисков, объединяющая форматы ISO
96601 и Joliet2;
 UDF (Universal Disk Format – универсальный формат дисков) – файловая система для CD и DVD
дисков, разработанная для замены ISO 9660.
Для дальнейшего изложения необходимо знать следующие важные понятия: диск, раздел, простые и
составные тома, сектор, кластер.
Диск (disk) – устройство внешней памяти, например, жесткий диск или оптический диск (CD, DVD, Blu
ray).
Раздел (partition) – непрерывная часть жесткого диска. Диск может содержать несколько разделов.
Том (volume) или логический диск (logical disk) – область внешней памяти, с которой операционная
система работает как с единым целым. Тома бывают простые и составные.
Простой том (simple volume) – том, состоящий из одного раздела.
Составной том (multipartition volume) – том, состоящий из нескольких разделов (необязательно на
одном диске).
Понятия раздела и простого тома отличаются: во первых, разделы формируются, в основном, только на
жестких дисках, а тома создаются и на других устройствах внешней памяти (например на оптических
дисках и устройствах флеш памяти), во вторых, понятие "раздел" связано с физическим устройством, а
понятие "том" – с логическим представлением внешней памяти.
Сектор (sector) – блок данных фиксированного размера на диске; наименьшая единица информации
для диска. Типичный размер сектора для жестких дисков равен 512 байтам, для оптических дисков –
2048 байт. Деление диска на секторы происходит один раз при создании диска в процессе низкоуровневого
форматирования и обычно не может быть изменено.
Кластер (cluster) – логический блок данных на диске, включающий один или несколько секторов.
Количество секторов, составляющих кластер, обычно кратно степеням двойки. Размер кластера задается
операционной системой в процессе высокоуровневого форматирования, которое может осуществляться
многократно.
При записи на диск файл всегда будет занимать целое число кластеров. Например, файл размером
100 байт в файловой системе с размером кластера 4 КБ будет занимать ровно 4 КБ.
Выбор размера кластера связан со следующими соображениями. Малые кластеры позволяют сократить
размер фактически неиспользуемого дискового пространства, возникающего за счет размещения файла в
целом числе кластеров. Но при этом общее количество кластеров на диске увеличивается и размер
служебных структур файловой системы, в которых хранится информация о файлах, возрастает.
FAT
FAT (англ. File
Allocation
Table —
«таблица
размещения
файлов») —
классическая
архитектура файловой системы, которая из-за своей простоты всё ещё широко используется для флешнакопителей.
Существует четыре версии FAT — FAT8, FAT12, FAT16 и FAT32. Они отличаются разрядностью
записей в дисковой структуре, то есть количеством бит, отведённых для хранения номера кластера. FAT12
применяется в основном для дискет, FAT16 — для дисков малого объёма. На основе FAT была разработана
новая файловая система exFAT (extended FAT), используемая преимущественно для флеш-накопителей.
В файловой системе FAT смежные секторы диска объединяются в кластеры. Количество секторов в
кластере равно степени двойки. Для хранения данных файла отводится целое число кластеров (минимум
один), так что, например, если размер файла составляет 40 байт, а размер кластера 4 кбайт, реально занят
информацией файла будет лишь 1 % отведенного для него места. Для избегания подобных ситуаций
целесообразно уменьшать размер кластеров, а для сокращения объёма адресной информации и повышения
скорости файловых операций — наоборот. На практике выбирают некоторый компромисс. Так как емкость
диска вполне может и не выражаться целым числом кластеров, обычно в конце тома присутствуют т. н.
surplus sectors — «остаток» размером менее кластера, который не может отводиться ОС для хранения
информации.
Пространство тома FAT32 логически разделено на три смежные области:
 Зарезервированная область. Содержит служебные структуры, которые принадлежат загрузочной
записи раздела (Partition Boot Record — PBR, для отличия от Master Boot Record — главной загрузочной
записи диска; также PBR часто некорректно называется загрузочным сектором) и используются при
инициализации тома;
 Область таблицы FAT, содержащая массив индексных указателей («ячеек»), соответствующих
кластерам области данных. Обычно на диске представлено две копии таблицы FAT в целях надежности;
 Область данных, где записано собственно содержимое файлов — то есть текст текстовых файлов,
кодированное изображение для файлов рисунков, оцифрованный звук для аудиофайлов и т. д. — а также
т. н. метаданные — информация относительно имен файлов и папок, их атрибутов, времени создания и
изменения, размеров и размещения на диске.
Первая структура тома FAT называется BPB (англ. BIOS parameter block) и расположена в
зарезервированной области, в нулевом секторе. Эта структура содержит информацию, идентифицирующую
тип файловой системы и физические характеристики носителя (дискеты или раздела на жёстком диске).
NTFS
Возможности NTFS
 восстанавливаемость (recoverability) – способность файловой системы возвращаться к
работоспособному состоянию после возникновения сбоя. Реализуется такая возможность, во первых, за
счет поддержки атомарных транзакций, во вторых, за счет избыточности хранения информации. Атомарная
транзакция (atomic transaction) – операция с файловой системой, приводящая к её изменению, которая либо
полностью успешно выполняется, либо не выполняется вообще (т. е. в случае сбоя во время атомарной
транзакции все изменения откатываются). Избыточность используется при хранении важнейших данных
файловой системы, критически необходимых для её корректной работы;
 безопасность (security) – защищенность файлов от несанкционированного доступа. Реализуется при
помощи модели безопасности Windows, рассмотренной в лекции 9 "Безопасность в Windows";
 шифрование (encryption) – преобразование файла в зашифрованный код, который невозможно
прочесть без ключа. Обычные механизмы безопасности, такие как назначение прав доступа пользователей
к файлам, не обеспечивают полной защиты информации, например, в случае перемещения диска на другой
компьютер. Администратор операционной системы всегда может получить доступ к файлам других
пользователей, даже на томе NTFS. Поэтому в NTFS включена поддержка шифрующей файловой системы
EFS (Encrypting File System), которая позволяет легко зашифровывать и расшифровывать файлы;
 поддержка RAID (Redundant Array of Inexpensive (Independent) Disks – массив недорогих
(независимых) дисков с избыточностью) – возможность использования для хранения информации
нескольких дисков; данные с одного диска автоматически копируются на другие, обеспечивая тем самым
повышенную надежность;
 дисковые квоты для пользователей (Per-User Volume Quotas) – возможность выделения для каждого
пользователя определенного пространства на диске (квоты); NTFS не позволяет пользователю записывать
данные на диск сверх выделенной квоты.
Структура NTFS
В начале тома находится загрузочная запись тома
(Volume Boot Record), в которой содержится код
загрузки Windows, информация о томе (в частности, тип
файловой системы), адреса системных файлов ($Mft и
$MftMirr – см. далее). Загрузочная запись занимает
обычно 8 КБ (16 первых секторов).
В определенной области тома (адрес начала этой
области указывается в загрузочной записи) расположена основная системная структура NTFS –
главная таблица файлов (Master File Table, MFT). В записях этой таблицы содержится всяинформация о
расположении файлов на томе, а небольшие файлы хранятся прямо в записях MFT.
Важной особенностью NTFS является то, что вся информация, как пользовательская, так и системная,
хранится в виде файлов. Имена системных файлов начинаются со знака "$". Например,
загрузочная запись тома содержится в файле $Boot, а главная таблица файлов – в файле $Mft. Такая
организация информации позволяет единообразно работать как с пользовательскими, так и с системными
данными на томе.
Поскольку MFT является важнейшей системной структурой, к которой при операциях с томом
наиболее часто происходят обращения, выгодно хранить файл $Mft в непрерывной области логического
диска, чтобы избежать его фрагментации (размещения в разных областях диска), и, следовательно,
повысить скорость работы с ним. С этой целью при форматировании тома выделяется непрерывная
область,
называемая
зоной MFT (MFT Zone). По мере
увеличения
главной
таблицы
файлов, файл $Mft расширяется, занимая зарезервированное место в зоне.
Остальное место на томе NTFS отводится под файлы – системные и пользовательские.
Файлы NTFS
Как уже обсуждалось, основная информация о файле содержится в файловой записи (File Record)
размером 1 КБ таблицы MFT, а небольшие файлы целиком хранятся в файловой записи.
Файловая запись состоит из заголовка (Header) и набора атрибутов (Attribute). В заголовке содержится
служебная информация о файловой записи, например, её тип и размер. Все данные, относящиеся
непосредственно к файлу, хранятся в виде атрибутов. Названия атрибутов, так же как и системных файлов,
начинаются с "$". Например, отдельными атрибутами являются имя файла ($FILE_NAME), информация о
его
свойствах
($STANDARD_INFORMATION),
данные
файла
($DATA).
Типичная
файловая запись представлена на рис..
На диске файловая запись всегда расположена в начале сектора,
первые байты файловой записи кодируют слово "FILE" (ASCII-коды:
46 49 4C 45). Конец записи определяется 4 байтовой
последовательностью FF FF FF FF.
Физически атрибут файла хранится в виде потока байтов (stream)
– простой последовательности байтов. Такое представление позволяет
одинаковым образом работать с разнотипными атрибутами, а также
добавлять нестандартные пользовательские атрибуты.
Каждый атрибут состоит
из
заголовка
(attribute header),
определяющего тип атрибута и его свойства, и тела (attribute body), содержащего основную информацию
атрибута.
Изменение системных ресурсов Windows
Системными ресурсами называются коммуникационные каналы, адреса и сигналы, используемые
узлами компьютера для обмена данными с помощью шин. Обычно под системными ресурсами
подразумевают:
 адреса памяти;
 каналы запросов прерываний (IRQ);
 каналы прямого доступа к памяти (DMA);
 адреса портов ввода-вывода.
В приведенном списке системные ресурсы размещены в порядке уменьшения вероятности
возникновения из-за них конфликтных ситуаций в компьютере. Все системные ресурсы можно
просмотреть с помощью Диспетчера устройств (Пуск – Панель управления – Система – Оборудование –
Диспетчер устройств; ПКМ Мой компьютер – Диспетчер устройств). В список включаются все устройства,
которые обнаружены операционной системой, и, кроме того, в нем же обычно отображаются возникшие в
системе проблемы. Чтобы просмотреть сводку назначений системных ресурсов, в меню Диспетчера
выберите пункт «Вид | Ресурсы по типу» (View | Resource by type). В окне будут показаны все четыре типа
системных ресурсов, при необходимости можно просмотреть назначение каждого из них, например,
запросов на прерывание IRQ.
Наиболее распространенные проблемы связаны с ресурсами памяти и загрузкой ОС.
Одним из способов ускорения загрузки операционной системы является отключение ненужных
системных служб.
Служба – это механизм, который отвечает за работу одного или нескольких системных компонентов,
например удаленного доступа или оповещения. Вместе они организуют работу операционной системы и
поэтому многие из них зависят от работы остальных.
Все эти службы (или их большинство) загружаются со стартом операционной системы, поэтому
скорость загрузки системы увеличивается. В своей работе служба использует ресурсы компьютера,
которых никогда не бывает много.
Желание пользователя сделать так, чтобы ресурсы компьютера расходовались экономно и при этом
сохранялась максимальная производительность и скорость работы, логично.
Windows позволяет настраивать системные службы для каждой учетной записи, то есть для каждого
пользователя, зарегистрированного в системе. Это означает, что если вы настроили работу системных
служб для одного пользователя, то эта настройка не обязательно действует для остальных.
Каждая системная служба может находиться в одном из следующих режимов:
• авто – служба запускается автоматически с запуском операционной системы или как только нужна
какой-либо программе или другой службе;
• вручную – запускается только по требованию пользователя, то есть вручную;
• отключена – в данный момент служба не работает;
• автоматически (отложенный запуск) – позволяет автоматически запустить службу при следующей
перезагрузке компьютера или смене пользователя.
Отобразите список служб. Один из способов сделать это – нажать правую кнопку мыши на
иконке Мой компьютер и выбрать в появившемся меню пункт Управление.
Появится окно Управление компьютером, в котором сосредоточены механизмы администрирования
операционной системы.
Чтобы получить список системных служб, откройте слева пункт Службы и приложения и
выберите Службы. По умолчанию используется расширенный режим отображения информации, который
заметно уменьшает полезную область, поэтому для удобства выберите стандартный способ отображения,
перейдя на вкладку Стандартный.
Служб много, и каждая отвечает за определенный участок администрирования. О предназначении той
или иной службы можно коротко прочесть в Описании или дважды щелкнув кнопкой мыши на службе.
Кроме стандартных в списке присутствуют другие службы, которые могут устанавливаться прикладными
программами.
Чтобы обезопасить себя от возможного сбоя в работе компьютера в результате отключения тех или
иных
служб,
перед
их
отключением
желательно
сохранить
копию
ветки
реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
ТЕМА 2. OS Windows: загрузка, настройка, управление, обслуживание
2.1 Каталоги,
корневой каталог. Загрузчик ОС, этапы загрузки ОС. Системный
диск.
Каталоги, корневой каталог. Дерево каталогов. Каталоги в UNIX.
Каталог (англ. Directory — справочник, указатель) — объект в файловой системе, упрощающий
организацию файлов. Типичная файловая система содержит большое количество файлов и каталоги
помогают упорядочить её путём их группировки.
В информатике используется следующее определение: каталог — поименованная совокупность байтов
на носителе информации, содержащая название подкаталогов и файлов.
Каталог, прямо или косвенно включающий в себя все прочие каталоги и файлы файловой системы,
называется корневым. В Unix-подобных ОС он обозначается символом “/” (дробь, слеш), в DOS и Windows
исторически используется символ “\” (обратный слеш), но с некоторого времени поддерживается и “/”.
Текущим называется каталог, с которым работает ОС, если ей не указать другого каталога. Он
обозначается точкой (.).
Родительским каталогом называется каталог, в котором находится текущий. Он обозначается двумя
точками (..).
Каталог, который не является подкаталогом ни одного другого каталога, называется корневым. Это
значит, что этот каталог находится на самом верхнем уровне иерархии всех каталогов. В Windows каждый
из дисков имеет свой корневой каталог (C:\, D:\ и т.д).
Каталоги в Windows бывают системные (служебные, созданные ОС) и пользовательские (созданные
пользователем). Пример системных каталогов: «Рабочий стол», «Корзина», «Сетевое окружение», «Панель
управления», каталоги логических дисков и т.п.
Термин папка (англ. folder) был введён для представления объектов файловой системы в графическом
пользовательском интерфейсе путём аналогии софисными папками. Он был впервые использован в Mac
OS, а в системах семейства Windows — с выходом Windows 95. Эта метафора стала использоваться в
большом числе операционных систем: Windows NT, Mac OS, Mac OS X, а также в средах рабочего стола
для систем семейства UNIX (например, KDE и GNOME).
В этой терминологии папка, находящаяся в другой папке, называется подпапка, вложенная папка или
дочерняя папка. Все вместе папки на компьютере представляют иерархическую структуру
(дерево каталогов). Подобная древообразная структура возможна в операционных системах, не
допускающих существование «физических ссылок» (Windows 3.x и 9x допускали только аналог
символических ссылок — ярлыков). В общем случае файловая система представляет собой
ориентированный граф.
Каталог в UNIX — это файл, содержащий несколько inode и привязанные к ним имена. В
современных UNIX-подобных ОС вводится структура каталогов, соответствующая стандарту FHS.
Inode, индексный дескриптор - это структура данных в традиционных для ОС UNIX файловых
системах, таких как UFS. В этой структуре хранится метаинформация о стандартных файлах, каталогах или
других объектах файловой системы, кроме непосредственно данных и имени.
В корневом каталоге ОС UNIX (root) содержится вся иерархия системы. Он не может быть
классифицирован, т.к. его подкаталоги могут быть статическими или разделяемыми.
Список главных каталогов и подкаталогов с их классификациями:
 /bin: важнейшие бинарные файлы. Он содержит базовые команды, которые могут использоваться
всеми пользователями, и которые являются необходимыми для работы системы: ls, cp, login и др.
Статический, неразделяемый.
 /boot:
содержит
файлы,
необходимые
для
начального
загрузчика GNU/Linux (GRUB или LILO для Intel, yaboot для PPC и т.п.). В нем может находится ядро, но
если ядро в этом каталоге отсутствует, тогда оно должно быть в корневом каталоге. Статический,
неразделяемый.
 /dev: файлы системных устройств (dev от англ. DEVices). Некоторые файлы, находящиеся в /dev,
являются обязательными, такие как/dev/null, /dev/zero и /dev/tty. Статический, неразделяемый.
 /etc: содержит все конфигурационные файлы этого компьютера. Этот каталог не может содержать
бинарные файлы. Статический, неразделяемый.
 /home: содержит все личные каталоги пользователей системы. Этот каталог может быть
разделяемым (в некоторых больших сетях к нему открывается общий доступ через NFS).
Конфигурационные файлы ваших любимых приложений (типа почтовых клиентов и браузеров)
располагаются в этом каталоге и начинаются с точки («.»). Например, конфигурационные
файлы Mozilla находятся в каталоге .mozilla. Переменный, разделяемый.
 /lib: содержит библиотеки, жизненно необходимые для системы; в нем также хранятся модули ядра
в подкаталоге /lib/modules/ВЕРСИЯ_ЯДРА. Он содержит все библиотеки, необходимые для работы
бинарных файлов из каталогов /bin и /sbin. Также в этом каталоге должны находится: необязательный
компоновщик на этапе выполнения или загрузчик ld*, а также динамически подключаемая библиотека
Сlibc.so. Статический, неразделяемый.
 /mnt: содержит точки монтирования для временно монтируемых файловых систем, таких
как /mnt/cdrom, /mnt/floppy и т.п. Каталог /mntтакже используется для монтирования временных каталогов
(карта USB, например, будет примонтирована в /mnt/removable). Переменный, неразделяемый.
 /opt: содержит пакеты не слишком важные для работы системы. Он зарезервирован для
дополнительных пакетов; пакеты типа Adobe Acrobat Reader часто устанавливаются в /opt. FHS
рекомендует, чтобы статические файлы (бинарники, библиотеки, страницы руководств и т.п.),
устанавливаемые в каталог /opt, помещались бы в его подкаталоги /opt/имя_пакета, а их конфигурационные
файлы - в /etc/opt.
 /root: домашний каталог root'а. Переменный, неразделяемый.
 /sbin: содержит системные бинарные файлы, необходимые для запуска системы. Большинство этих
файлов могут запускаться толькоroot'ом. Обычный пользователь тоже может запустить их, но результат их
работы может остаться нулевым. Статический, неразделяемый.
 /tmp: каталог предназначен для хранения временных файлов, которые могут быть создаваны
программами. Переменный, неразделяемый.
 /usr: статический, разделяемый.
 /var: место для размещения данных, которые могут изменяться программами в режиме реального
времени (такими как почтовые серверы, программы наблюдения, серверы печати и др.). Переменный.
Отдельные его подкаталоги могут быть разделяемыми или неразделяемыми.
Загрузчик ОС, этапы загрузки ОС. Master Boot Record (MBR). Загрузка ОС.
Инициализация компьютера является процессом, а не событием. За время, проходящее с момента
включения питания до появления на мониторе приглашения командной строки или графического
интерфейса ОС, выполняется вполне определенная последовательность операций по проверке системы и
подготовке ее к работе. Для того чтобы более четко представлять себе взаимодействие программного
обеспечения и аппаратных средств, вы должны хорошо понимать, что происходит на каждом из этапов
инициализации компьютера. Знание деталей этого процесса поможет вам в поиске и локализации
неисправностей, возникающих в системе во время ее загрузки. В этом разделе последовательно
описываются все стадии инициализации типичного компьютера.
Инициализация компьютера начинается после его включения. Если блок питания вырабатывает все
необходимые напряжения, то в нем формируется сигнал высокого уровня PowerGood (Питание в норме).
Смомента включения питания до появления этого сигнала проходит от 100 до 500 мс. Он поступает на
микросхему формирования синхросигналов (таймер) системной платы, которая в результате прекращает
выработку сигнала сброса для процессора. С этого момента начинается работа процессора.
Термин boot (загрузка) происходит от слова bootstrap (ремешок на заднике ботинка, помогающий
надеть его на ногу. — Прим. ред.) и возник по ассоциации с методом, посредством которого персональный
компьютер приводится в рабочее состояние. Как вы натягиваете большой ботинок, держась за маленький
ремешок, так и персональный компьютер загружает сначала небольшую программу, которая затем
«втаскивает» за собой операционную систему. Первой операцией, которую выполняет процессор, является
выборка команды из ячейки памяти с адресом FFFF:OOO0h. Поскольку указанная ячейка отстоит всего на
16 шагов от конца отведенного для ПЗУ адресного пространства, в ней содержится инструкция перехода
(JMP) на реальный начальный адрес системной BIOS. Стандартизация адреса первой исполняемой
процессором инструкции необходима потому, что ПЗУ BIOS уникальны для каждого типа системной
платы, и коды микропрограмм могут располагаться по самым разным адресам.
Проверка ядра системы — это составная часть процедуры POST, которая, в свою очередь, является
важнейшей операцией, выполняемой BIOS на этапе инициализации компьютера. Нетрудно понять, что если
позволить системе начать работать при наличии неисправностей на системной плате, в модулях памяти или
дисковой подсистеме, то это может привести к катастрофическим последствиям для данных, как
загруженных в память, так и хранящихся на дисках. Проверка целостности системы производится с
помощью серии специализированных подпрограмм самотестирования основных компонентов системной
платы. Кроме того, на этом этапе производится поиск и идентификация других специализированных BIOS
(контроллера накопителей, видеосистемы, контроллера SCSI и т.д.).
BIOS начинает работу с проверки устройств, смонтированных на системной плате: процессора и
сопроцессора, микросхемы формирования синхросигналов (таймера), контроллера прямого доступа к
памяти (DMA — Direct Memory Access) и контроллера прерываний (IRQ — Interrupt ReQuesi). Если
неисправность обнаруживается на этой ранней стадии выполнения проверок, то генерируется определенная
последовательность звуковых сиг налов (звуковой код ошибки). Звуковая сигнализация используется по
той причине, что видеосистема на этом этапе еще не инициализирована. Зная фирму-разработчика BIOS,
вы можете по звуковому коду определить характер обнаруженной неисправности. Подробные сведения о
звуковых и иных диагностических кодах приведены в Книге 2.
На следующем этапе BIOS производит поиск ПЗУ видеосистемы в диапазоне адресов от C000:0000h до
C780:0000h. Практически во всех системах этот поиск заканчивается обнаружением BIOS, записанной в
смонтированной на плате видеоадаптера микросхеме ПЗУ (речь идет об отдельном адаптере,
установленном в слот расширения). После обнаружения ПЗУ BIOS видеоадаптера выполняется
тестирование его содержимого (проверка контрольных сумм). Если тест завершается успешно, то
управление передается BIOS видеосистемы, которая инициализирует видеоадаптер. После завершения его
инициализации на экране монитора появляется курсор, а управление возвращается системной BIOS. Если
BIOS отдельного видеоадаптера не обнаруживается, то системная BIOS выполняет процедуру
инициализации видеоконтроллера, смонтированного на системной плате, что также приводит к появлению
курсора на экране монитора. После инициализации видеосистемы на экране монитора, как правило,
появляется текст, в котором содержится информация о фирме-разработчике системной BIOS и BIOS
видеосистемы, а также номера их версий. Если проверка контрольных сумм завершается неудачно, то на
дисплей выводится сообщение об ошибке наподобие «С000 ROM Error» (Ошибка в ПЗУ по адресу С000)
или «Video ROM Error» (Ошибка в ПЗУ видеосистемы). В такой ситуации процесс инициализации, как
правило, прекращается.
Если видеосистема готова к работе, то системная BIOS сканирует память в диапазоне адресов от
C800:0000h до DF80:0000h (с шагом 2 Кбайт) в поисках ПЗУ, которые могут быть установлены на других
платах адаптеров. При обнаружении таких микросхем прриз-водится проверка их контрольных сумм, и
исполняются записанные в них программные инструкции. При этом на экран монитора выводится
информация о фирме-разработчике BIOS адаптера и номер ее версии. В некоторых случаях записанные в
дополнительных (установленных на платах адаптеров) ПЗУ программные инструкции могут подменять
собой процедуры системой BIOS. Например, BIOS, встроенная в плату контроллера UltraDMA/133,
заменяет собой процедуры управления накопителями, входящие в системную BIOS. Если проверка
контрольных сумм какого-либо ПЗУ завершается неудачно, то на дисплей выводится сообщение об ошибке
наподобие «ХХХХ ROM Error» (Ошибка в ПЗУ по адресу ХХХХ), где ХХХХ — сегментный адрес, по
которому обнаружено неисправное ПЗУ. При обнаружении неисправного ПЗУ процесс инициализации
системы, как правило, прекращается.
После проверки ядра системы BIOS проверяет значение слова в ячейке памяти 0000:0472, чтобы
выяснить, является ли данный запуск системы «горячим» (после нажатия на кнопку сброса или на клавиши
CTRL+ALT+DEL) или «холодным» (после включения питания). Если значение слова, записанного в этой
ячейке, равно 1234h, то это является признаком «горячего» запуска, при котором в процедуре POST
пропускается операция тестирования системной памяти. Любое другое значение указанного слова
свидетельствует о «холодном» запуске, и процедура POST в этом случае выполняется в полном объеме.
При выполнении полной процедуры POST проверяется функционирование системной платы, памяти,
клавиатуры, видеосистемы, накопителей на гибких и жестких дисках, сопроцессора, последовательного и
параллельных портов и других подсистем. В обшей сложности количество тестов достигает нескольких
десятков. При обнаружении неисправности в порт ввода/вывода с адресом 80h посылается однобайтный
код ошибки, который может быть считан и зафиксирован специальной диагностической платой (адапте
ром), установленной в один из слотов расширения. Если видеосистема уже запушена, то сообщение об
ошибке может появиться на экране монитора (после чего дальнейшая инициализация системы
прекращается). Следует иметь в виду, что коды ошибок процедуры POST и их расшифровки могут быть
различными для BIOS разных фирм-разработчиков. Подробнее об этих кодах рассказано в гл. «Коды
ошибок» (входит во вторую книгу). Если процедура POST завершается успешно, то из встроенной в
системный блок динамической головки раздается короткий одиночный звуковой сигнал.
После завершения процедуры POST компьютер готов к загрузке операционной системы. Вначале BIOS
пытается найти загрузочный сектор тома ( VBS — Volume Boot Sector) на дискете А:. Если дискета не
вставлена в дисковод, то BIOS обратится к следующему накопителю, перечисленному в загрузочном
списке (он указывается при настройке параметров BIOS, обычно это накопитель С:). Если же в дисководе
А: дискета будет обнаружена, то BIOS загрузит содержимое ее VBS (головка 0, цилиндр 0, сектор 1 —
начальный сектор диска) в память по адресу 0000:7C00h и проверит выполнение следующих условий.
Если значение первого байта VBS на дискете А: меньше, чем 06h, или оно больше или равно 06h, но
при этом первые девять слов одинаковы, то появляется сообщение об ошибке наподобие «602 — Diskette
Boot Record Error* ( Ошибка в загрузочной записи дискеты).
Если системные файлы IO.SYS и MSDOS.SYS не являются первыми в корневом каталоге, или
возникают проблемы с их загрузкой, то вы увидите следующее сообщение: «Non-System disk or disk error*
(Несистемный диск или ошибка на диске),
Если дискета была подготовлена программами FORMAT или SYS, входящими в DOS 3.3 или более
раннюю версию, a VBS поврежден, то вы увидите сообщение: «Disk Boot failure* (Не удается произвести
загрузку с диска).
Если при считывании загрузочного сектора дискеты и проверке его содержимого проблем не возникло,
то сначала загружается первый файл из каталога (IO.SYS), а затем настает очередь файла MSDOS.SYS.
Если операционную систему не удастся загрузить с дискеты, то BIOS предпринимает попытку сделать это с
первого стационарного накопителя (жесткого диска). Загрузить ОС с жесткого диска несколько сложнее,
чем с гибкого. В первую очередь BIOS разыскивает главный загрузочный сектор (MBS— Master Boot
Sector, другое название MBR— Master Boot Record) на первом жестком диске (цилиндр 0, головка 0, сектор
1 — начальный сектор диска). Если MBS найден, тоего содержимое загружается в область памяти с
начальным адресом 0000:7СОО и подвергается проверке на предмет наличия специального ключевого кода
— сигнатуры. Этот код есть ни что иное, как два последних байта MBS; если они не равны соответственно
55h и AAh; то выводится сообщение об ошибке вида «No boot device available* (Загрузочноеустройство
недоступно), и инициализация системы прекращается. Сообщение об ошибке, в зависимости от фирмыразработчика BIOS, может быть и иным, а в некоторых старых системах предпринимается попытка
запустить встроенный интерпретатор BASIC (в первых персональных компьютерах интерпретатор языка
Бейсик хранился в ПЗУ системной BIOS, что давало возможность пользователям работать с компьютером
даже в отсутствие операционной системы. — Прим. ред.). Если интерпретатор в ПЗУ системной BIOS
отсутствует (практически наверняка это именно так, поскольку от него отказались лет 15 назад), то
появляется сообщение об ошибке наподобие «SYSTEM HALTED* (Система остановлена).
Если проверка сигнатуры MBS жесткого диска завершается успешно, то записанная в нем
микропрограмма разыскивает в таблице разбиения MBS запись с системными индикаторными байтами,
указывающими на наличие расширенного раздела. Если программанаходит такую запись, то она считывает
содержимое загрузочного сектора расширенного раздела (содержимое этого сектора называется
расширенной загрузочной записью или EBR — Extended Boot Record), найдя его в указанном месте диска.
Частью EBR также является таблица, в которой может содержаться указание на следующий расширенный
раздел. Если такая запись найдена, то с указанного места на диске считывается еще одна EBR. Поиск
продолжается дотех пор, пока не будут исчерпаны все указания на наличие расширенных разделов или их
количество не достигнет максимального — 24. Кроме того, предпринимается попытка найти в таблице
разбиения MBS индикаторные байты загрузки, которыми помечается активный раздел. Если значение
какого-либо индикаторного байта загрузки в таблице разбиения MBS задано некорректно, или если в
качестве активных указано несколько разделов, то работа системы прекращается, и на дисплее появляется
следующее сообщение наподобие « Invalid partition table» (Неверная таблица разбиения). В старых
системах в подобной ситуации предпринимается попытка вызвать встроенный интерпретатор BASIC — с
соответствующими последствиями.
Если в MBS обнаруживается запись об активном разделе, то загружается и проверяется содержимое
его VBS. Если VBS активного раздела не может быть прочитан за пять попыток (из-за ошибок считывания),
то работа системы прекращается и появляется сообщение наподобие « Error loading operating System»
(Ошибка при загрузке операционной системы).
Если VBS активного раздела считывается успешно, то его содержимое проверяется на наличие
сигнатуры. Если последние два байта сектора не равны контрольному значению SSh и AAh, то работа
системы прекращается и появляется сообщение «Missing operating system* (Операционная система
отсутствует).
Если проверка сигнатуры VBS активного раздела завершается успешно, то запускается на исполнение
записанная в нем микропрограмма. Она проверяет корневой каталог тома и выясняет, доступны ли два
файла ядра операционной системы — IO.SYS и MSDOS.SYS (или IBMBIO.COM и IBMD0S.COM для PC
DOS). В старых MS-DOS версиях файлы IO.SYS и MSDOS.SYS должны быть перечислены в каталоге
первыми. Если загрузочный сектор тома был создан под управлением MS-DOS 3.3 или более ранней версии
и два упомянутых файла не указаны первыми (или возникла ошибка при их загрузке), то выводится
сообщение «Non-System disk or disk error* (Несистемный диск или ошибка на диске). При повреждении
VBS выводится сообщение наподобие «Disk Boot failure* (Не удается произвести загрузку с диска).
Если с загрузочным сектором тома DOS проблем не возникает, то загружается на исполнение файл
IO.SYS (или IBMBI0.COM). Аналогом IO.SYS может быть файл WINBOOT.SYS, который и будет запущен
на исполнение. В файл IO.SYS входят программы низкого уровня, взаимодействующие с BIOS и
дополняющие ее: драйверы клавиатуры, принтера и т.п. Кроме того, частью файла IO.SYS является
программный код инициализации, который исполняется только при запуске системы. Эта программа
копирует саму себя в максимально удаленную область не фрагментированной основной памяти DOS и
передает управление этой копии. На следующем этапе выполняется загрузка файла MSDOS.SYS (или
IBMD0S.COM), причем осуществляется она таким образом, что код MSDOS.SYS замещает в памяти ту
часть файла IO.SYS, в которой содержится код инициализации (поскольку в этой области памяти он
больше не нужен). После загрузки файла MSDOS.SYS (ядра MS-DOS) исполняется его программный код, в
результате чего происходит запуск драйверов основных устройств, определяется состояние аппаратной
части, происходит сброс дисковой подсистемы, сброс и инициализация внешних коммуникационных
устройств (параллельного и последовательных портов) и устанавливаются принятые по умолчанию
значения параметров системы. В итоге все основные компоненты MS-DOS оказываются загруженными в
память, и управление возвращается программе инициализации файла IO.SYS (WINBOOT.SYS).
В Windows 2000/ХР загрузчиком операционной системы является файл NTLDR.
Если на диске присутствует файл CONFIG.SYS, то программа инициализации, входящая в состав
файла IO.SYS или WINBOOT.SYS, просматривает его несколько раз. В процессе первого просмотра
выполняются операторы DEVICE (в том порядке, в котором они записаны) и загружаются указанные в них
драйверы. В процессе второго просмотра выполняются операторы INSTALL (в том порядке, в котором они
записаны) и загружаются и выполняются указанные в них программы. В процессе третьего просмотра
исполняется оператор SHELL, в результате чего загружается указанный в нем командный процессор с
заданными параметрами. Если оператор SHELL не включен в файл CONFIG.SYS, то в этом случае
загружается процессор COMMAND.COM (т.е. первый встреченный в корневом каталоге загрузочного
диска файл с указанным именем) с параметрами, принятыми по умолчанию. При загрузке командного
процессора программа инициализации стирается из памяти (поскольку ее миссия на этом заканчивается). В
Windows 95/98 программа C0MMAND.COM загружается лишь тогда, когда на диске существует файл
AUTOEXEC.BAT, поскольку только в этом случае могут быть выполнены записанные в нем команды. В
процессе последнего просмотра исполняются в заранее определенном порядке все остальные операторы.
Поэтому порядок появления в файле CONFIG.SYS прочих операторов, кроме DEVICE, INSTALL и SHELL,
не имеет значения. Кроме того, программа инициализации, входящая в состав файла WINBOOT.SYS,
разыскивает и просматривает файл реестра SYSTEM.DAT.
Если на диске присутствует файл AUTOEXEC.BAT, то командный процессор СОМ-MAND.COM
запускает его на исполнение. После выполнения команд, включенных в файл AUTOEXEC.BAT, появляется
приглашение командной строки DOS (если только при исполнении AUTOEXEC.BAT не будет вызвано
какое-нибудь приложение или программа-оболочка — в этом случае пользователь может приступить к
работе, вообще не увидев командной строки DOS). Если файл AUTOEXEC.BAT отсутствует, то процессор
C0MMAND.COM выполняет встроенные команды DATE и TIME, выводит сообщение об авторских правах
и появляется приглашение командной строки DOS, из которой вы можете запустить прикладную
программу или ввести какую-либо команду. Запустить приложение или программную оболочку (например,
Windows 3.x) можно и из файла AUTOEXEC.BAT. В Windows 95/98 при выполнении программы
инициализации, входя-шей в состав файла IO.SYS или WINBOOT.SYS, автоматически загружаются
драйверы HIMEM.SYS, IFSHLP.SYS и файл SETVER.EXE. Последним запускается на исполнение файл
WIN.COM, и начинается сеанс работы Windows.
Операционные системы. Функции операционных систем. Ядро операционной системы.
Операционная система, ОС (англ. operating system, OS) — комплекс управляющих и
обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами
вычислительной системы и прикладными программами, а с другой стороны — предназначены для
управления устройствами, управления вычислительными процессами, эффективного распределения
вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений. Это
определение применимо к большинству современных операционных систем общего назначения.
В логической структуре типичной вычислительной системы операционная система занимает
положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными
(встроенными) микропрограммами — с одной стороны — и прикладными программами с другой.
Разработчикам программного обеспечения операционная система позволяет абстрагироваться от
деталей реализации и функционирования устройств, предоставляя минимально необходимый набор
функций
В большинстве вычислительных систем операционная система является основной, наиболее важной (а
иногда и единственной) частью системного программного обеспечения. С 1990-х годов наиболее
распространёнными операционными системами являются системы семейства Windows и системы класса
UNIX (особенно Linux и Mac OS).
Основные функции:
 Исполнение запросов программ (ввод и вывод данных, запуск и остановка других программ,
выделение и освобождение дополнительной памяти и др.).
 Загрузка программ в оперативную память и их выполнение.
 Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).
 Управление оперативной памятью (распределение между процессами, организация виртуальной
памяти).
 Управление доступом к данным на энергонезависимых носителях (таких как жёсткий
диск, оптические диски и др.), организованным в той или иной файловой системе.
 Обеспечение пользовательского интерфейса.
 Сохранение информации об ошибках системы.
Дополнительные функции:
 Параллельное или псевдопараллельное выполнение задач (многозадачность).
 Эффективное распределение ресурсов вычислительной системы между процессами.
 Разграничение доступа различных процессов к ресурсам.
 Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно
или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к
ресурсам.
 Взаимодействие между процессами: обмен данными, взаимная синхронизация.
 Защита самой системы, а также пользовательских данных и программ от действий пользователей
(злонамеренных или по незнанию) или приложений.
 Многопользовательский
режим
работы
и
разграничение
прав
доступа
(см.: аутентификация, авторизация).
Наиболее общим подходом к структуризации операционной системы является разделение всех ее
модулей на две группы:
 ядро — модули, выполняющие основные функции ОС;
 модули, выполняющие вспомогательные функции ОС.
Рис. Архитектура Windows
Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью,
устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы, без него ОС
является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
Диспетчер системных сервисов (System Service Dispatcher) работает в режиме ядра, перехватывает
вызовы функций от Ntdll.dll, проверяет их параметры и вызывает соответствующие функции из
Ntoskrnl.exe.
Исполнительная система и ядро содержатся в Ntoskrnl.exe (NT Operating System Kernel –
ядро операционной системы NT).
Исполнительная система (Executive) представляет собой совокупность компонентов (называемых
диспетчерами – manager), которые реализуют основные задачи операционной системы:
 диспетчер процессов (process manager) – управление процессами и потоками;
 диспетчер памяти (memory manager) – управление виртуальной памятью и отображение её на
физическую;
 монитор контроля безопасности (security reference monitor) – управление безопасностью;
 диспетчер ввода вывода (I/O manager), диспетчер кэша (cache Manager), диспетчер Plug and Play
(PnP Manager) – управление внешними устройствами и файловыми системами;
 диспетчер электропитания (power manager) – управление электропитанием и энергопотреблением;
 диспетчер объектов (object manager), диспетчер конфигурации (configuration manager), механизм
вызова локальных процедур (local procedure call) – управление служебными процедурами и структурами
данных, которые необходимы остальным компонентам.
Ядро (Kernel) содержит функции, обеспечивающие поддержку компонентам исполнительной системы
и осуществляющие планирование потоков, механизмы синхронизации, обработку прерываний.
Компонент Windows USER и GDI отвечает
за
пользовательский
графический интерфейс (окна, элементы управления в окнах – меню, кнопки и т. п., рисование), является
частью подсистемы Windows и реализован в драйвере Win32k.sys.
Взаимодействие диспетчера ввода вывода с устройствами обеспечивают драйверы (drivers) –
программные модули, работающие в режиме ядра, обладающие максимально полной информацией о
конкретном устройстве.
Однако, и драйверы, и ядро не взаимодействуют с физическими устройствами напрямую –
посредником
между
программными
компонентами
режима
ядра
и
аппаратурой
является HAL (Hardware Abstraction Layer) – уровень абстрагирования от оборудования, реализованный
в Hal.dll. HAL позволяет скрыть от всех программных компонентов особенности аппаратной платформы
(например, различия между материнскими платами), на которой установлена операционная система.
Диспетчеризация задач в операционной системе
Известно большое количество дисциплин диспетчеризации, то есть правил формирования очереди
готовых к выполнению задач, в соответствии с которыми формируется эта очередь (список). Иногда их
называют дисциплинами обслуживания, опуская тот факт, что речь идет о распределении процессорного
времени. Одни дисциплины диспетчеризации дают наилучшие результаты для одной стратегии
обслуживания, в то время как для другой стратегии они могут быть вовсе неприемлемыми. Известно
большое количество дисциплин диспетчеризации. Рассмотрим только те, которые признаны наиболее
эффективными и до сих пор имеют применение.
Прежде всего, различают два больших класса дисциплин обслуживания: бесприоритетные и
приоритетные.
При бесприоритетном обслуживании выбор задач производится в некотором заранее установленном
порядке без учета их относительной важности и времени обслуживания.
При
реализации
приоритетного
обслуживания
отдельным
задачам
предоставляется
преимущественное право попасть в состояние исполнения. Перечень дисциплин обслуживания и их
классификация приведены на рис. 1.
В концепции приоритетов имеем следующие варианты:
1) приоритет, присвоенный задаче, является величиной постоянной;
2) приоритет изменяется в течение времени решения задачи (динамический приоритет).
Диспетчеризация с динамическими приоритетами требует дополнительных расходов на вычисление
значений приоритетов исполняющихся задач, поэтому во многих операционных системах реального
времени используются методы диспетчеризации на основе абсолютных приоритетов. Это позволяет
сократить время реакции системы на очередное событие, однако требует детального анализа всей системы
для правильного присвоения соответствующих приоритетов всем исполняющимся задачам с тем, чтобы
гарантировать обслуживание. Рассмотрим некоторые основные (наиболее часто используемые)
дисциплины диспетчеризации.
Самой простой в реализации является дисциплина FCFS (First Come First Served — первым пришел,
первым обслужен), согласно которой задачи обслуживаются «в порядке очереди», то есть в порядке их
появления. Те задачи, которые были заблокированы в процессе работы (попали в какое-либо из состояний
ожидания, например из-за операций ввода-вывода), после перехода в состояние готовности вновь ставятся
в эту очередь готовности. При этом возможны два варианта.
Первый (самый простой) — это ставить
разблокированную задачу в конец очереди готовых
к выполнению задач. Этот вариант применяется
чаще всего.
Второй вариант заключается в том, что
диспетчер помещает разблокированную задачу
перед теми задачами, которые еще не
выполнялись. Другими словами, в этом случае
образуется две очереди (рис. 2): одна очередь
образуется из новых задач, а вторая очередь — из
ранее выполнявшихся, но попавших в состояние
ожидания.
Дисциплина обслуживания SJN (Shortest Job Next — следующим выполняется самое короткое
задание) требует, чтобы для каждого задания была известна оценка в потребностях машинного времени.
Необходимость сообщать операционной системе характеристики задач с описанием потребностей в
ресурсах вычислительной системы привела к тому, что были разработаны соответствующие языковые
средства. В частности, ныне уже забытый язык JСL (Job Control Language — язык управления заданиями)
был одним из наиболее известных. Пользователи вынуждены были указывать предполагаемое время
выполнения задачи и для того, чтобы они не злоупотребляли возможностью указать заведомо меньшее
время выполнения (с целью возможности получить результаты раньше других), ввели подсчет реальных
потребностей. Диспетчер задач сравнивал заказанное время и время выполнения и в случае превышения
указанной оценки потребности в данном ресурсе ставил данное задание не в начало, а в конец очереди. Еще
в некоторых операционных системах в таких случаях использовалась система штрафов, при которой в
случае превышения заказанного машинного времени оплата вычислительных ресурсов осуществлялась уже
по другим расценкам.
Дисциплина обслуживания SJN предполагает, что имеется только одна очередь заданий, готовых к
выполнению. Задания, которые в процессе своего исполнения были временно заблокированы (например,
ожидали завершения операций ввода-вывода), вновь попадали в конец очереди готовых к выполнению
наравне с вновь поступающими. Это приводило к тому, что задания, которым требовалось очень немного
времени для своего завершения, вынуждены были ожидать процессор наравне с длительными работами,
что не всегда хорошо.
Для устранения этого недостатка и была предложена дисциплина SRT (Shortest Remaining Time) —
следующим будет выполняться задание, которому осталось меньше всего выполняться на процессоре.
Все эти три дисциплины обслуживания могут использоваться для пакетных режимов обработки, когда
пользователю не нужно ждать реакции системы — он просто сдает свое задание и через несколько часов
получает результаты вычислений. Для интерактивных же вычислений желательно прежде всего обеспечить
приемлемое время реакции системы. Если же система является мультитерминальной, то помимо малого
времени реакции системы на запрос пользователя желательно, чтобы она обеспечивала и равенство в
обслуживании. Можно сказать, что стратегия обслуживания, согласно которой главным является равенство
обслуживания при приемлемом времени обслуживания, является главной для систем разделения времени.
Качество диспетчеризации и гарантии обслуживания
Одна из проблем, которая возникает при выборе подходящей дисциплины обслуживания — это
гарантия обслуживания. Дело в том, что в некоторых дисциплинах, например в дисциплине абсолютных
приоритетов, низкоприоритетные процессы получаются обделенными многими ресурсами и, прежде всего,
процессорным временем. Возникает реальная дискриминация низкоприоритетных задач, в результате чего
они достаточно длительное время могут не получать процессорное время.
Гарантировать обслуживание можно, например, следующими тремя способами:
1) Выделять минимальную долю процессорного времени некоторому классу процессов, если по
крайней мере один из них готов к исполнению. Например, можно отводить 20 % от каждых 10 мс
процессам реального времени, 40 % от каждых 2 с — интерактивным процессам и 10 % от каждых 5 мин —
пакетным (фоновым) процессам.
2) Выделять минимальную долю процессорного времени некоторому конкретному процессу, если он
готов к выполнению.
3) Выделять столько процессорного времени некоторому процессу, чтобы он мог выполнить свои
вычисления к сроку.
Для сравнения алгоритмов диспетчеризации обычно используются следующие критерии.
1) Загрузка центрального процессора (CPU utilization). В большинстве персональных систем средняя
загрузка процессора не превышает 2-3 %, доходя в моменты выполнения сложных вычислений и до 100 %.
В реальных системах, где компьютеры (например, серверы) выполняют очень много работы, загрузка
процессора колеблется в пределах от 15-40 % (для легко загруженного процессора) до 90-100 % (для
тяжело загруженного процессора).
2) Пропускная способность центрального процессора (CPU throughput). Пропускная способность
процессора может измеряться количеством процессов, которые выполняются в единицу времени.
3) Время оборота (turnaround time). Для некоторых процессов важным критерием является полное
время выполнения, то есть интервал от момента появления процесса во входной очереди до момента его
завершения. Это время названо временем оборота и включает время ожидания во входной очереди, время
ожидания в очереди готовых процессов, время ожидания в очередях к оборудованию, время выполнения в
процессоре и время ввода-вывода.
4) Время ожидания (waiting time). Под временем ожидания понимается суммарное время нахождения
процесса в очереди готовых процессов.
5) Время отклика (response time). Для интерактивных программ важным показателем является время
отклика, или время, прошедшее от момента попадания процесса во входную очередь до момента первого
обращения к терминалу. Очевидно, что простейшая стратегия краткосрочного планировщика должна быть
направлена на максимизацию средних значений загруженности и пропускной способности, времени
ожидания и времени отклика.
Настройка и оптимизация Windows XP с помощью утилит.
Какой бы совершенной не была ОС, она нуждается в настройке под личные вкусы пользователей и
определенной оптимизации. Большинство настроек спрятяно в реестре, но далеко не каждый может
провести этот процесс. Это знают некоторые программисты, поэтому и были созданы многие программынастройщики. Ниже рассматриваются, основные программы-твикеры, которые могут почти всё.
I. Tweak-XP. Считается одной из лучших утилит для тонкой настройки Windows XP. Удобный
интерфейс, быстрая работа и широкий охват настроек, - все это характерно для нее. Программа имеет
четыре раздела: улучшение общей производительности системы в целом, ускорение файловой системы,
повышение скорости работы с Интернетом и настройка файлов помощи, а также настройка других
программ.
Tweak-XP объединяет в себе 22 важные утилиты, которые должны существенно облегчить жизнь
пользователю. Это и блокирование открывающихся окон в IE, и блокирование рекламных баннеров, и
Minimizer-XP, позволяющий нанести порядок в системном трее, и Trans-XP, утилита, позволяющая сделать
любое окно полупрозрачным, и оптимизатор RAM, а также Atomic Clock, который позволит вам видеть
всегда точнейшее время. Tweak-XP позволяет оптимизировать память, кэш, работу жесткого диска.
Присутствуют настройки для наиболее популярных процессоров от AMD и Intel(Pentium). Присутсвует
удобная возможность запускать системные утилиты прямо из программы. Также можно отслеживать все
запускаемые системой при стaрте файлы, изменять пути к стандартным папкам. А также многочисленные
настройки Explorer(a) и меню "Пуск". Существует очень полезная функция - защита паролем определенных
программ от запуска. Пользователь не сможет запустить программу,без введения правильного пароля
(Вкладка System+File Tweaks ->Program Sensorship). Итак, чтобы провести минимальную оптимизацию
необходимо сделать следующее:

Force Windows to unload DLL's from memory. Данная команда находится во вкладке оптимизации
памяти и позволяет выгружать из памяти динамические библиотеки неиспользуемых программ. Очень
важно, когда памяти меньше 128 МБ.

Increase NTFS Performance by Disabling the Last Access Time Stamp. Команда находится на вкладке
cache optimization. Позволяет запретить файловой системе NTFS вести протокол времени обращения к
файлам. В таком случае, папка, содержащая большое количество файлов будет открываться быстрее.

Enable boot defrag for faster booting. Команда находится на той же вкладке. Позволяет ускорить
процесс загрузки, располагая загрузочные файлы рядом друг с другом.

Clear pagefile (swapfile) on shutdown. Безопасность. Позволяет обнулять (уничтожать) файл
подкачки. При включенной опции выключение системы может продолжаться чуть дольше обычного.
Некоторые опции
Помимо вышеперечисленного Tweak-XP позволяет действительно производить множество настроек

Disable the Windows XP CD burning feature. Находится на вкладке Hardware Tweaks. Отключает
возможность записи дисков средствами Windows.

Disable CD-ROM Autorun Function. Отменяет автозапуск компакт-дисков.

CD / DVD Tweaks. при наличии свободной оперативной памяти оптимизирует работу CD-Rom.

File Shredder. Вкладка System+files tweaks.Удаляе файл безвозвратно.

File Renamer. Позволяет переименовать большое количество файлов одним кликом.

Internet Explorer Tweaks. Позволяет настроить браузер IE. Забавная вещь: вкладка More Internet
Explorer tweaks позволяет, например, сменить имя окна IE на любое другое. Например любимый слоган
российских хакеров Bill Gates Must Die.
Это далеко не все возможности программы. К единственному недостатку этой программы можно лишь
отнести то, что Программа условно-платная. Демо-версию программы можно запустить 50 раз, что, правда,
вполне достаточно, чтобы разобраться с ней и провести настройку WIndows.
II. Customizer XP
Следующая программа-твикер Windows XP - это Customizer XP. Это бесплатная программа, которая в
отличие от Tweak-XP сосредоточена только на работе с реестром. То есть изменение внешнего вида ОС, и,
конечно же, функций. Вообще взаимное использование этих программ может принести очень хороший
результат. Эта программа включает в себя следующие опции:

Registry Tweak

RAM Optimizer

Disk Cleaner

OEM Info

Create Shortcut

Process Info

Startup Manager

Add/Remove
Всё это вместе позволит настроить Windows по своему вкусу. На вкладке Explorer можно: убрать
стрелочки с ярлыков (Remove arrow symbol on shortcut), убрать надпись о версии системы (Show Windows
version number), заставить использовать Блокнот для открытия незнакомых файлов (Use Notepad to open
unknown files), отменить функцию Active Desktop (Disable Active Desktop feature), предотвратить
сворачивание неиспользуемых иконок в трее (Disable grouping similar taskbar buttons), предотвратить
группирование сходных кнопок на панели задач и кое-что ещё. Программа позволяет убрать
многочисленные вкладки из диалоговых окон ОС. Таких как экран, Панель Управления, Свойства Системы
и многое другое. Этим можно ограничить пользователей менять установки системы. А чтобы они не
смогли вернуть все назад можно поставить пароль на запуск Customizer XP в программе Tweak-XP :-).
Программа бесплатна и дает доступ к многочисленным ветвям реестра, поэтому каждый, кто использует
ОС Windows XP должен иметь её в своем арсенале.
III. Tweak UI
Родная программа-твикер от Microsoft. Входит в состав PowerToys for Windows XP и продолжает
известную линейку Tweak UI. Программа абсолютно бесплатна и позволяет совершить ряд простых
настроек. На вкладке General можно настроить пункт Focus - указать, каким образом приложение,
нуждающееся в действии пользователя, давало бы о себе знать. А также провести некоторые настройки с
быстродействием системы (анимированные выпадающие меню и т. д.). Вкладка Mouse позволит совершить
ряд манипуляций с мышью, в том числе указать количество строк прокручивающихся при каждом
движении колесика или, используя вкладку x-mouse настроить систему так, чтобы окна становились
активными при подводе к ним указателя мыши. На вкладке Explorer можно настроить внешний вид
ярлыков и установить командные клавиши для клавиатуы с навигационными клавишами. Вкладка My
Computer позволит настроить местонахождение системных папок типа CD-Burning, а также включить или
выключить автовоспроизведение компакт-дисков. Control Panel предлагает довольно редкую функцию
добавления или удаления апплетов из меню Панели Управления. Довольно интересная функция. Вкладка
Internet Explorer позволит определить программу, которая служила бы для просмотра исходного кода Webстраниц, а также присвоить собственный рисунок для панели инструментов IE. На вкладке Logon можно
заставить систему подключать файл autoexec.bat при загрузке, а также определить пользователя, который
бы загружался автоматически. И последняя вкладка Repair позволит восстановить некоторые системные
папки, которые должны выглядеть специальным образом, например, папка Fonts.
2.2 Работа со служебными программами. API ОС. Структура окон, функций, сообщений.
API как средство интеграции приложений.
Интерфейс программирования приложений (англ. application programming interface, API ) — набор
готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой,
сервисом) для использования во внешних программных продуктах. Используется программистами для
написания всевозможных приложений.
API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом
API позволяет абстрагироваться от того, как именно эта функциональность реализована.
Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество
«ручек», которые доступны пользователю данного ящика, и которые он может вертеть и дёргать.
Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно
компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых
компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.
По такому принципу построены протоколы передачи данных по Интернет.
Важно заметить, что понятие протокола близко по смыслу к понятию API. И то и другое является
абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о
взаимодействии приложений.
API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.
Сигнатура функции — часть общего объявления функции, позволяющая средствам трансляции
идентифицировать функцию среди других. В различных языках программирования существуют разные
представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих
языках.
Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно
составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости
данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе
результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической
конструкции объявления функции: спецификатор области видимости функции, её имя и
последовательность формальных типов аргументов.
Семантика функции — это описание того, что данная функция делает. Семантика функции включает в
себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит.
Обычно результат выполнения зависит только от значений аргументов функции, но в некоторых модулях
есть понятие состояния. Тогда результат функции может зависеть от этого состояния, и, кроме того,
результатом может стать изменение состояния. Логика этих зависимостей и изменений относится к
семантике функции. Полным описанием семантики функций является исполняемый код функции или
математическое определение функции.
Практически все операционные системы (UNIX, Windows, Mac OS, и т. д.) имеют API, с помощью
которого программисты могут создавать приложения для этой операционной системы. Главный API
операционных систем — это множество системных вызовов.
В индустрии программного обеспечения общие стандартные API для стандартной функциональности
имеют важную роль, так как они гарантируют, что все программы, использующие общий API, будут
работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API
графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс,
что облегчает процесс освоения новых программных продуктов.
С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос
приложений между платформами. Существуют различные методы обхода этой сложности — написание
«промежуточных» API (API графических интерфейсов WxWidgets, Qt, GTK, и т. п.), написание библиотек,
которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды
исполнения, как Wine, cygwin, и т. п.), введение стандартов кодирования в языках программирования
(например, стандартная библиотека языка C), написание интерпретируемых языков, реализуемых на
разных платформах (sh, python, perl, php, tcl, Java, и т. д.).
Также необходимо отметить, что в распоряжении программиста часто находится несколько различных
API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с
использованием API программных компонент более низкого уровня абстракции.
Например: для того, чтобы увидеть в браузере строчку «Hello, world!», достаточно лишь
создать HTML-документ с минимальным заголовком и простейшим телом, содержащим данную строку.
Когда
браузер
откроет
этот документ,
программа-браузер
передаст
имя файла (или
уже
открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при
помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем
последовательно вызовет через API библиотеки стандартных графических примитивов операции типа
«очистить окошко», «написать “Hello, world!” выбранным шрифтом». Во время выполнения этих операций
библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими
запросами, уже эта библиотека обратится к API операционной системы, чтобы записать данные в
буфер видеокарты.
При этом практически на каждом из уровней реально существует несколько возможных
альтернативных API. Основными сложностями существующих многоуровневых систем API, таким
образом, являются:
 Сложность портирования программного кода с одной системы API на другую (например, при
смене ОС);
 Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря,
каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но
при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых
других операций, которые предоставляет более низкий уровень API.
Windows API — общее наименование целого набора базовых функций интерфейсов
программирования
приложений операционных
систем
семейств
Microsoft
Windows корпорации «Майкрософт» и совместимой с ними свободной бесплатной операционной
системы ReactOS. Является самым прямым способом взаимодействия приложений с Windows и ReactOS.
Для создания программ, использующих Windows API, «Майкрософт» выпускает комплект разработчика
программного обеспечения, который называется Platform SDK, и содержит документацию,
набор библиотек, утилит и других инструментальных средств для разработки.
ТЕМА 3 Программирование в OS Windows
3.1. Ресурсы программ. Меню. Диалоговые окна. Стандартные элементы управления. Редакторы
ресурса. Реестр.
Структура системного реестра Windows
Реестр Windows отличается многоуровневой архитектурой, включающей в себя четыре нисходящих
логических компонента. К первому компоненту, расположенному в самом верху иерархии реестра,
относятся так называемые ветви реестра. Эти ветви обозначаются с использованием англоязычной
аббревиатуры HKEY_. После символа подчеркивания идет название самой ветви. Всего в реестре Windows
XP
есть
пять
основных
ветвей:
HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE, HKEY_USERS и HKEY_CURRENT_CONFIG.
К второму компоненту в системе иерархии реестра относятся разделы, или ключи реестра (keys). В
Windows XP не существует универсального стандарта для обозначения ключей реестра, поэтому имена для
них назначались разработчиками согласно типам данных, которые расположены в ключе. Работать с
ключами можно в программе Редактор реестра (RegEdit), где они отображаются в виде подпапок ветвей
HKEY_, как показано рисунке ниже.
Строго говоря, ограничений, которые соотносят с ключами конкретный тип данных, попросту не
существует. Поэтому ключи в архитектуре реестра используются лишь для того, чтобы упростить доступ к
информации и предоставляют собой, фактически, просто средством для упорядочивания больших массивов
данных реестра.
По своему функциональному предназначению ключи реестра разделяются на две следующие
категории.
 Указываются системой. Имена ключей выбираются ОС, их изменение может сделать Windows XP
полностью неработоспособной.
 Указываются пользователем. Имена ключей может изменять администратор компьютера, и такие
модификации не станут причиной каких-либо фатальных проблем.
Ступенькой ниже в структурной иерархии реестра расположены подразделы реестра (subkeys).
Подразделы также прямо не связаны с какими-либо типами данных и не используются в рамках каких-либо
соглашений, которые ограничивают присвоение им названий. Наравне с именами ключей, названия
подразделов определяются как ОС, так и пользователем, причем в первом случае их модификация может
стать причиной проблем в работе Windows, а во втором — нет.
Финальная ступень в архитектуре системного реестра называется параметром (values). Это компонент
реестра, содержащий непосредственно сами данные, которые обуславливают работу ОС и всего
компьютера. Параметры, фактически, являются цепочкой «имя параметра — значение параметра» и
различаются по типу содержащейся в качестве их значений информации.
Теперь попробуем посмотреть на архитектуру реестра под другим углом, и сравним ее с файловой
системой компьютера. В этой аналогии ветви будут выполнять ту же роль, что и корневые папки разделов
жесткого диска, ключи и подразделы станут папками и подпапками, а параметры — непосредственно
файлами, которые находятся в своих папках. При этом любой из подобных файлов может иметь название
(имя параметра) и расположенную в нем информацию (значение параметра).
Разобравшись с реестром, перейдем к обзору типы данных, которые хранятся в параметрах реестра
Windows.
Типы данных системного реестра Windows
Для классификации значений, расположенных в параметрах, используются типы данных, связанные с
этим значением. Существует ровным счетом 11 типов данных системного реестра, перечисленных далее.
 REG_NONE. Тип данных «Неизвестный». Зашифрованные данные.
 REGSZ. Тип данных «Строковый». Текст.
 REG_EXPAND_SZ. Тип данных «Строковый». Текст и переменные.
 REG_BINARY. Тип данных «Двоичный». Двоичные данные.
 REG_DWORD. Тип данных «Числовой». Число.
 REG_DWORD_BIN_ENDIAN. Тип данных «Числовой». Число с обратным порядком байтов.
 REG_LINK. Тип данных «Строковый». Путь к файлу.
 REG_MULTI_SZ. Тип данных «Многостроковый». Массив строк.
 REG_RESOURCE_LIST. Тип данных «Строковый». Список ресурсов устройств.
 REG_FULL_RESOURCE_DESCRIPTOR. Тип данных «Строковый». Идентификатор ресурса
устройства.
 REG_RESOURCE_REQUIREMENTS_LIST. Тип данных «Строковый». Идентификатор ресурса
устройства.
Любой пользователь может свободно редактировать все значения параметров реестра, причем не
важно, к какому типу данных, из указанных ранее, они относятся. В программе Редактор реестра
представлен набор встроенных мастеров, которые дают возможность менять разнообразные типы данных.
В частности, для настройки значений числовых параметров используется мастер DWORD, двоичных —
BINARY, строковых — STRING и многостроковых — MULTISTRING.
Теперь перейдем к рассмотрению пяти базовых ветвей системного реестра Windows XP, и расскажем
об их функциональном предназначении.
 HKEY_LOCAL_MACHINE (HKLM). В этой ветви представлены данные, связанные с операционной
системе и оборудованием. К ним относятся, например, тип шины компьютера, общий объем доступной
оперативной памяти, список загруженных в текущий момент времени драйверов устройств, а также
информация об особенностях загрузки Windows. Это самая объемная ветвь системного реестра Windows
XP, которая применяется для тонкой настройки оборудования компьютера. При этом данные,
расположенные в этой ветви, относятся сразу ко всем профилям пользователей, зарегистрированных в
системе.
 HKEY_CURRENT_USER (HKCU). В этой ветви находятся сведения о пользователе, текущий сеанс
работы которого обслуживается реестром. В подразделах этой ветви записаны данные о переменных
окружения, группах программ пользователя, настройках рабочего стола и экрана, сетевых соединениях,
принтерах и дополнительной конфигурации программ (в Windows XP переменные окружения применяются
в сценариях, записях реестра и других программах лишь в роли подстановочных параметров). Эта
информация передаются из подраздела Security ID (SID) ветви HKEY_USERS для текущего пользователя.
Другими словами, в данной ветви предоставлена вся информация, относящаяся к профилю активного
пользователя Windows.
 HKEY_CLASSES_ROOT (HKR). В данной ветви находятся данные об операционной системе и
оборудовании, к примеру, тип шины компьютера, объем доступной оперативной памяти, список
загруженных в текущий момент времени драйверов устройств, а также информация, связанная с загрузкой
Windows. Эта ветвь содержит наибольший объем информации в системном реестре Windows XP и зачастую
применяется для тонкой настройки оборудования компьютера. Данные в этой ветви относятся к профилям
всех зарегистрированных в системе пользователей.
 HKEY_USERS (HKU). В этой ветви расположены подразделы с данными о всех профилях
пользователей компьютера. Один из ее подразделов всегда связан с подразделом HKEY_CURRENT_USER
(через параметр Security ID (SID) пользователя)). В другом подразделе, а именно, подразделе,
HKEY_USERS\DEFAULT, представлены данные о параметрах системы в настоящий момент времени,
которые были актуальны до начала сеанса работы пользователя, зарегистрированного в системе.
 HKEY_CURRENT_CONFIG (HKCC). В данной ветви представлены подразделы со сведениями обо
всех профилях оборудования, активного в текущем рабочем сеансе. Профили оборудования дают
возможность выбирать драйверы поддерживаемых устройств для выбираемого сеанса работы (что
позволяет, к примеру, не задействовать активацию порта док-станции переносного компьютера в тот
период, когда он не подключен к станции). Данные сведения передаются из подразделов
HKEY_LOCAL_MACHlNE\SYSTEM\CurrentControlSet.
Download