Лабораторная работа 1. Практикум по операционным системам под редакцией профессора Э. С. Спиридонова и профессора М. С. Клыкова
Скачать 369 Kb.
|
3.2.2. Упражнение. Преобразование файловой системы FAT16или FAT32 в NTFS с помощью Windows XP 110Список рекомендуемой литературы к лабораторной работе 3 112 ЛАБОРАТОРНАЯ РАБОТА 4. Архитектура операционных систем 113 4.1. Теоретическая часть лабораторной работы 4 113 4.1.1. Архитектура операционной системы Windows XP 113 4.1.2. Общая структура операционной системы Windows 2000 118 4.1.3. Реализация объектов в Windows 2000. Подсистемыокружения 125 4.1.4. Архитектура операционной системы UNIX 131 4.2. Практическая часть лабораторной работы 4 108 4.2.1. Контрольные вопросы 136 4.2.2. Упражнение. Форматы команд машинного языка 136Список рекомендуемой литературы к лабораторной работе 4 137 ЛАБОРАТОРНАЯ РАБОТА 5. Базовые принципы безопасности Windows XP 139 5.1. Теоретическая часть лабораторной работы 5 139 5.1.1. Режимы работы операционной системы Windows XP 139 5.1.2. Принципы внутреннего функционирования Windows XP 140 5.1.3. Подсистемы и библиотеки Windows XP 1435.1.4. Возможные атаки и методы взлома операционной системы 145 5.1.5. Защитные механизмы операционных систем 148 5.2. Практическая часть лабораторной работы 5 153 5.2.1. Контрольные вопросы 153 Список рекомендуемой литературы к лабораторной работе 5 155 ЛАБОРАТОРНАЯ РАБОТА 6. Распределение прав пользователя 156 6.1. Теоретическая часть лабораторной работы 6 156 6.1.1. Общие принципы управления пользователями 156 6.1.2. Настройка учетной записи пользователя 163 6.1.3. Восстановление забытого пользователем пароля 1686.1.4. Выполнение действий над пользователями системы 170 6.1.5. Работа с пользовательскими группами 171 6.1.6. Управление входом пользователей в систему 173 6.2. Практическая часть лабораторной работы 6 175 6.2.1. Контрольные вопросы 175 6.2.2. Упражнение. Работа с программами распределения прав пользователей 176 Список рекомендуемой литературы к лабораторной работе 6 176 ЛАБОРАТОРНАЯ РАБОТА 7. Внутренняя политика безопасности Windows XP 177 7.1. Теоретическая часть лабораторной работы 7 177 7.1.1. Групповая политика безопасности 177 7.1.2. Локальная политика безопасности 180 7.1.3. Политика паролей 183 7.1.4. Политика блокировки учетных записей 185 7.1.5. Программа Windows Security - Безопасность Windows 188 7.2. Практическая часть лабораторной работы 7 190 7.2.1. Контрольные вопросы 190 7.2.2. Упражнение. Работа с программой Локальная политика безопасности 191 7.2.3. Упражнение. Настройка параметров безопасности 192 Список рекомендуемой литературы к лабораторной работе 7 192 ЛАБОРАТОРНАЯ РАБОТА 8. Параметры безопасности и политика обновления 193 8.1. Теоретическая часть лабораторной работы 8 193 8.1.1. Настройка прав пользователей 193 8.1.2. Параметры безопасности системы 201 8.1.3. Политика обновления 211 8.2. Практическая часть лабораторной работы 8 214 8.2.1. Контрольные вопросы 214 8.2.2. Упражнение. Настройка Параметров безопасности 215 8.2.3. Упражнение. Настройка параметров Политики обновления 215 Список рекомендуемой литературы к лабораторной работе 8 192 ЛАБОРАТОРНАЯ РАБОТА 9. Построение защищенной файловой системы 216 9.1. Теоретическая часть лабораторной работы 9 216 9.1.1. Организация файлов в операционных системах 216 9.1.2. Средства управления файловой системой FAT 217 9.1.3. Файловая система NTFS и разграничения прав пользователей 219 9.1.4. Развертывание файловой системы NTFS 221 9.1.5. Настройка приложения Проводник для эффективной работы с файловой системой NTFS 223 9.1.6. Механизм наследования прав объектами файловой системы 234 9.1.7. Владельцы объектов файловой системы 236 9.2. Практическая часть лабораторной работы 9 241 9.2.1. Контрольные вопросы 241 9.2.2. Упражнение. Определение способа организации файлов в ОС. Преобразование системы FAT в систему NTFS 243 9.2.3. Упражнение. Работа с настройками системы NTFS 243 Список рекомендуемой литературы к лабораторной работе 9 243 ЛАБОРАТОРНАЯ РАБОТА 10. Обеспечение защиты опера- ционной системы от атак по компьютерным сетям 244 10.1. Теоретическая часть лабораторной работы 10 244 10.1.1. Способы несанкционированного доступа в операционную систему по компьютерным сетям 250 10.1.2. Настройка брандмауэра 250 10.1.3. Дополнительные параметры брандмауэра 257 10.1.4. Удаленные сеансы пользователей 261 10.1.5. Удаленные пользователи 262 10.2. Практическая часть лабораторной работы 10 264 10.2.1. Контрольные вопросы 264 10.2.2. Упражнение. Настройка механизмов безопасности от атак операционной системы по компьютерным сетям 266 Список рекомендуемой литературы к лабораторной работе 10 266 ЛАБОРАТОРНАЯ РАБОТА 11. Предоставление операцион- ной системой информации о процессах, происходящих в системе 267 11.1. Теоретическая часть лабораторной работы 11 267 11.1.1. Аспекты безопасности операционной системы 267 11.1.2. Программа Просмотр событий (Event Viewer) 271 11.1.3. Диспетчер задач и внутренние параметры системы 276 11.1.4. Просмотр дополнительных внутренних параметров системы 291 11.2. Практическая часть лабораторной работы 11 292 11.2.1. Контрольные вопросы 292 Список рекомендуемой литературы к лабораторной работе 11 265 Лабораторная работа 1. Состав вычислительной системы 1.1. Теоретическая часть лабораторной работы 1 1.1.1. Аппаратное обеспечение вычислительной системы Аппаратная конфигурация является одной из двух составляющих вычислительной системы. Вторая компонента - программное обеспечение. Критериями выбора аппаратного или программного решения являются производительность и эффективность. Считается, что аппаратные решения в среднем оказываются дороже, зато реализация программных решений требует более высокой квалификации персонала. Современные компьютеры и вычислительные комплексы имеют блочно-модульную конструкцию – аппаратную конфигурацию, необходимую для исполнения конкретных видов работ, которую можно собирать из готовых узлов и блоков. Основными аппаратными компонентами вычислительной системы являются: память, центральный процессор и периферийные устройства, которые соединены между собой системной магистралью (рис.1.1) Основная память предназначена для запоминания программ и данных в двоичном виде и организована в виде упорядоченного массива ячеек, каждая из которых имеет уникальный цифровой адрес. Как правило, размер ячейки составляет 1 байт. Типовые операции над основной памятью: считывание и запись содержимого ячейки с определенным адресом. Центральный процессор Накопители Принтер Монитор Оперативная память Клавиатура Рис.1.1. Некоторые компоненты вычислительной системы Системная магистраль контроллеры Центральный процессор– это центральное устройство компьютера, которое выполняет операции по обработке данных и управляет периферийными устройствами компьютера. В состав центрального процессора входят:
Центральный процессор выполняет различные операции с данными при помощи специализированных ячеек для хранения ключевых переменных и временных результатов – внутренних регистров. Регистры подразделяются на два вида (рис. 1.2):
Регистры данных программист может использовать по своему усмотрению для временного хранения любых объектов (данных или адресов) и выполнения над ними требуемых операций. Индексные регистры так же, как и регистры данных, могут использоваться произвольным образом; их основное назначение – хранить индексы или смещения данных и команд от начала базового адреса (при выборке операндов из памяти). Адрес базы при этом может находиться в базовых регистрах. Сегментные регистры являются важнейшим элементом архитектуры процессора, обеспечивая адресацию 20-разрядного адресного пространства с помощью 16-разрядных операндов. Основные сегментные регистры: CS – регистр сегмента кода; DS – регистр сегмента данных; SS – регистр сегмента стека, ES – дополнительный сегментальный регистр. Обращение к памяти осуществляется посредством сегментов – логических образований, накладываемых на любые участки физического адресного пространства. Начальный адрес сегмента, деленный на 16 (без младшей шестнадцатеричной цифры) заносится в один из сегментных регистров; после чего предоставляется доступ к участку памяти, начинающегося с заданного сегментного адреса. Адрес любой ячейки памяти состоит из двух слов, одно из которых определяет расположение в памяти соответствующего сегмента, а другое – смещение в пределах этого сегмента. Размер сегмента определяется объемом содержащихся в нем данных, но никогда не может превышать величину 64 Кбайт, что определяется максимально возможной величиной смещения. Сегментный адрес сегмента команд хранится в регистре CS, а смещение к адресуемому байту – в регистре указателе команд IP. После загрузки программы в IP заносится смещение первой команды программы. Процессор, считав ее из памяти, увеличивает содержимое IP точно на длину этой команды (команды процессоров Intel могут иметь длину от 1 до 6 байт), в результате чего IP указывает на вторую команду программы. Выполнив первую команду, процессор считывает из памяти вторую, опять увеличивая значение IP. В результате в IP всегда находится смещение очередной команды – команды, следующей за выполняемой. Описанный алгоритм нарушается только при выполнении команд переходов, вызовов подпрограмм и обслуживания прерываний.
Рис. 1.2. Регистры 32-х разрядного процессора Сегментный адрес сегмента данных хранится в регистре DS, смещение может находиться в одном из регистров общего назначения. Дополнительный сегментный регистр ES используется для обращения к полям данных, не входящим в программу, например к видеобуферу или системным ячейкам. Однако при необходимости его можно настроить и на один из сегментов программы. Например, если программа работает с большим объемом данных, для них можно предусмотреть два сегмента и обращаться к одному из них через регистр DS, а к другому – через регистр ES. Регистр-указатель стека SP используется как указатель вершины стека. Стеком называют область программы для временного хранения произвольных данных. Удобство стека заключается в том, что его область используется многократно, причем сохранение в стеке данных и выборка их оттуда выполняется с помощью команд push и pop без указания имен. Стек традиционно используется для сохранения содержимого регистров, используемых программой, перед вызовом подпрограммы, которая, в свою очередь, будет использовать регистры процессора в своих личных целях. Исходное содержимое регистров извлекается из стека после возврата из подпрограммы. Другой распространенный прием – передача подпрограмме требуемых ею параметров через стек. Подпрограмма, зная, в каком порядке помещены в стек параметры, может забрать их оттуда и использовать при своем выполнении. Отличительной особенностью стека является своеобразный порядок выборки содержащихся в нем данных: в любой момент времени в стеке доступен только верхний элемент, то есть элемент, загруженный в стек последним. Выгрузка из стека верхнего элемента делает доступным следующий элемент. Элементы стека располагаются в области памяти, отведенной под стек, начиная со дна стека (с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека SP. Специальные регистры доступны только в привилегированном режиме и используются операционной системой. Они контролируют различные блоки кэш-памяти, основную память, устройства ввода-вывода и другие устройства вычислительной системы. Существует один регистр, который доступен как в привилегированном, так и в пользовательском режимах. Это регистр PSW (Program State Word - слово состояния программы), который называют флаговым. Флаговый регистр содержит различные биты, необходимые центральному процессору, самые важные – коды условий, которые используются при сравнениях и условных переходах Они устанавливаются в каждом цикле арифметико-логического устройства процессора и отражают состояние результата предыдущей операции. Содержимое флагового регистра зависит от типа вычислительной системы и может включать дополнительные поля, которые указывают: режим машины (например, пользовательский или привилегированный); бит трассировки (который используется для отладки); уровень приоритета процессора; статус разрешения прерываний. Флаговый регистр обычно читается в пользовательском режиме, но некоторые поля могут записываться только в привилегированном режиме (например, бит, который указывает режим). Регистр указатель команд содержит адрес следующей, стоящей в очереди на выполнение команды. После выбора команды из памяти регистр команд корректируется, и указатель переходит к следующей команде. Указатель команд следит за ходом выполнения программы, указывая в каждый момент относительный адрес команды, следующей за исполняемой. Регистр программно недоступен; наращивание адреса в нем выполняет микропроцессор, учитывая при этом длину текущей команды. Команды переходов, прерываний, вызова подпрограмм и возврата из них изменяют содержимое указателя, осуществляя тем самым переходы в требуемые точки программы. Регистр аккумулятор используется в подавляющем числе команд. Часто применяемые команды, использующие данный регистр, имеют укороченный формат. Для обработки информации обычно организовывается передача данных из ячеек памяти в регистры общего назначения, выполнение операции центральным процессором и передача результатов в основную память. Программы хранятся в виде последовательности машинных команд, которые должен выполнять центральный процессор. Каждая команда состоит из поля операции и полей операндов – данных, над которыми выполняется данная операция. Набор машинных команд называется машинным языком. Выполнение программ осуществляется следующим образом. Машинная команда, на которую указывает программный счетчик, считывается из памяти и копируется в регистр команд, где она декодируется, после чего исполняется. После ее выполнения программный счетчик указывает на следующую команду и т.д. Эти действия называются машинным циклом. Большинство центральных процессоров имеют два режима работы: режим ядра и пользовательский, который задается битом слова состояния процессора (флагового регистра). Если процессор запущен в режиме ядра, он может выполнять все команды из набора инструкций и использовать все возможности аппаратуры. Операционная система работает в режиме ядра и предоставляет доступ ко всему оборудованию. Программы пользователей работают в пользовательском режиме, который разрешает выполнение множества команд, но делает доступным только часть аппаратных средств. Для связи с операционной системой пользовательская программа должна сформировать системный вызов, который обеспечивает переход в режим ядра и активизирует функции операционной системы. Команда trap (эмулированное прерывание) переключает режим работы процессора из пользовательского в режим ядра и передает управление операционной системе. После завершения работы управление возвращается к пользовательской программе, к команде, следующей за системным вызовом. В компьютерах, помимо инструкций для выполнения системных вызовов имеются прерывания, которые вызываются аппаратно для предупреждения об исключительных ситуациях, например, попытка деления на ноль или переполнение при операциях с плавающей точкой. Во всех подобных случаях управление переходит к операционной систем, которая должная решить, что делать дальше. Иногда нужно завершить программу с сообщением об ошибке, иногда можно проигнорировать (например, при потере значимости числа его можно принять равным нулю) или передать управление самой программе для обработки некоторых видов условий. По способу расположения устройств относительно центрального процессора различают внутренние и внешние устройства. Внешними, как правило, являются большинство устройств ввода-вывода данных (их также называют периферийными устройствами) и некоторые устройства, предназначенные для длительного хранения данных. Согласование между отдельными узлами и блоками выполняют с помощью переходных аппаратно-логических устройств, называемых аппаратными интерфейсами. Стандарты на аппаратные интерфейсы в вычислительной технике называют протоколами – совокупностью технических условий, которые должны быть обеспечены разработчиками устройств для успешного согласования их работы с другими устройствами. Многочисленные интерфейсы, присутствующие в архитектуре любой вычислительной системы, можно условно разделить на две большие группы: последовательные и параллельные. Через последовательный интерфейс данные передаются последовательно, бит за битом, а через параллельный – одновременно группами битов. Количество битов, участвующих в одной посылке, определяется разрядностью интерфейса, например, восьмиразрядные параллельные интерфейсы передают один байт (8 бит) за один цикл. Параллельные интерфейсы обычно имеют более сложное устройство, чем последовательные, но обеспечивают более высокую производительность. Их применяют там, где важна скорость передачи данных: для подключения печатающих устройств, устройств ввода графической информации, устройств записи данных на внешний носитель и т.п. Производительность параллельных интерфейсов измеряют байтами в секунду (байт/с; Кбайт/с; Мбайт/с). Устройство последовательных интерфейсов проще; как правило, для них не надо синхронизировать работу передающего и принимающего устройства (поэтому их часто называют асинхронными интерфейсами), но пропускная способность их меньше и коэффициент полезного действия ниже. Поскольку обмен данными через последовательные устройства производится не байтами, а битами, их производительность измеряют битами в секунду (бит/с, Кбит/с, Мбит/с). Несмотря на кажущуюся простоту перевода единиц измерения скорости последовательной передачи в единицы измерения скорости параллельной передачи данных путем механического деления на 8, такой пересчет не выполняют, поскольку он не корректен из-за наличия служебных данных. В крайнем случае, с поправкой на служебные данные, иногда скорость последовательных устройств выражают в знаках в секунду или в символах в секунду (с/с), но эта величина имеет не технический, а справочный, потребительский характер. Последовательные интерфейсы применяют для подключения медленных устройств (простейших устройств печати низкого качества: устройств ввода и вывода знаковой и сигнальной информации, контрольных датчиков, малопроизводительных устройств связи и т.п.), а также в тех случаях, когда нет существенных ограничений по продолжительности обмена данными (цифровые фотокамеры). Память. Второй основной аппаратной составляющей компьютера является память. Система памяти конструируется в виде иерархии слоев (рис. 1.3). Верхний слой состоит из внутренних регистров центрального процессора. Внутренние регистры предоставляют возможность для хранения 32 х 32 бит на 32-разрядном процессоре и 64 х 64 бит на 64-разрядном процессоре, что составляет меньше одного килобайта в обоих случаях. Программы сами могут управлять регистрами (то есть решать, что в них хранить) без вмешательства аппаратуры. В следующем слое находится кэш-память, в основном контролируемая оборудованием. Оперативная память разделена на кэш-строки, обычно по 64 байт, с адресацией от 0 до 63 в нулевой строке, от 64 до 127 в первой строке и т.д. Наиболее часто используемые строки кэша хранятся в высокоскоростной кэш-памяти, расположенной внутри центрального процессора или очень близко к нему. Когда программа должна прочитать слово из памяти, кэш-микросхема проверяет, есть ли нужная строка в кэше. Если это так, то происходит результативное обращение к кэш-памяти, запрос удовлетворяется целиком из кэша и запрос к памяти на шину не выставляется. Удачное обращение к кэшу, как правило, по времени занимает около двух тактов, а неудачное приводит к обращению к памяти с существенной потерей времени. Кэш-память ограничена в размере, что обусловлено ее высокой стоимостью. В некоторых машинах есть два или даже три уровня кэша, причем каждый последующий медленнее и больше предыдущего. Далее следует оперативная память (ОЗУ – оперативное запоминающее устройство, англ. RAM, RandomAccessMemory – память с произвольным доступом). Это главная рабочая область запоминающего устройства вычислительной системы. Все запросы центрального процессора, которые не могут быть выполнены кэш-памятью, поступают для обработки в основную память. При работе нескольких программ на компьютере желательно сложные программы помещать в оперативную память. Защита программ друг от друга и их перемещение в памяти реализуется посредством оборудования компьютера двумя специализированными регистрами: базовым регистром и предельным регистром. В простейшем случае (рис. 1.4а), когда программа начинает работать, в базовый регистр загружается адрес начала исполняемого модуля программы, а предельный регистр говорит о том, сколько занимает исполняемый модуль программы вместе с данными. При выборке команды из памяти аппаратура проверяет счетчик команд, и если он меньше, чем предельный регистр, то добавляет к нему значение базового регистра, а сумму передает памяти. Когда программа хочет прочитать слово данных (например, из адреса 10000), аппаратура автоматически добавляет к этому адресу содержимое базового регистра (например, 50000) и передает сумму (60000) памяти. Базовый регистр дает возможность программе ссылаться на любую часть памяти, следующую за хранящимся в нем адресом. Кроме того, предельный регистр запрещает программе обращение к любой части памяти после программы. Таким образом, с помощью этой схемы решаются обе задачи: защиты и перемещения программ. В результате проверки и преобразования данных, адрес, сформированный программой и называемый виртуальным адресом, переводится в адрес, используемый памятью и называемый физическим адресом. Устройство, которое выполняет проверку и преобразование, называется устройством управления памятью или диспетчером памяти (MMU, MemoryManagementUnit). Диспетчер памяти располагается или в схеме процессора, или близко к ней, но логически находится между процессором и памятью. Более сложный диспетчер памяти состоит из двух пар базовых и предельных регистров (рис. 1.4б). Одна пара предназначена для текста программы, другая пара – для данных. Командный регистр и все ссылки на текст программы работают с первой парой регистров, ссылки на данные используют вторую пару регистров. Благодаря такому механизму появляется возможность делить одну программу между несколькими пользователями при хранении в ОЗУ только одной копии программы, что исключено в простой схеме. При работе программы №1 четыре регистра располагаются так, как показано на рис. 4б слева, при работе программы №2 – справа. Управление диспетчером памяти является функцией операционной системы. Следующим в структуре памяти идет магнитный диск (жесткий диск). Дисковая память на два порядка дешевле ОЗУ в пересчете на бит и больше по величине, но доступ к данным, размещенным на диске, занимает примерно на три порядка больше времени. Причиной низкой скорости жесткого диска является тот факт, что диск представляет собой механическую конструкцию. Жесткий диск состоит из одной или нескольких металлических пластин, вращающихся со скоростью 5400, 7200 или 10800 оборотов в минуту (рис. 1.5). Информация записывается на пластины в виде концентрических окружностей. Головки чтения/записи в каждой заданной позиции могут прочитать кольцо на пластине, называемое дорожкой. Все вместе дорожки для заданной позиции вилки формируют цилиндр. Каждая дорожка разделена на некоторое количество секторов, обычно по 512 байт на сектор. На современных дисках внешние цилиндры содержат большее количество секторов, чем внутренние. Перемещение головки от одного цилиндра к другому занимает около 1 мс, а перемещение к произвольному цилиндру требует от 5 до 10 мс, в зависимости от диска. Когда головка располагается над нужной дорожкой, нужно ждать, пока двигатель повернет диск так, чтобы под головкой стал требуемый сектор. Это занимает дополнительно от 5 до 10 мс, в зависимости от скорости вращения диска. Когда сектор находится под головкой, процесс чтения или записи происходит со скоростью от 5 Мбайт/с (для низкоскоростных дисков) до 160 Мбайт/с (для высокоскоростных дисков). Последний слой занимает магнитная лента. Этот носитель часто использовался для создания резервных копий пространства жесткого диска или для хранения больших наборов данных. Для доступа к информации ленту помещали в устройство для чтения магнитных лент, затем ее перематывали до запрашиваемого блока с информацией. Весь процесс длился минуты. Описанная иерархия памяти типична, но в некоторых вариантах могут присутствовать не все уровни или другие их виды (например, оптический диск). В любом случае при движении по иерархии сверху вниз время произвольного доступа значительно увеличивается от устройства к устройству, и вместимость растет эквивалентно времени доступа. Кроме описанных выше видов во многих компьютерах есть постоянная память с произвольным доступом (ПЗУ – постоянное запоминающее устройство, ROM, ReadOnlyMemory – память только для чтения), которая не теряет свое содержимое при выключении питания вычислительной системы. ПЗУ программируется в процессе производства и после этого его содержимое нельзя изменить. На некоторых компьютерах в ПЗУ находятся программы начальной загрузки, используемые при запуске компьютера, и некоторые карты ввода-вывода для управления низкоуровневыми устройствами. Электрически стираемое ПЗУ (EEPROM, ElectricallyErasableROM) и флэш-ОЗУ (flash RAM) также энергонезависимы, но в отличие от ПЗУ их содержимое можно стереть и переписать. Однако запись данных на них требует намного больше времени, чем запись в оперативную память. Поэтому они используются точно так же, как и ПЗУ. Существует еще один вид памяти – CMOS-память, которая является энергозависимой и используется для хранения текущей даты и текущего времени. Память получает питание от аккумулятора, встроенного в компьютер, может содержать конфигурационные параметры (например, указание, с какого жесткого диска производить загрузку). Устройства ввода-вывода. Другими устройствами, тесно взаимодействующими с операционной системой, являются устройства ввода-вывода, которые состоят из двух частей: контроллера и самого устройства. Контроллер представляет собой микросхему (набор микросхем) на вставляемой в разъем плате, которая принимает и выполняет команды операционной системы. Например, контроллер принимает команду чтения определенного сектора с диска. Для выполнения команды контроллер преобразовывает линейный номер сектора диска в номер цилиндра, сектора и головки. Операция преобразования усложняется тем, что внешние цилиндры могут иметь больше секторов, чем внутренние. Затем контроллер определяет, над каким цилиндром находится в данный момент головка, и дает последовательность импульсов, чтобы переместить головку на необходимое количество цилиндров. После чего контроллер ждет, пока повернется диск, поместив требуемый сектор под головку. Затем последовательно выполняются процессы чтения и сохранения битов по мере поступления их с диска, процессы удаления заголовка и вычисления контрольной суммы. Далее контроллер собирает полученные биты в слова и сохраняет их в памяти. Для осуществления этой работы контроллеры содержат встроенные микропрограммы. Само устройство ввода-вывода имеет простой интерфейс, который должен соответствовать единому стандарту IDE (IDE, IntegratedDriveElectronics– встроенный интерфейс накопителей). Так как интерфейс устройства скрыт контроллером, то операционная система видит только интерфейс контроллера, который может отличаться от интерфейса устройства. Так как контроллеры для разных устройств ввода-вывода отличаются друг от друга, то для управления ими требуется соответствующее программное обеспечение – драйверы. Поэтому каждый производитель контроллеров должен поставлять драйверы для поддерживаемых им операционных систем. Чтобы установить драйвер в операционную систему существует три способа:
Для связи с каждым контроллером существуют определенные регистры. Например, минимальный контроллер диска может иметь регистры для определения адреса на диске, адреса в памяти, номер сектора и направления операции (чтение или запись). Чтобы активизировать контроллер, драйвер получает команду от операционной системы, затем транслирует ее в величины, подходящие для записи в регистры устройства. На некоторых компьютерах регистры устройств ввода-вывода отображаются в адресное пространство операционной системы, поэтому их можно читать или записывать как обычные слова в памяти. Адреса регистров помещаются в ОЗУ за пределами досягаемости программ пользователей, чтобы программы пользователей оградить от аппаратуры (например, с помощью базового и предельного регистров). На других компьютерах регистры устройств располагаются в специальных портах ввода-вывода, и каждый регистр имеет свой адрес порта. На таких машинах в привилегированном режиме доступны команды IN и OUT, которые позволяют драйверам считывать и записывать регистры. Первая схема устраняет необходимость специальных команд ввода-вывода, но использует некоторое количество адресного пространства. Вторая схема не затрагивает адресное пространство, но требует наличие специальных команд. Обе схемы широко используются. Ввод и вывод данных осуществляется тремя способами. 1.Пользовательская программа выдает системный запрос, который ядро транслирует в вызов процедуры соответствующего драйвеpa. Затем драйвер начинает процесс ввода-вывода. В это время драйвер выполняет очень короткий программный цикл, постоянно опрашивая готовность устройства, с которым он работает (обычно есть некий бит, который указывает на то, что устройство все еще занято). По завершении операции ввода-вывода драйвер помещает данные туда, куда требуется, и возвращается в исходное состояние. Затем операционная система возвращает управление программе, осуществлявшей вызов. Этот метод называется ожиданием готовности или активным ожиданием и имеет один недостаток: процессор должен опрашивать устройство до тех пор, пока оно не завершит свою работу. 2.Драйвер запускает устройство и просит его выдать прерывание по окончании ввода-вывода. После этого драйвер возвращает данные, операционная система блокирует программу вызова, если это нужно, и начинает выполнять другие задания. Когда контроллер обнаруживает окончание передачи данных, он генерирует прерывание, чтобы сигнализировать о завершении операции. Механизм реализации ввода-вывода происходит следующим образом (рис. 1.6а): Шаг 1: драйвер передает команду контроллеру, записывая информацию в регистры устройства; контроллер запускает устройство ввода-вывода. Шаг 2: после окончания чтения или записи контроллер посылает сигнал микросхеме контроллера прерываний. Шаг З: если контроллер прерываний готов к приему прерывания, то он подает сигнал на определенный контакт центрального процессора. Шаг 4: контроллер прерываний выставляет номер устройства ввода-вывода на шину так, чтобы центральный процессор мог прочесть его и узнать, какое устройство завершило работу. При приеме центральным процессором прерывания, содержимое счетчика команд (PC) и слова состояния процессора (PSW) помещается в текущий стек, а процессор переключается в привилегированный режим работы (режим работы ядра операционной системы). Номер устройства ввода-вывода может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний. Когда обработчик прерываний (часть драйвера устройства, пославшего прерывание) начинает свою работу, он удаляет расположенные в стеке счетчик команд и слово состояния процессора, сохраняет их и запрашивает устройство, чтобы получить информацию о его состоянии. После того как обработка прерывания завершена, управление возвращается к работавшей до этого программе пользователя, к той команде, выполнение которой еще не было закончено (рис. 1.6б). 3.Для ввода-вывода информации используется контроллер прямого доступа к памяти (DMA, DirectMemoryAccess), который управляет потоком битов между оперативной памятью и некоторыми контроллерами без постоянного вмешательства центрального процессора. Процессор вызывает микросхему DMA, говорит ей, сколько байтов нужно передать, сообщает адреса устройства и памяти, а также направление передачи данных и позволяет микросхеме действовать самой. По завершении работы DMA инициирует прерывание, которое обрабатывается соответствующим образом. Прерывания могут происходить в неподходящие моменты, например, во время обработки другого прерывания. По этой причине центральный процессор обладает возможностью запрещать прерывания и разрешать их позже. Пока прерывания запрещены, все устройства, завершившие работу, продолжают посылать свои сигналы, но работа процессора не прерывается до тех пор, пока прерывания не будут разрешены. Если заканчивают работу сразу несколько устройств в то время, когда прерывания запрещены, контроллер прерываний решает, какое из них должно быть обработано первым, обычно основываясь на статических приоритетах, назначенных для каждого устройства. Шины. Вычислительная система Pentium (рис. 1.7) имеет восемь шин (шина кэша, локальная шина, шина памяти, PCI, SCSI, USB, IDE и ISA). Каждая шина имеет свою скорость передачи данных и свои функции. В операционной системе для управления компьютером и его конфигурации должны находиться сведения обо всех шинах. Шина ISA (IndustryStandardArchitecture, промышленная стандартная архитектура) – впервые появилась на компьютерах IBMPC/AT, работает на частоте 8,33 МГц и может передавать два байта за такт с максимальной скоростью 16,67 Мбайт/с.; она включена в систему для обратной совместимости со старыми медленными платами ввода-вывода. Шина PCI (PeripheralComponentInterconnect, интерфейс периферийных устройств) – создана компанией Intel в качестве преемницы шины ISA, может работать на частоте 66 МГц и передавать по 8 байт за такт со скоростью 528 Мбайт/с. В настоящее время шины PCI используют большинство высокоскоростных устройств ввода-вывода, а так же компьютеры с процессорами, отличными от Intel, так как с ней совместимо много плат ввода-вывода. Локальная шина в системе Pentium используется для передачи центральным процессором данных микросхеме PCI-моста, который обращается к памяти по выделенной шине памяти, часто работающей на частоте 100 МГц. Шина кэша используются для подключения внешнего кэша, так как системы Pentium имеют кэш первого уровня (кэш L1), встроенный в процессор, и большой внешний кэш второго уровня (кэш L2). Шина IDE служит для присоединения периферийных устройств: дисков и устройств для чтения компакт-дисков. Шина является потомком интерфейса контроллера диска на PC/AT, в настоящее время входит в стандартный комплект всех систем, основанных на процессорах Pentium. Шина USB (UniversalSerialBus, универсальная последовательная шина) предназначена для присоединения к компьютеру медленных устройств ввода-вывода (клавиатуры, мыши). Она использует маленький четырехпроводной разъем, два провода которого поставляют электропитание к USB-устройствам. Шина USB – это централизованная шина, по которой главное устройство каждую миллисекунду опрашивает устройства ввода-вывода, чтобы узнать, есть ли у них данные. Она может управлять загрузкой данных со скоростью 1,5 Мбайт/с. Все USB-устройства используют один драйвер, поэтому их можно присоединять к системе без ее перезагрузки. Шина SCSI (SmallComputerSystemInterface, системный интерфейс малых компьютеров) – высокопроизводительная шина, применяемая для быстрых дисков, сканеров и других устройств, нуждающихся в значительной пропускной способности. Ее производительность достигает 160 Мбайт/с. Шина SCSI используется в системах Macintosh, популярна в UNIX-системах и других системах на базе процессоров Intel. Шина IEEE 1394 (FireWire) – является бит-последовательной шиной и поддерживает пакетную передачу данных со скоростью, достигающей 50 Мбайт/с. Это свойство позволяет подключать к компьютеру портативные цифровые видеокамеры и другие мультимедийные устройства. В отличие от шины USB шина IEEE 1394 не имеет центрального контроллера. Операционная система должна уметь распознавать аппаратные составляющие и уметь их настраивать. Это требование привело компании Intel и Microsoft к разработке системы персонального компьютера, называемой plugandplay («включи и работай»). До появления этой системы каждая плата ввода-вывода имела фиксированные адреса регистров ввода-вывода и уровень запроса прерывания. Например, клавиатура использовала прерывание 1 и адреса в диапазоне от 0x60 до 0x64; контроллер гибкого диска использовал прерывание 6 и адреса от 0x3F0 до 0x3F7; принтер пользовался прерыванием 7 и адресами от 0x378 до 0х37А. Если пользователь покупал звуковую карту и модем, случалось что эти устройства случайно использовали одно и тоже прерывание. Возникал конфликт, поэтому устройства не могли работать вместе. Возможным решением было встроить набор DIP-переключателей (джамперов, jumper – перемычка) в каждую плату и настроить каждую плату таким образом, чтобы адреса портов и номера прерываний различных устройств не конфликтовали друг с другом. Plugandplay позволяет операционной системе автоматически собирать информацию об устройствах ввода-вывода, централизованно назначать уровни прерывания и адреса ввода-вывода, а затем сообщать каждой плате эту информацию. Такая система работает на компьютерах Pentium. Каждый компьютер с процессором Pentium содержит материнскую плату, на которой находится программа – система BIOS (BasicInputOutputSystem– базовая система ввода-вывода). BIOS содержит программы ввода-вывода низкого уровня, включая процедуры: для чтения с клавиатуры, для вывода информации на экран, для ввода-вывода данных с диска и пр. При начальной загрузке компьютера стартует система BIOS, которая проверяет количество установленной в системе оперативной памяти, подключение и корректность работы клавиатуры и других основных устройств. Далее BIOS проверяет шины ISA и PCI и все устройства, присоединенные к ним. Некоторые из этих устройств являются традиционными (созданными до выхода стандарта plugandplay). Они имеют фиксированные уровни прерывания и адрес порта ввода-вывода (например, заданные с помощью переключателей или перемычек на плате ввода-вывода без возможности их изменения операционной системой). Эти устройства регистрируются, далее проходят регистрации устройства plugandplay. Если присутствующие устройства отличаются от тех, что были во время последней загрузки, то производится конфигурирование новых устройств. Затем BIOS определяет устройство, с которого будет происходить загрузка, по очереди пробуя каждое из списка, хранящегося в CMOS-памяти. Пользователь может изменить этот список, войдя в конфигурационную программу BIOS сразу после загрузки. Обычно сначала делается попытка загрузиться с гибкого диска. Если это не удается, пробуется компакт-диск. Если в компьютере отсутствуют и гибкий диск, и компакт-диск, система загружается с жесткого диска. С загрузочного устройства считывается в память и выполняется первый сектор. В этом секторе находится программа, проверяющая таблицу разделов в конце загрузочного сектора, чтобы определить, который из разделов является активным. Затем из того же раздела читается вторичный загрузчик. Он считывает из активного раздела операционную систему и запускает ее. После этого операционная система опрашивает BIOS, чтобы получить информацию о конфигурации компьютера и проверяет наличие драйвера для каждого устройства. Если драйвер отсутствует, операционная система просит пользователя вставить гибкий диск или компакт-диск, содержащий драйвер (эти диски поставляются производителем устройства). Если же все драйверы на месте, операционная система загружает их в ядро. Затем она инициализирует таблицы драйверов, создает все необходимые фоновые процессы и запускает программу ввода пароля или графический интерфейс на каждом терминале. |