Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОСиС_2008

.pdf
Скачиваний:
95
Добавлен:
29.05.2015
Размер:
2.65 Mб
Скачать

Федеральное агентство по образованию

Томский государственный университет систем управления и радиоэлектроники

В.В. Одиноков В.П. Коцубинский

ОПЕРАЦИОННЫЕ СИСТЕМЫ И СЕТИ

Издание второе, дополненное

Учебное пособие

Рекомендовано учебно-методическим объединением вузов Российской Федерации по образованию в области радиотехники, электроники, биомедицинской техники и автоматизации

в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 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 опущены.