Глава 5. Управление вводом-выводом
в операционных системах..................................................... 130
Основные концепции организации ввода-вывода в операционных системах......... 131
Режимы управления вводом-выводом............................................................................... 134
Закрепление устройств, общие устройства ввода-вывода ........................................... 136
Основные системные таблицы ввода-вывода.................................................................. 138
Синхронный и асинхронный ввод-вывод......................................................................... 143
Организация внешней памяти на магнитных дисках....................................................... 145
Основные понятия........................................................................................................... 145
Логическая структура магнитного диска....................................................................... 146
Системный загрузчик Windows NT/2000/XP................................................................. 155
Кэширование операций ввода-вывода при работе с накопителями
на магнитных дисках........................................................................................................ 156
Контрольные вопросы и задачи.......................................................................................... 161
Вопросы для проверки ................................................................................................... 161
Задания............................................................................................................................... 162
Глава 6. Файловые системы...................................................... 163
Функции файловой системы и иерархия данных............................................................ 163
Файловая система FAT........................................................................................................... 166
Таблица размещения файлов ....................................................................................... 167
Структура загрузочной записи DOS............................................................................. 170
Файловые системы VFAT и FAT32................................................................................. 171
Файловая система HPFS ....................................................................................................... 177
Файловая система NTFS........................................................................................................ 188
Основные возможности файловой системы NTFS................................................... 189
Структура тома с файловой системой NTFS.............................................................. 190
Разрешения NTFS............................................................................................................. 194
6__________________________________________________________ Содержание
Контрольные вопросы и задачи.......................................................................................... 207
Вопросы для проверки ................................................................................................... 207
Задания............................................................................................................................... 208
Глава 7. Организация параллельных
взаимодействующих вычислений...................................... 209
Независимые и взаимодействующие вычислительные процессы................................ 209
Средства синхронизации и связи взаимодействующих вычислительных процессов 215
Использование блокировки памяти при синхронизации параллельных процессов.... 215
Семафорные примитивы Дейкстры ............................................................................. 224
Мьютексы............................................................................................................................ 229
Использование семафоров при проектировании взаимодействующих
вычислительных процессов ................................................................................... 230
Мониторы Хоара .................................................................................................................... 236
Почтовые ящики...................................................................................................................... 240
Конвейеры и очереди сообщений....................................................................................... 242
Конвейеры.......................................................................................................................... 242
Очереди сообщений........................................................................................................ 244
Контрольные вопросы и задачи.......................................................................................... 246
Глава 8. Проблема тупиков и методы борьбы с ними .. 247
Понятие тупиковой ситуации при выполнении параллельных
вычислительных процессов.......................................................................................... 247
Примеры тупиковых ситуаций и причины их возникновения ..................................... 249
Пример тупика на ресурсах типа CR............................................................................ 250
Пример тупика на ресурсах типа CR и SR.................................................................. 251
Пример тупика на ресурсах типа SR............................................................................ 252
Формальные модели для изучения проблемы тупиковых ситуаций........................... 254
Сети Петри......................................................................................................................... 254
Модель пространства состояний системы................................................................. 259
Методы борьбы с тупиками.................................................................................................. 263
Предотвращение тупиков............................................................................................... 263
Обход тупиков................................................................................................................... 264
Обнаружение тупика........................................................................................................ 267
Контрольные вопросы и задачи.......................................................................................... 277
Глава 9. Архитектура операционных систем....................... 278
Основные принципы построения операционных систем............................................. 279
Принцип модульности ................................................................................................... 279
Принцип особого режима работы................................................................................ 280
Принцип виртуализации................................................................................................ 281
Принцип мобильности................................................................................................... 283
Принцип совместимости ............................................................................................... 285
Принцип генерируемости.............................................................................................. 286
Принцип открытости....................................................................................................... 287
Принцип обеспечения безопасности вычислений................................................... 287
Микроядерные операционные системы ........................................................................... 289
Макроядерные операционные системы............................................................................ 292
Требования к операционным системам реального времени........................................ 293
Мультипрограммность и мультизадачность............................................................... 294
Приоритеты задач............................................................................................................. 294
Наследование приоритетов........................................................................................... 295
Сихронизация процессов и задач................................................................................ 295
Предсказуемость............................................................................................................... 296
Интерфейсы операционных систем................................................................................... 296
Содержание__________________________________________________________ 7
Интерфейс прикладного программирования................................................................... 298
Реализация функций API на уровне модулей операционной системы................ 299
Реализация функций API на уровне системы программирования........................ 300
Реализация функций API с помощью внешних библиотек...................................... 302
Интерфейс POSIX.................................................................................................................... 304
Примеры программирования для разных интерфейсов API......................................... 307
Контрольные вопросы и задачи.......................................................................................... 310
Глава 10. Краткий обзор современных
операционных систем.................................................... 311
Семейство операционных систем UNIX............................................................................. 312
Общая характеристика и особенности архитектуры................................................ 312
Основные понятия........................................................................................................... 314
Функционирование.......................................................................................................... 320
Файловая система............................................................................................................ 323
Взаимодействие между процессами ............................................................................ 329
Операционная система Linux......................................................................................... 336
Операционная система FreeBSD................................................................................... 339
Сетевая операционная система реального времени QNX............................................. 340
Архитектура системы QNX.............................................................................................. 342
Основные механизмы организации распределенных вычислений ..................... 345
Семейство операционных систем OS/2 Warp компании IBM........................................ 351
Особенности архитектуры и основные возможности ............................................. 354
Особенности интерфейсов............................................................................................ 357
Серверная операционная система OS/2 Warp 4.5..................................................... 359
Контрольные вопросы и задачи.......................................................................................... 360
Глава 11. Операционные системы Windows........................ 361
Операционные системы Windows 9x................................................................................. 363
Краткая историческая справка ...................................................................................... 363
Общие сведения................................................................................................................ 365
Организация многозадачности...................................................................................... 369
Распределение оперативной памяти........................................................................... 373
Операционные системы Windows NT/2000/XP.................................................................. 378
Краткая историческая справка ...................................................................................... 378
Основные особенности архитектуры .......................................................................... 382
Модель безопасности...................................................................................................... 387
Распределение оперативной памяти........................................................................... 390
Контрольные вопросы и задачи.......................................................................................... 394
Вопросы для проверки ................................................................................................... 394
Задания............................................................................................................................... 395
Список терминов............................................................... 396
Список литературы........................................................... 406
Алфавитный указатель...................................................... 409
Введение
Как известно, процесс проникновения информационных технологий практически во все сферы человеческой деятельности продолжает развиваться и углубляться. Помимо уже привычных и широко распространенных персональных компьютеров, общее число которых достигло многих сотен миллионов, становится все больше и встроенных средств вычислительной техники. Пользователей всей этой разнообразной вычислительной техники становится все больше, причем наблюдается развитие двух вроде бы противоположных тенденций. С одной стороны, информационные технологии все усложняются, и для их применения, и тем более дальнейшего развития, требуется иметь очень глубокие познания. С другой стороны, упрощаются интерфейсы взаимодействия пользователей с компьютерами. Компьютеры и информационные системы становятся все более дружественными и понятными даже для человека, не являющегося специалистом в области информатики и вычислительной техники. Это стало возможным прежде всего потому, что пользователи и их программы взаимодействуют с вычислительной техникой посредством специального (системного) программного обеспечения — через операционную систему.
Операционная система предоставляет интерфейсы и для выполняющихся приложений, и для пользователей. Программы пользователей, да и многие служебные программы запрашивают у операционной системы выполнение тех операций, которые достаточно часто встречаются практически в любой программе. К таким операциям, прежде всего, относятся операции ввода-вывода, запуск или останов какой-нибудь программы, получение дополнительного блока памяти или его освобождение и многие другие. Подобные операции невыгодно каждый раз программировать заново и непосредственно размещать в виде двоичного кода в теле программы, их удобнее собрать вместе и предоставлять для выполнения по запросу из программ. Это и есть одна из важнейших функций операционных систем. Прикладные программы, да и многие системные обрабатывающие программы (такие, например, как системы программирования или системы управления базами данных), не имеют непосредственного доступа к аппаратуре компьютера, а взаимодействуют с ней только через обращения к операционной системе. Пользователи также путем ввода команд операционной системы или выбором возможных дей-
Введение_____________________________________________________________ 9
ствий, предлагаемых системой, взаимодействуют с компьютером и своими программами. Такое взаимодействие осуществляется исключительно через операционную систему. Помимо выполнения этой важнейшей функции операционные системы отвечают за эффективное распределение вычислительных ресурсов и организацию надежных вычислений.
Знание основ организации операционных систем и принципов их функционирования позволяет использовать компьютеры более эффективно. Глубокое изучение операционных систем позволяет применить эти знания прежде всего при создании программного обеспечения. Если, к большому сожалению, в нашей стране в последние годы практически не создаются новые операционные системы, то разработки сложных информационных систем, комплексов программ и отдельных приложений, предназначенных для работы в широко распространенных операционных системах, ведутся достаточно интенсивно, причем большим числом организаций. И здесь знание операционных систем, принципов их функционирования, методов организации вычислений является не только желательным, но обязательным.
Дисциплина «Операционные системы» является одной из важнейших. Она включена в Государственный образовательный стандарт по направлению 654600 — «Информатика и вычислительная техника» и отнесена к блоку общепрофессиональных дисциплин. В рамках этого направления имеется несколько специальностей, в том числе 220100 — «Вычислительные машины, комплексы, системы и сети», 220200 — «Автоматизированные системы обработки информации и управления», 220300 — «Системы автоматизированного проектирования», 220400 — «Программное обеспечение вычислительной техники и автоматизированных систем». Именно для студентов вузов, обучающихся по этим специальностям, и предназначается настоящая книга. Однако она может быть востребована и студентами других специальностей, изучающих информатику и вычислительную технику, а также обычными подготовленными пользователями, желающими углубить свои познания в области операционных систем, ибо сегодня уже мало просто уметь работать на компьютере, а желательно понимать, как он работает, как организуются в нем вычисления. Знания основных принципов организации вычислительных процессов, понимание проблем, которые при этом возникают, и методов их решения позволяют обдуманно подходить к использованию компьютера, предусмотреть и предотвратить нежелательные явления. Помимо общетеоретических в книге рассмотрены и отдельные практические вопросы, описаны конкретные реализации отдельных модулей и подсистем.
Учебный материал, ставший основой для настоящей книги, уже в течение нескольких лет читается студентам специальности 220100 в Санкт-Петербургском государственном университете аэрокосмического приборостроения. Материал построен с учетом упомянутого Государственного образовательного стандарта по направлению «Информатика и вычислительная техника», регламентирующего содержание дисциплины «Операционные системы». В основу издания легла переработанная первая часть учебника «Системное программное обеспечение», вышедшего в издательстве «Питер» в 2001 году и используемого в учебном процессе во
10___________________________________________________________ Введение
многих вузах. При работе над рукописью автор постарался учесть те советы и замечания от коллег по цеху, которые были получены после выхода в свет книги «Системное программное обеспечение».
Напоследок хочется высказать самые теплые слова благодарности всем тем, кто принял участие в подготовке этой книги к изданию. Это и Андрей Васильев, которого, к сожалению, уже больше нет среди нас, и его замечательные коллеги — сотрудники издательства «Питер». Своим кропотливым трудом, вниманием и доброжелательным отношением они помогли преодолеть возникшие трудности. Работа над книгой — длительный процесс: хочется улучшить то одно, то другое, переписать или добавить, а времени свободного, да еще в достаточном количестве, как всегда, нет. В связи с этим хочется также поблагодарить своих родных и близких за долготерпение, доброжелательность и сердечную заботу в течение всего времени работы над рукописью. Без их поддержки эта книга, скорее всего, не состоялась бы.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу электронной почты [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
Подробную информацию о наших книгах вы найдете на web-сайте издательства http://www.piter.com.
Глава1. Основныепонятия
Эта глава является вводной и, пожалуй, самой главной. Любой предмет имеет свои основные понятия и положения. Не является исключением и дисциплина «Операционные системы». К основным понятиям, без которых практически невозможно по-настоящему изучить эту дисциплину, понять основные принципы организации вычислений, взаимодействия прикладных программ с операционной системой и пользователей с компьютерами, следует, прежде всего, отнести понятия вычислительных процессов и ресурсов, системной программы, супервизора, операционной среды, прерываний. Мы также рассмотрим относительно новые понятия, к которым относятся поток выполнения и задача; они дополняют понятие вычислительного процесса и позволяют более эффективно организовать работу компьютера. Поскольку абсолютное большинство операционных систем обеспечивают возможность параллельного выполнения нескольких программ, мы познакомимся с понятием мультипрограммирования. Завершается глава обзором основных общепринятых классификаций.