ОСиС_2008
.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 опущены.
