Илюшечкина Л.В., Илюшечкин В.М. — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Илюшечкина Л.В., Илюшечкин В.М.

2017-11-16 287
Илюшечкина Л.В., Илюшечкин В.М. 0.00 из 5.00 0 оценок
Заказать работу

Илюшечкина Л.В., Илюшечкин В.М.

Учебно-методические разработки для самостоятельной работы студентов, изучающих дисциплину «Операционные системы». - М.: МИЭТ, 2007. - 111 с.: ил.

 

Учебно-методические разработки подготовлены для использования при выполнении самостоятельных работ студентами, изучающими дисциплину «Операционные системы», и содержат как теоретические, так и практические сведения о принципах постороения операционных систем.

Разработки предназначены для студентов, обучающихся по техническим специальностям.

© МИЭТ, 2007

Оглавление

Введение...................................................................................................... 7

Раздел 1. Основные сведения об операционных системах................... 8

Тема 1. Функции и классификация операционных систем............................... 8

1.1. Функции ОС................................................................................................................ 8

1.1. История ОС............................................................................................................... 10

1.3. Классификация ОС................................................................................................... 12

Вопросы для самоконтроля............................................................................................. 14

Тема 2. Структура операционных систем. Системные вызовы...................... 14

2.1. Структура ОС............................................................................................................ 14

2.2. Выполнение системных вызовов............................................................................ 15

2.3. Понятие операционной и программной среды..................................................... 16

Вопросы для самоконтроля............................................................................................. 17

Раздел 2. Процессы и потоки.................................................................. 18

Тема 3. Процессы............................................................................................................ 18

3.1. Основные сведения о процессах............................................................................. 18

3.2. Модели процесса....................................................................................................... 19

3.3. Описание процессов................................................................................................. 22

3.4. Управление процессами........................................................................................... 23

3.5. Выполнение кода ОС по отношению к процессам............................................... 23

Вопросы для самоконтроля............................................................................................. 25

Тема 4. Системные вызовы управления процессами в ОС UNIX.................. 26

4.1. Создание процесса.................................................................................................... 26

4.2. Завершение процесса................................................................................................ 27

4.3. Изменение образа памяти процесса........................................................................ 28

4.4. Синхронизация между родительским и дочерним процессами.......................... 28

4.5. Состояние "зомби".................................................................................................... 29

Вопросы для самоконтроля............................................................................................. 29

Тема 5. Сигналы в ОС UNIX....................................................................................... 30

5.1. Назначение сигналов................................................................................................ 30

5.2. Обработка сигналов.................................................................................................. 30

5.3. Посылка сигнала процессу...................................................................................... 32

Вопросы для самоконтроля............................................................................................. 33

Тема 6. Потоки................................................................................................................. 33

6.1. Основные понятия.................................................................................................... 33

6.2. Основные операции с потоками............................................................................. 34

6.3. Способы реализации потоков................................................................................. 35

Вопросы для самоконтроля............................................................................................. 37

Тема 7. Взаимоблокировки......................................................................................... 37

7.1. Основные понятия.................................................................................................... 37

7.2. Моделирование взаимоблокировок........................................................................ 39

7.3. Обнаружение взаимоблокировок............................................................................ 41

7.4. Избежание взаимоблокировок................................................................................ 43

Вопросы для самоконтроля............................................................................................. 45

Раздел 3. Взаимодействие процессов..................................................... 47

Тема 8. Проблема взаимного исключения и способы ее решения................ 47

8.1. Основные понятия.................................................................................................... 47

8.2. Аппаратные способы достижения взаимного исключения................................. 49

8.3. Программные способы достижения взаимного исключения.............................. 50

Вопросы для самоконтроля............................................................................................. 52

Тема 9. Примитивы синхронизации......................................................................... 53

9.1. Семафоры................................................................................................................... 53

9.2. Мьютексы.................................................................................................................. 54

9.3. Мониторы.................................................................................................................. 55

Вопросы для самоконтроля............................................................................................. 57

Тема 10. Классические проблемы межпроцессного взаимодействия.......... 58

10.1. Проблема производителя и потребителя.............................................................. 58

10.2. Задача о читателях и писателях............................................................................. 59

10.3. Задача об обедающих философах.......................................................................... 60

10.4. Задача о спящем парикмахере............................................................................... 60

10.5. Задача о железнодорожном перегоне................................................................... 61

Вопросы для самоконтроля............................................................................................. 61

Тема 11. Межпроцессное взаимодействие в ОС UNIX....................................... 61

11.1. Неименованные каналы......................................................................................... 62

11.2. Именованные каналы............................................................................................. 64

11.3. Очереди сообщений................................................................................................ 65

11.4. Разделяемая память................................................................................................. 67

Вопросы для самоконтроля............................................................................................. 67

Тема 12. Передача сообщений.................................................................................... 68

12.1. Характеристика систем передачи сообщений..................................................... 68

12.2. Модель клиент-сервер............................................................................................ 69

Вопросы для самоконтроля............................................................................................. 70

Тема 13. API сокетов ОС UNIX................................................................................... 70

13.1. Межпроцессное взаимодействие при помощи сокетов...................................... 70

13.2. Системные вызовы работы с сокетами в ОС UNIX........................................... 73

Вопросы для самоконтроля............................................................................................. 76

Раздел 4. Планирование.......................................................................... 77

Тема 14. Краткосрочное планирование.................................................................. 77

14.1. Основные понятия.................................................................................................. 77

14.2. Критерии краткосрочного планирования............................................................ 78

14.3. Стратегии краткосрочного планирования........................................................... 78

Вопросы для самоконтроля............................................................................................. 79

Раздел 5. Управление памятью.............................................................. 80

Тема 15. Технологии распределения памяти........................................................ 80

15.1. Фиксированное распределение............................................................................. 80

15.2. Динамическое распределение............................................................................... 81

15.3. Система двойников................................................................................................ 82

15.4. Простая страничная организация.......................................................................... 82

15.5. Простая сегментная организация.......................................................................... 83

Вопросы для самоконтроля............................................................................................. 84

Тема 16. Виртуальная память.................................................................................... 85

16.1. Предпосылки для организации виртуальной памяти......................................... 85

16.2. Страничная организация виртуальной памяти................................................... 86

16.3. Сегментация............................................................................................................ 87

16.4. Комбинация сегментации и страничной организации...................................... 88

16.5. Алгоритмы управления виртуальной памятью................................................... 89

Вопросы для самоконтроля............................................................................................. 92

Раздел 6. Ввод-вывод и файловая система........................................... 94

Тема 17. Ввод-вывод...................................................................................................... 94

17.1. Принципы программного обеспечения ввода-вывода....................................... 94

17.2. Программные уровни ввода-вывода.................................................................... 95

Вопросы для самоконтроля............................................................................................. 98

Тема 18. Физическая организация файловой системы..................................... 98

18.1. Цели и задачи файловой системы......................................................................... 98

18.2. Устройство диска.................................................................................................... 99

18.3. Физическая организация и адресация файла..................................................... 101

Вопросы для самоконтроля........................................................................................... 104

Тема 19. Логическая организация файловой системы................................... 104

19.1. Типы файлов.......................................................................................................... 105

19.2. Иерархическая структура файловой системы.................................................... 105

19.3. Атрибуты файлов.................................................................................................. 107

Вопросы для самоконтроля........................................................................................... 109

Литература............................................................................................. 110

Перечень сокращений........................................................................... 111


Введение

Учебно-методические разработки для самостоятельной работы студентов содержат теоретические сведения, касающиеся построения операционных систем, а также практические сведения по использованию системных вызовов в ОС UNIX.

Учебный материал структурирован посредством выделения разделов и тем, предназначенных для самостоятельного изучения. Студенты могут самостоятельно проконтролировать степень усвоения изученного материала с помощью вопросов, помещенных в конце отдельной темы или группы тем.

Функции ОС

Операционная система (ОС) – это программа, управляющая работой других программ, как прикладных, так и системных, и являющаяся интерфейсом между программами и аппаратным обеспечением компьютера.

Можно выделить две основные функции ОС:

- интерфейс между пользователем и компьютером;

- менеджер ресурсов.

Интерфейс между пользователем и компьютером. На рис. 1.1 представлена иерархическая структура программного обеспечения.

 

Конечный пользователь обычно не интересуется деталями устройства аппаратного обеспечения электронно-вычислительной машины (ЭВМ). ЭВМ видится ему как набор приложений. Приложения пишутся программистами на каком-либо из языков программирования. Если использовать машинный язык и программировать все функции управления компьютером, то написание программы превратится в очень сложную задачу. Чтобы ее упростить, имеется набор системных программ (часть из них называется утилитами), которые реализуют часто используемые функции (например, работу с файлами, управление устройствами ввода-вывода). Программист использует эти средства при разработке собственных программ.

Наиболее важной частью системных программ является ОС, которая непосредственно взаимодействует с аппаратурой. ОС скрывает от программиста детали аппаратного обеспечения и предоставляет ему удобный интерфейс для использования системы. ОС выступает в роли посредника, облегчая программисту и приложениям доступ к различным службам, скрывает детали аппаратного обеспечения от пользователя. Абстракции, предлагаемые ОС, намного проще и удобнее в обращении, чем-то, что может предложить пользователю непосредственно оборудование. Т.е. с точки зрения пользователя ОС выполняет функцию виртуальной машины, в которой проще программировать и легче работать, чем с "голым" железом.

Менеджер ресурсов. ОС обеспечивает распределение ресурсов между программами, состязающимися за право их использовать. Управление ресурсами включает в себя их распределение во времени (например, процессор, принтер) и в пространстве (например, оперативная память, дисковое пространство).

Сервисы, предоставляемые типичными операционными системами:

1. Разработка программ. ОС предоставляет программисту инструменты разработки приложений: компиляторы, компоновщики, отладчики.

2. Исполнение программ. ОС выполняет работу по загрузке в ОП команд и данных, инициализации устройств ввода-вывода и файлов, подготовке других ресурсов.

3. Доступ к УВВ. Для управления работой каждого устройства нужен свой особый набор команд и управляющих сигналов. ОС предоставляет пользователю унифицированный интерфейс, который скрывает все детали и обеспечивает программисту доступ к устройствам ввода-вывода с помощью простых команд чтения/записи.

4. Доступ к файлам. Управление со стороны ОС предполагает знание специфики устройств ввода-вывода, структур данных, записанных в файл. ОС также обеспечивает защиту файлов.

5. Распределение ресурсов. ОС обеспечивает доступ к ВС в целом, к ее ресурсам, защиту от несанкционированного использования, разрешение конфликтных ситуаций.

6. Обнаружение и обработка ошибок. ОС минимизирует влияние ошибок (ошибок в аппаратном обеспечении, программных ошибок) на работу приложения. При возникновении ошибка реакция ОС может быть различной – от выдачи сообщения до снятия приложения.

7. Учет использования ресурсов. Важно для настройки ВС с целью увеличения ее производительности.

8. Средства коммуникации.

9. Защита программ и данных.

История ОС

В первых ЭВМ (до середины 1950-х годов) ОС не было. Позже были разработаны специальные программы для автоматизации труда оператора, которые назвали "операционные системы".

Ниже перечислены основные этапы в развитии операционных систем

1. Простые пакетные ОС. Первые ОС были разработаны для ЭВМ второго поколения (1955-65 гг.). Задания на машинных носителях собирались в пакеты и помещались в устройство ввода данных. ОС, или монитор, считывала с УВВ по одному заданию и передавала ему управление. По завершении задания или при возникновении ошибки управление возвращалось к монитору, который начинал считывать следующее задание. Примеры пакетных ОС: FMS (Fortran Monitor System), IBSYS (ОС, созданная фирмой IBM для ЭВМ IBM 7094).

2. Многозадачные пакетные ОС. Процессору часто приходилось простаивать в ожидании завершения медленных операций ввода-вывода. Эффективность использования процессора можно повысить: когда одно задание ждет завершения операции ввода-вывода, другое может использовать процессор. Это возможно, если в ОП достаточно места для ОС и двух программ пользователя. Работа такой многозадачной ОС базируется на следующих аппаратных возможностях компьютера:

- наличие контроллеров внешних устройств, или каналов, работающих независимо от процессора, и позволяющих выполнять операции ввода-вывода параллельно с командами процессора;

- наличие системы прерываний, с помощью которых контроллер взаимодействует с процессором.

Используя эти возможности, процессор генерирует команду ввода-вывода для одного задания и затем переходит к другому на то время, пока контроллер выполняет ввод-вывод. После завершения ввода-вывода процессор получает сигнал прерывания, и управление передается обработчику прерываний из состава ОС. Затем ОС передает управление другому заданию.

Многозадачные ОС сложнее систем пакетной обработки заданий, поскольку при одновременном нахождении в ОП нескольких заданий возникают проблемы по управлению памятью, по планированию (решение, какую из задач выбрать на выполнение следующей) и по защите задач друг от друга. Примеры многозадачных пакетных ОС: OS/360 фирмы IBM.

1. ОС разделения времени. Разделением времени называют многозадачность, используемую для обработки нескольких интерактивных заданий. Несколько пользователей одновременно получают доступ к системе с помощью терминалов, а ОС чередует исполнение программ каждого пользователя через малые промежутки времени. Таким образом, каждому пользователю предоставляется 1/ n часть полной скорости ЭВМ, не считая затрат на работу ОС. И пакетная обработка, и разделение времени используют многозадачность. В табл. 1.1 показаны основные различия этих двух режимов. Примеры ОС разделения времени: CTSS (Compatible Time-Sharing System), MULTICS.

Таблица 1.1

Сравнение режимов пакетной многозадачности и разделения времени

  Пакетная многозадачность Разделение времени
Основная цель Максимальное использование процессора Уменьшение времени отклика
Источник указаний операционной системе Команды языка управления заданиями, помещаемые в задание Команды, вводимые с терминала

Классификация ОС

По назначению

- ОС мейнфреймов. В основном ориентированы на обработку множества одновременных заданий, большинству из которых требуется много операций ввода-вывода. Могут выполнять три вида обслуживания (часто все вместе): пакетная обработка, обработка транзакций, работа в режиме разделения времени. Пример ОС: OS/390, произошедшая от OS/360.

- Серверные ОС работают на серверных компьютерах. Они одновременно обслуживают множество пользователей и позволяют им делить между собой программные и аппаратные ресурсы. Примеры серверов – файловый сервер, сервер базы данных (БД), web-сервер. Примеры ОС: UNIX, Windows 2000, Linux.

- Сетевые ОС. В сетевой ОС пользователи знают существовании многих ЭВМ, могут регистрироваться на удаленных машинах и копировать файлы с одной ЭВМ на другую. Каждый компьютер работает под управлением локальной ОС и имеет своего собственного локального пользователя (или пользователей). Сетевые ОС несущественно отличаются от однопроцессорных ОС. Для того чтобы пользователи могли регистрироваться на удаленных ЭВМ и получать доступ к удаленным файлам, в ОС должны быть специальные программы. Но эти дополнения, по сути, не изменяют структуры ОС.

- Распределенные ОС представляются пользователям традиционной однопроцессорной системой, хотя они и составлены из множества процессоров или компьютеров. При этом расположение программ и файлов прозрачно для пользователя, все это автоматически и эффективно обрабатывается самой ОС. Для создания распределенной ОС недостаточно просто добавит дополнительный код к однопроцессорной ОС, так как распределенные и централизованные ОС имеют существенные различия. Распределенные ОС часто позволяют прикладным задачам обрабатываться на нескольких процессорах (компьютерах), поэтому ОС должны содержать специальные программы для оптимизации распараллеливания задач. Примеры ОС: Mach, Chorus, Sprite.

- ОС для персональных компьютеров (ПК) должны предоставлять удобный интерфейс для одного пользователя. Примеры ОС: Windows, ОС ПК Mackintosh, Linux.

- ОС реального времени (ОС РВ). Их главным параметром является время. ОС должна обработать поступающие задания в течение заданных интервалов времени, которые нельзя превышать. В основном используются при управлении технологическими процессами, лабораторными экспериментами, в работах систем управления воздушным движением, в телекоммуникациях. Пример ОС: QNX.

- Встроенные ОС часто обладают теми же характеристиками, что и ОС реального времени, но при этом имеют небольшой размер, память и ограничения мощности. Пример ОС: PalmOS, Windows CE.

- ОС для смарт-карт. На них накладываются жесткие ограничения по мощности процессора и объему памяти. Некоторые из них могут управлять только одной операцией (например, производить электронный платеж), другие выполняют более сложные функции. Могут выполнять несколько задач одновременно, но чаще являются достаточно примитивными.

По режиму обработки задач

- однопрограммные (например, MS DOS);

- мультипрограммные ОС (большинство современных ОС).

Мультипрограммирование – способ организации вычислений, когда на однопроцессорной ВС создается видимость одновременного выполнения нескольких программ.

По принципу построения

- макроядерные (монолитные);

- микроядерные;

- иерархические.

В следующем разделе будет дано пояснение этих терминов.

Вопросы для самоконтроля

1. Дайте определение понятию "операционная система".

2. Перечислите функции операционных систем.

3. Что такое многозадачность?

4. Перечислите основные этапы развития операционных систем.

5. Какие сервисы предоставляет операционная система?

6. Классифицируйте операционные системы по назначению.

7. Классифицируйте операционные системы по режиму обработки задач.

8. Классифицируйте операционные системы по способу взаимодействия с пользователем.

9. Классифицируйте операционные системы по принципу построения.

 

Структура ОС

ОС состоит из следующих компонентов:

- управление процессами;

- управление памятью;

- подсистема ввода-вывода;

- файловая система;

- поддержка сети;

- пользовательский интерфейс.

Ряд сервисов ОС (см. раздел 1.1) напрямую отображается на компоненты ОС, другие сервисы выполняются несколькими компонентами.

Структура ОС определяет, как связаны между собой ее компоненты.

Монолитная структура (структура макроядра)

Все программы ОС монолитной структуры собраны в один модуль. ОС представляет собой набор процедур, каждая из которых может вызывать другие, когда ей это нужно. Для построения монолитной ОС необходимо оттранслировать и скомпоновать все процедуры в единый исполняемый файл. По сравнению с другими структурами монолитную ОС трудно разрабатывать, отлаживать, расширять. У нее меньше надежность, но выше быстродействие. Примеры ОС: MS DOS, ранний UNIX.

Структура микроядра

В ОС структуры микроядра ядро выполняет немного самых важных функций (работа с адресными пространствами, межпроцессное взаимодействие, основное планирование). Другие функции ОС выполняют процессы, или серверы. Эти процессы запускаются в пользовательском режиме, и микроядро работает с ними так же, как и с другими приложениями. Упрощается разработка ОС, повышается ее гибкость, ОС такой структуры хорошо вписывается в распределенную среду, повышается надежность, т.к. многие службы работают в пространстве пользователя. Недостаток – уменьшается производительность. Примеры ОС со структурой микроядра: Mach, ОС РВ QNX.

Вопросы для самоконтроля

1. Из каких компонентов состоит ОС?

2. В каких двух режимах может работать операционная система?

3. Чем отличается выполнение библиотечной функции от системного вызова?

4. На всех существующих компьютерах как минимум часть обработчиков прерываний написана еа языке ассемблера. Почему?

5. В чем заключается предназначение системных вызовов и как они соотносятся с операционной системой и с концепцией работы в режиме ядра и режиме пользователя?

6. Когда прерывание или системный запрос передает управление ОС, обычно используется область стека ядра, а не стек прерванного процесса. Почему?

7. Для программиста системный вызов выглядит так же, как и любой другой вызов библиотечной процедуры. Должен ли программист знать, обращение к каким библиотечным процедурам приводит в результате к системным вызовам? При каких условиях и почему?

8. Дайте определение понятиям "операционная среда" и "программная среда".

 

Раздел 2. Процессы и потоки

Тема 3. Процессы

Создание процессов

Ниже перечислены причины создания процессов.

1. Инициализация системы. Обычно при запуске ОС создаются несколько процессов. Некоторые из них – высокоприоритетные, они обеспечивают взаимодействие с пользователем. Остальные – фоновые, они не связаны с конкретными пользователями и выполняют особые функции (обработка приходящей почты, вывод на печать и т.п.). Они называются демонами (daemon, Disk And Execution MONitor).

2. Создание процесса другим работающим процессом. При этом созданный процесс называется дочерним, а создавший его процесс – родительским.

3. Запрос пользователя на создание процесса.

4. Инициирование пакетного задания (на больших ЭВМ).

Независимо от причины создания процесса он всегда создается одинаково – при помощи системного вызова для создания нового процесса.

Завершение процессов

Ниже перечислены причины завершения процессов:

1. Обычное завершение.

2. Выход по неустранимой ошибке.

3. Уничтожение другим процессом.

Иерархия процессов

В некоторых операционных системах родительские и дочерние процессы остаются связанными между собой определенным образом. Дочерний процесс также может создать другие процессы, формируя дерево процессов. В UNIX процесс, все его "дети" и дальнейшие потомки образуют группу процессов.

Модели процесса

Модель с двумя состояниями

На рис. 3.1, а представлена модель процесса с двумя состояниями, а на рис. 3.1, б – диаграмма использования очереди. Состояния процесса на рисунке изображены в виде эллипсов, дугами обозначены переходы между состояниями, надписи над дугами обозначают действие, вызвавшее переход между состояниями.

Создав новый процесс, ОС вводит его в систему в состоянии не выполняющегося. Созданный процесс ждет, пока он сможет быть запущен. Время от времени выполняющиеся процессы будут прерываться, и диспетчер будет выбирать для выполнения другой процесс.

 

Не выполняющиеся процессы следует организовать в очередь, где они ожидали бы своего выполнения. Элементы такой очереди – указатели на процессы. Процесс, работа которого прервана, переходит в очередь процессов, ожидающих выполнения. Если процесс завершен, он выводится из системы. Для выполнения диспетчер выбирает из очереди следующий процесс.

Модель с пятью состояниями

Модель с двумя состояниями неадекватно отражает реальность. Возможны две разные ситуации, когда процесс не выполняется:

1) ОС решила предоставить процессор на время другому процессу;

2) 2) процесс блокируется, т.к. с точки зрения своей внутренней логики он не может выполняться далее (например, ожидает входные данные).

Поэтому в диаграмме состояний на рис. 3.2, а представлены три состояния процесса: выполняющийся (использует процессор); готовый к выполнению (процесс временно приостановлен, чтобы позволить выполняться другому процессу); блокированный (процесс не может быть запущен прежде, чем произойдет некоторое внешнее событие). Также добавлены еще два состояния: новый (только что созданный процесс, который не помещен операционной системой в очередь выполнимых процессов; это новый процесс, который еще не загружен в ОП); завершенный (процесс, удаленный из пула выполнимых процессов).

Возможны следующие переходы между состояниями:

Нулевое состояние -> Новый. Причины перехода между этими состояниями совпадают с причинами создания процессов.

Новый -> Готовый к выполнению. Этот переход произойдет, когда ОС будет готова к обработке дополнительного процесса, т.к. в большинстве ОС есть ограничение на количество процессов или на объем выделенной для процессов виртуальной памяти.

Готовый -> Выполняющийся. Этот переход происходит в момент выбора нового процесса для запуска.

Выполняющийся -> Завершающийся. Причины перехода между этими состояниями совпадают с причинами завершения процессов.

Выполняющийся -> Готовый к выполнению. Этот переход происходит чаще всего по истечении кванта времени, выделенного процессу. В некоторых ОС может произойти вытеснение процесса до истечения кванта (например, при появлении процесса с более высоким приоритетом).

 

Вытеснение (Preemtion) – ситуация, когда процесс лишается некоторого ресурса до того, как он завершит работу с ним.

Выполняющийся -> блокированный. Данный переход происходит, если для продолжения работы требуется наступление некоторого события (например, ожидание освобождения занятого ресурса; ожидание окончания операции ввода-вывода; ожидание сообщения от другого процесса).

Блокированный -> Готовый к выполнению. Данный переход происходит, когда наступает ожидаемое процессом событие.

На рис. 3.2, б показан один из способов реализации порядка очередности. Имеется две очереди: очередь готовых к выполнению и очередь заблокированных процессов. Каждый процесс, поступающий в систему для обработки, помещается в очередь готовых к выполнению процессов. ОС выбирает для выполнения процесс из этой очереди. Если схема приоритетов отсутствует, то очередь имеет тип FIFO. Когда выполнение процесса прерывается, то он, в зависимости от обстоятельств, может либо завершиться, либо попасть в одну из двух очередей. После того, как произойдет какое-либо событие, все ожидающие его процессы из очереди заблокированных перемещаются в очередь готовых процессов.

Недостатком такой схемы является то, что после любого события ОС должна просматривать всю очередь блокированных процессов, отыскивая среди них те, которые ожидают именно этого события. Поэтому эффективнее организовать несколько очередей, для каждого события – свою. Тогда при наступлении какого-либо события все процессы из соответствующей очереди могут быть переведены в очередь готовых к выполнению процессов. Если диспетчеризация осуществляется с использованием приоритетов, то можно организовать несколько очередей готовых процессов, по одной очереди на каждый уровень приоритета.

Описание процессов

Для управления процессами ОС создает и поддерживает таблицы процессов, которые содержат указатель на образ процесса.

Образ процесса содержит программу (код), данные, стек и атрибуты процесса (управляющий блок процесса). Структура данных с атрибутами процесса часто называется управляющим блоком процесса.

Атрибуты процесса включают в себя следующее:

- Идентификация процесса (идентификатор данного процесса, идентификатор родительского процесса, идентификатор пользователя).

- Информация о состоянии процесса (содержимое регистров общего назначения, управляющих регистров и регистров состояния, указатели на стек).

- Управляющая информация процесса (состояние процесса – выполняющийся, готовый к выполнению, блокированный т.д.., приоритет, информация, связанная с планированием; информация о событиях; информация о связи с другими процессами (в очередях, родственные связи); обмен информацией между процессами (различные флаги, сигналы, сообщения); привилегии процесса; информация о владении ресурсами и их использовании.

Управление процессами

Создание процессов

При создании процесса ОС должна выполнить следующие действия:

1. Присвоить новому процессу уникальный идентификатор. В таблицу процессов вносится новая запись.

2. Выделить пространство для процесса – для образа процесса и для управляющего блока процесса.

3. Инициализировать управляющий блок процесса.

4. Установить необходимые связи. Например, включить новый процесс в очередь готовых процессов.

5. Создать или расширить другие структуры данных

Переключение процессов

Переключение процессов может произойти в любой момент, когда управление передается операционной системе: аппаратное прерывание, включая прерывание от таймера; ловушка (исключение); системный вызов.

Все три причины реализуются через механизм прерываний.

Действия ОС при переключении процессов:

1. Сохранение контекста процессора в управляющем блоке процесса (содержимое регистров общего назначения и управляющих регистров)

2. Обновление управляющего блока выполняющегося процесса: изменить состояние процесса, сохранить информацию по учету использования ресурсов.

3. Помещение управляющего блока данного процесса в соответствующую очередь (например, готовых или заблокированных).

4. Выбор следующего процесса для выполнения.

5. Обновление управляющего блока выбранного процесса: установить состояние выполнения.

6. Обновление структур данных по управлению памятью.

7. Восстановление контекста процессора для выбранного процесса.

ОС на основе процессов

На рис. 3.3, в показана структура ОС на основе процессов. Преимущества такого подхода: 1) способствует разработке модульных ОС с простыми межмодульными интерфейсами; 2) некоторые второстепенные функции ОС удобно реализовывать в виде отдельных процессов; эти функции может вызывать только ОС, и такие процессы могут чередоваться с пользовательскими; в многопроцессорных и многокомпьютерных ВС отдельные службы ОС могут выполняться на разных процессорах и, соответственно, будет выше производительность системы.

Вопросы для самоконтроля

1. Дайте определение понятию "процесс".

2. В результате каких событий создаются процессы?.

3. Перечислите причины завершения процессов.

4. Какой процесс называется родительским?

5. Какой процесс называется дочерним?

6. Перечислите состояния процесса в модели с двумя состояниями.

7. Перечислите состояния процесса в модели с пятью состояниями.

8. Какие переходы между состояниями существуют в модели процесса с пятью состояниями? При каких условиях осуществляются эти переходы?

9. Какие переходы, не показанные на рис. 3.2, могут существовать в модели процесса с пятью состояниями?

10. Что такое вытеснение процесса?

11. Дайте определение понятию "образ процесса".

12. Какая информация входит в управляющий блок процесса?

13. Каковы дествия ОС при создании процесса?

14. В какие моменты может произойти переключение процессов?

15. Чем отличаются переключение режима работы процессора и переключение процессов?

16. Каковы действия ОС при переключении процессов?

17. Перечислите варианты выполнения кода ОС по отношению к процессам.

18. Для чего в ОС Windows, UNIX и др. код операционной системы является частью пользовательского процесса?

 

Создание процесса

Для создания нового процесса предназначен системный вызов fork.

#include <unistd.h>

pid_t fork(void);

 

Вызывающий процесс становится родительским, а новый процесс – его потомком. Функция fork возвращает 0 – в дочерний процесс; PID потомка – в родительский процесс; При ошибке (недостаточно памяти или места в системных таблицах) fork возвращает -1.

Процесс-потомок является точной копией своего родительского процесса. Его адресное пространство полностью повторяет адресное пространство родительского процесса. После возврата из fork оба процесса начинают работать в пользовательском режиме – выполняют команды, следующие за fork.

Фрагмент программы для создания процесса:

#include <unistd.h>

int pid;

pid=fork();

if(pid==-1) {perror("fork()"); exit(1);}

if (pid==0)

{/*команды дочернего процесса*/}

else

{/*остальная часть кода родительского процесса*/}

 

Как работает fork. В ранних версиях UNIX fork создавал копию адресного пространства родительского процесса физическим копированием адресного пространства родителя в дочерний процесс. Но если затем потомок вызывал exec, меняя, таким образом, свой образ памяти, то вся работа по копированию адресного <


Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.187 с.