Операционные системы и сети
..pdfФедеральное агентство по образованию
Томский государственный университет систем управления и радиоэлектроники
В.В. Одиноков В.П. Коцубинский
ОПЕРАЦИОННЫЕ СИСТЕМЫ И СЕТИ
Издание второе, дополненное
Учебное пособие
Рекомендовано учебно-методическим объединением вузов Российской Федерации по образованию в области радиотехники, электроники, биомедицинской техники и автоматизации
в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 220201 «Управление и информатика в технических системах»
Томск
ТУСУР
2008
2 |
Одиноков В.В., Коцубинский В.П. |
|
|
УДК 681.3.066.+681.324](075.8) ББК 32.973.2-018я73+32.988-5я73
О-42
Рецензенты:
В.А. Силич — д-р техн. наук, профессор Томск. политехн. ун-та; Е.А. Вейсов — канд. техн. наук, доцент Краснояр. гос. техн. ун-та
Одиноков В.В.
O-42 Операционные системы и сети : учеб. пособие / В.В. Одиноков, В.П. Коцубинский. – 2-е изд., доп. – Томск : Томск. гос. ун-т систем упр. и радиоэлектроники, 2007. – 391 с.
ISBN 978-5-86889-374-2
Рассматриваются вопросы организации и использования операционной системы UNIX: интерфейсы пользователя, принципы обеспечения мультипрограммирования и многопользовательской работы, организация основных подсистем UNIX (подсистем управления процессами, оперативной памятью и файлами). С целью практического изучения рассматриваемых вопросов приводится курс лабораторных работ.
Предназначено для специалистов по разработке и применению ЭВМ, программистов различной квалификации, а также студентов вузов соответствующих специальностей.
УДК 681.3.066.+681.324](075.8) ББК 32.973.2-018я73+32.988-5я73
|
© Одиноков В. В., |
|
Коцубинский В. П., 2006 |
|
© Одиноков В. В., |
|
Коцубинский В. П., 2008, |
|
с изменениями |
|
© Том. гос. ун-т систем упр. |
ISBN 978-5-86889-374-2 |
и радиоэлектроники, 2008 |
Оглавление |
3 |
Оглавление |
|
Введение ...................................................................................................... |
8 |
1. ИНТЕРФЕЙСЫ ПОЛЬЗОВАТЕЛЯ СИСТЕМЫ |
|
1.1. Функции системных программ...................................................... |
11 |
1.2. Файлы............................................................................................... |
16 |
1.3. Утилиты........................................................................................... |
22 |
1.4. Трансляторы.................................................................................... |
30 |
1.5. Язык управления операционной системой................................... |
37 |
1.5.1. Типы языков управления...................................................... |
37 |
1.5.2. Простые команды.................................................................. |
39 |
1.5.3. Составные команды.............................................................. |
43 |
1.5.4. Переменные и выражения.................................................... |
46 |
1.5.5. Управляющие операторы..................................................... |
52 |
1.5.6. Командные файлы................................................................. |
60 |
2. СИСТЕМНАЯ ПОДДЕРЖКА МУЛЬТИПРОГРАММИРОВАНИЯ |
|
2.1. Мультипрограммирование............................................................. |
65 |
2.2. Процессы......................................................................................... |
66 |
2.3. Ресурсы............................................................................................ |
70 |
2.4. Синхронизация параллельных процессов .................................... |
73 |
2.4.1. Синхронизация с помощью сигналов.................................. |
73 |
2.4.2. Терминальное управление процессами............................... |
76 |
2.4.3. Синхронизация конкурирующих процессов ...................... |
80 |
2.4.4. Синхронизация кооперирующихся процессов................... |
85 |
2.5. Информационные взаимодействия между процессами.............. |
86 |
2.5.1. Понятие информационного канала...................................... |
86 |
2.5.2. Обыкновенные программные каналы................................. |
90 |
2.5.3. Именованные программные каналы.................................... |
92 |
2.6. Тупики ............................................................................................. |
92 |
2.6.1. Причины появления тупиков............................................... |
92 |
2.6.2. Методы предотвращения тупиков....................................... |
94 |
2.6.3. Методы ликвидации тупиков............................................... |
99 |
3. ПОДДЕРЖКА МНОГОПОЛЬЗОВАТЕЛЬСКОЙ РАБОТЫ |
|
И СТРУКТУРА СИСТЕМЫ |
|
3.1. Управление доступом пользователя в систему......................... |
103 |
3.2. Защита файлов .............................................................................. |
108 |
3.3. Укрупненная структура операционной системы...................... |
113 |
3.4. Структура сетевой операционной системы................................ |
116 |
4. ПОДСИСТЕМА УПРАВЛЕНИЯ ПРОЦЕССАМИ |
|
4.1. Состояния процесса...................................................................... |
124 |
4.2. Создание процесса........................................................................ |
128 |
4.3. Обработка сигналов...................................................................... |
131 |
4.4. Диспетчеризация процессов........................................................ |
133 |
4 |
Одиноков В.В., Коцубинский В.П. |
|
|
4.5. Использование таймера для управления процессами................ |
141 |
|
4.6. Информационные взаимодействия между процессами............ |
143 |
|
4.6.1. Разделяемая память............................................................. |
143 |
|
4.6.2. Очереди сообщений............................................................ |
146 |
|
4.6.3. Сокеты ................................................................................. |
149 |
5. УПРАВЛЕНИЕ ОПЕРАТИВНОЙ ПАМЯТЬЮ |
|
|
|
И ПРОЦЕССОРОМ |
|
|
5.1. Задачи управления памятью........................................................ |
158 |
|
5.2. Сегментная виртуальная память.................................................. |
162 |
|
5.2.1. Преобразование адресов..................................................... |
162 |
|
5.2.2. Распределение памяти........................................................ |
168 |
|
5.2.3. Защита информации в оперативной памяти..................... |
171 |
|
5.3. Линейная виртуальная память.................................................... |
176 |
|
5.3.1. Преобразование адресов..................................................... |
176 |
|
5.3.2. Распределение памяти........................................................ |
178 |
|
5.4. Переключение процессора........................................................... |
181 |
|
5.4.1. Межсегментные переходы внутри процесса.................... |
181 |
|
5.4.2. Аппаратное переключение процессов............................... |
185 |
|
5.4.3. Обработка прерываний....................................................... |
188 |
6. УПРАВЛЕНИЕ ФАЙЛАМИ |
|
|
|
6.1. Виртуальная файловая система................................................... |
192 |
|
6.1.1. Логические файлы............................................................... |
192 |
|
6.1.2. Открытие файла .................................................................. |
194 |
|
6.1.3. Другие операции с файлами............................................... |
199 |
|
6.2. Реальные файловые системы....................................................... |
204 |
|
6.2.1. Критерии оценки файловых систем.................................. |
204 |
|
6.2.2. Физическое размещение информации на носителе ........ |
207 |
|
6.2.3. Каталоги............................................................................... |
213 |
|
6.2.4. Управляющие структуры данных...................................... |
215 |
|
6.3. Объединение реальных файловых систем.................................. |
219 |
|
6.4. Кэширование блоков данных....................................................... |
225 |
|
6.4.1. Традиционный подход к реализации дискового КЭШа.. |
225 |
|
6.4.2. Использование подсистемы управления памятью.......... |
229 |
7. ПОДСИСТЕМА ВВОДА-ВЫВОДА |
|
|
|
7.1. Предоставляемый интерфейс....................................................... |
232 |
|
7.2. Классификация драйверов........................................................... |
236 |
|
7.3. Аппаратный интерфейс................................................................ |
239 |
|
7.4. Одноуровневые драйверы............................................................ |
240 |
|
7.5. Двухуровневые драйверы ............................................................ |
245 |
|
7.5.1. Двухуровневый драйвер с опросом................................... |
247 |
|
7.5.2. Двухуровневый драйвер с прерыванием на байт............ |
251 |
|
7.5.3. Блочные драйверы с прямым доступом в память ............ |
255 |
Оглавление |
5 |
8. ПРИКЛАДНОЙ УРОВЕНЬ СЕТИ |
|
8.1. Общая структура сетевого приложения...................................... |
259 |
8.2. Выбор транспортного информационного канала...................... |
261 |
8.3. Транспортные интерфейсы.......................................................... |
267 |
8.3.1. Транспортные порты........................................................... |
267 |
8.3.2. Интерфейс сокетов UDP-канала........................................ |
269 |
8.3.3. Интерфейс сокетов TCP-канала......................................... |
270 |
8.4. Трансляция имен хостов .............................................................. |
271 |
8.5. Приложения для передачи файлов.............................................. |
276 |
8.5.1. Приложения на основе протокола FTP ............................. |
276 |
8.5.2. Электронная почта.............................................................. |
282 |
8.5.3. WEB-приложения................................................................ |
290 |
9. ЛАБОРАТОРНЫЙ КУРС |
|
9.1 Лабораторная работа № 1. |
|
Первоначальное знакомство с UNIX ........................................... |
300 |
9.1.1. Подготовка к выполнению работы.................................... |
300 |
9.1.2. Вход в систему и выход из нее .......................................... |
301 |
9.1.3. Текстовый редактор ed ....................................................... |
304 |
9.1.4. Работа в среде Midnight Commander.................................. |
307 |
9.1.5. Задание................................................................................. |
312 |
9.2. Лабораторная работа № 2. |
|
Дальнейшее знакомство с командами UNIX............................... |
313 |
9.2.1. Подготовка к выполнению работы.................................... |
313 |
9.2.2. Задание................................................................................. |
313 |
9.3. Лабораторная работа № 3. Управляющие операторы |
|
командного языка.......................................................................... |
314 |
9.3.1. Подготовка к выполнению работы.................................... |
314 |
9.3.2. Задание................................................................................. |
315 |
9.4. Лабораторная работа № 4. Процессы в UNIX............................ |
315 |
9.4.1. Подготовка к выполнению работы.................................... |
315 |
9.4.2. Сообщения другому пользователю................................... |
316 |
9.4.3. Задание................................................................................. |
317 |
9.5. Лабораторная работа № 5. Операции с файлами |
|
в программе на языке СИ............................................................. |
318 |
9.5.1. Подготовка к выполнению работы.................................... |
318 |
9.5.2. Характеристика языка СИ.................................................. |
318 |
9.5.3. Открытие существующего файла...................................... |
319 |
9.5.4. Создание файла................................................................... |
322 |
9.5.5. Указатель файла.................................................................. |
324 |
9.5.6. Чтение из файла................................................................... |
326 |
9.5.7. Запись в файл....................................................................... |
328 |
9.5.8. Закрытие и уничтожение файла......................................... |
329 |
6 |
Одиноков В.В., Коцубинский В.П. |
|
|
9.5.9. Задание................................................................................. |
330 |
|
9.6. Лабораторная работа № 6. Системные вызовы |
|
|
для управления процессами......................................................... |
330 |
|
9.6.1. Подготовка к выполнению работы.................................... |
331 |
|
9.6.2. Создание процесса.............................................................. |
331 |
|
9.6.3. Ожидание завершения потомка......................................... |
332 |
|
9.6.4. Загрузка новой программы................................................. |
334 |
|
9.6.5. Совместное применение вызовов fork и exec.................... |
335 |
|
9.6.6. Наследование данных при создании процесса |
|
|
и при загрузке программы.................................................. |
337 |
|
9.6.7. Задание................................................................................. |
339 |
|
9.7. Лабораторная работа № 7. Обработка сигналов........................ |
339 |
|
9.7.1. Подготовка к выполнению работы.................................... |
339 |
|
9.7.2. Изменение диспозиции сигналов....................................... |
339 |
|
9.7.3. Наборы сигналов................................................................. |
342 |
|
9.7.4. Сеансы и группы процессов............................................... |
344 |
|
9.7.5. Посылка сигналов другим процессам............................... |
346 |
|
9.7.6. Сигнал таймера.................................................................... |
348 |
|
9.7.7. Задание................................................................................. |
349 |
|
9.8. Лабораторная работа № 8. Управление терминалом................ |
350 |
|
9.8.1. Функции терминальной линии .......................................... |
350 |
|
9.8.2. Специальные символы редактирования |
|
|
и выдачи сигналов .............................................................. |
353 |
|
9.8.3. Управляющая структура termios........................................ |
355 |
|
9.8.4. Задание................................................................................. |
358 |
|
9.9. Лабораторная работа № 9. Датаграммные |
|
|
локальные каналы......................................................................... |
359 |
|
9.9.1. Подготовка к выполнению работы.................................... |
359 |
|
9.9.2. Порядок выдачи системных вызовов................................ |
359 |
|
9.9.3. Создание сокета................................................................... |
360 |
|
9.9.4. Связывание сокета со своим адресом................................ |
361 |
|
9.9.5. Прием и передача датаграмм............................................. |
363 |
|
9.9.6. Программы взаимодействующих процессов.................... |
366 |
|
9.9.7. Задание................................................................................. |
369 |
|
9.10. Лабораторная работа № 10. Сетевые датаграммные |
|
|
каналы.......................................................................................... |
370 |
|
9.10.1. Состав и порядок выдачи системных вызовов............. |
370 |
|
9.10.2. Создание сокета.............................................................. |
370 |
|
9.10.3. Связывание сокета со своим адресом........................... |
371 |
|
9.10.4. Прием и передача датаграмм......................................... |
373 |
|
9.10.5. Задание............................................................................. |
375 |
Оглавление |
7 |
9.11. Лабораторная работа № 11. Локальные виртуальные |
|
соединения................................................................................... |
376 |
9.11.1. Порядок выдачи системных вызовов............................ |
376 |
9.11.2. Создание очереди запросов на соединение |
|
и работа с ней................................................................... |
377 |
9.11.3. Работа с виртуальным соединением ............................. |
379 |
9.11.4. Закрытие виртуального соединения.............................. |
380 |
9.11.5. Программы взаимодействующих процессов................ |
380 |
9.11.6. Задание............................................................................. |
384 |
9.12. Лабораторная работа № 12. Сетевые виртуальные |
|
соединения................................................................................... |
385 |
9.12.1. Состав и порядок выдачи системных вызовов............ |
385 |
9.12.2. Задание адреса главного сокета..................................... |
386 |
9.12.3. Использование адреса главного сокета......................... |
387 |
9.12.4. Задание............................................................................. |
388 |
Литература............................................................................................... |
390 |
Введение
Данное пособие предназначено для обучения студентов специальности 220300 «Системы автоматизированного проектирования» по односеместровой дисциплине «Операционные системы», изучаемой во втором семестре обучения. Кроме того, оно может использоваться в качестве основного или дополнительного пособия по курсам:
1)«Организация ЭВМ и систем» (специальность 220300);
2)«Сети ЭВМ и телекоммуникации» (специальность 220300);
3)«Системное программное обеспечение» (специальность
220201);
4)«Вычислительные машины, системы и сети» (специальность
220201);
5)«Информационные сети и коммуникации» (специальность
220201).
Основной целью дисциплины «Операционные системы» является изучение принципов организации операционных систем на примере операционной системы UNIX. Задачи изучения дисциплины:
1)изучение основных принципов реализации пользовательских интерфейсов операционной системы и получение практических навыков по программированию на командном языке операционной системы UNIX;
2)изучение основных принципов реализации мультипрограммирования и многопользовательской работы системы;
3)ознакомление с программными и аппаратными средствами вычислительной системы, предназначенными для реализации мультипрограммирования;
4)изучение принципов организации информации на периферийных устройствах, а также принципов управления этими устройствами;
5)ознакомление с принципами построения сетей передачи дан-
ных.
Изучение данной дисциплины предполагает предварительное освоение студентами следующих дисциплин: 1) «Информатика»;
2)«Алгоритмические языки и программирование». Изучение дисциплины «Операционные системы» заканчивается получением зачета и сдачей экзамена.
Данное пособие состоит из девяти глав, которые можно разбить на четыре группы:
Введение |
9 |
1)пользовательские интерфейсы и основные принципы построения операционных систем — главы 1–3;
2)реализация основных программных интерфейсов — главы 4,
6 и 8;
3)управление аппаратными средствами вычислительной системы — главы 5 и 7;
4)лабораторные работы — глава 9.
Всоответствии с данным разбиением пособия на группы глав могут быть реализованы различные учебные курсы по дисциплине «Операционные системы»:
1) вводный курс — главы 1–3, разделы 9.1–9.4;
2) базовый курс — главы 1–4, 6, разделы 9.1–9.8;
3) подробный курс — главы 1–9.
Так как для специальности 220300 требуется углубленная подготовка в области программирования, то используется третий вариант, представленный в данном пособии.
Существующие подходы к изложению дисциплины «Операционные системы» можно разделить на два: 1) односистемный;
2)многосистемный. В первом из этих подходов изложение ведется на примере одной, а во втором — на примере нескольких операционных систем. Несмотря на то что многосистемный подход преследует цель обеспечения системности в восприятии материала, практическое достижение этой цели весьма затруднено, во-первых, из-за чрезмерного объема информации (попытка объять необъятное). Во-вторых, абстрактное изложение материала достаточно скучно для читателя, привыкшего к работе в среде одной-двух конкретных операционных систем.
Вданном учебном пособии используется односистемный подход, предполагающий рассмотрение операционной системы UNIX. Применительно к этой системе термин «односистемный подход» достаточно условный, так как в настоящее время «UNIX» является собирательным названием, обозначающим достаточно большую группу реальных ОС, имеющих схожие пользовательские и программные интерфейсы. Существенными достоинствами любой UNIX-системы являются, во-первых, универсальность — пригодность для решения практически любой задачи по переработке информации, независимо от особенностей алгоритма этой задачи и от числа пользователей, участвующих в ее решении; во-вторых, UNIX неприхотлива к используемой аппаратной базе и может выполняться на различных конфигурациях аппаратуры
10 |
Одиноков В.В., Коцубинский В.П. |
и на процессорах различных моделей. С учетом того что практически все читатели имеют опыт работы в среде операционной системы Windows, а многие — и в среде MS-DOS, в первых главах пособия наряду с UNIX приводятся сведения и об этих системах.
Следует отметить, что при описании системных программных вызовов в пособии приводятся не реальные системные вызовы UNIX, записанные на языке программирования этой системы СИ, а упрощенные их варианты, записанные на псевдоязыке. Его применение преследует цель сделать материал пособия доступным для читателя, не знакомого с СИ, а также позволяет избавиться от деталей, связанных с применением данного языка и не относящихся к ОС. Запись любого системного вызова на этом псевдоязыке представляет собой русское название требуемой операции, за которым в круглых скобках приведен список параметров вызова, причем входные и выходные параметры разделяются символами «||». При этом с целью упрощения изложения материала некоторые второстепенные параметры системных вызовов UNIX опущены.