Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Архитектура ОС



3 основных задачи, тесно связанных между собой:

1. Управление задачами (заданиями, процессами):

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

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

- синхронизация процессов;

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

- разрешение тупиковых ситуаций (тупиков).

2. Управление данными:

- долговременное планирование – организация размещения данных на ВЗУ, их выборка и предоставление пользовательским программам

- оперативное планирование – распределение оперативной памяти под программы и данные, обмен между оперативной и внешней памятью.

3. Связь с оператором:

- пользовательский интерфейс (управление пользовательскими процессами);

- командный интерфейс (управление системными процессами)

При взаимодействии этих функций ОС между собой используются различные интерфейсы:

- задачи-данные (интерфейс управления памятью и данными);

- данные-оператор (Интерфейсы ввода-вывода данных);

- оператор-задачи (командный интерфейс).

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

Программа – это последовательность команд, представляющая собой план действий. Процесс же – это непосредственно выполняемое действие, которое в себя включает: программный код; данные; содержимое стека; содержимое адресного и др. регистров CPU.

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

Классификация процессов

По генеалогическому признаку – порождающие (родители) и порожденные (дети).

По принадлежности к ОС – системные и пользовательские.

По месту выполнения – внутренние (на CPU) и внешние (на внешних процессорах).

По связанности – взаимосвязанные, изолированные, взаимодействующие (имеют общие структуры данных), конкурирующие.

За время существования процесс многократно меняет свое состояние. Различают следующие состояния процесса:

- новый (процесс только что создан);

- выполняемый (команды программы выполняются в CPU);

- ожидающий (процесс ожидает завершения некоторого события, чаще всего операции ввода-вывода);

- готовый (процесс ожидает освобождения CPU);

- завершенный (процесс выполнился).

Переход из одного состояния в другое не может быть выполнен произвольно. Он происходит в соответствии с таблицей управления процессом (PCB = Process Control Block). В этой таблице процесс описывается набором значений, параметров, характеризующих его текущее состояние и используемых ОС для управления прохождением процесса через компьютер.

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

Содержимое регистров процессора, а также код и данные в адресном пространстве процесса называются контекстом процесса, который переключается на CPU при смене выполняемой им задачи.

В зависимости от того, является ли процесс родителем или ребенком, он может получить отдельные ресурсы или использовать родительские. Для запуска новой программы в Unix сначала создаётся копия процесса-родителя, а затем процесс-ребенок должен заменить свой контекст, чтобы стать родителем. Помимо такого способа Windows NT также поддерживает загрузку процесса-ребенка новой программой из какого-либо файла.

При смерти процесса-родителя в Unix ребенок сиротеет, но не умирает. Его усыновляет один из системных процессов.

Распределение процессов между имеющимися ресурсами называется планированием процессов.

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

Готовые к выполнению процессы располагаются в оперативной памяти в очереди готовых процессов. Там они ожидают освобождения процессорного времени.

Ожидающий ввода-вывода процесс находится в одной из очередей к оборудованию ввода-вывода.

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

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

Основное различие между ними заключается в частоте запуска: краткосрочный запускается раз в 100 мс, а долгосрочный – раз в несколько минут.

В некоторых ОС долгосрочный планировщик отсутствует. Например, в системах с разделением времени (time-sharing system) каждый новый процесс сразу помещается в оперативную память!

Существует множество алгоритмов работы краткосрочного планировщика.

1. FCFS = First Come First Served (первый пришел, первый обслужился). Это наиболее простая стратегия. Время ожидания для процессов здесь сильно зависит от порядка поступления в очередь готовых процессов. Если имеется несколько маленьких процессов и один большой, то возникает «эффект конвоя».

2. SJF = Shortest Job First (Наиболее короткое задание выполняется первым). Предназначено для борьбы с «эффектом конвоя». Снижает время ожидания в очереди. Основная трудность – в определении заранее длины процесса. Как правило, применяется в долгосрочных планировщиках, обслуживающих пакетный режим. В этом случае, программист перед отправлением задания в пакет должен указать макс. время выполнения задания.

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

4. RR = Round Robin («Карусельная» стратегия). Применяется в системах разделения времени. Св-ва стратегии сильно зависят от величины выделяемого каждому процессу кванта времени tk, очередь готовых процессов рассматривается как кольцевая. Новые процессы добавляются в хвост очереди. Если процесс не завершился в выделенный ему квант времени, то его работа принудительно прерывается, и он перемещается в хвост очереди.

5. Multilevel queue scheduling (Планирование с использование многоуровневой очереди). Разработана для ситуации, когда процессы можно легко разбить на несколько групп (например, интерактивные и фоновые - пакетные). В каждой из очередей находится процессы с одинаковыми свойствами, а каждая отдельная очередь может иметь свою стратегию планирования. Ни один процесс с более низким приоритетом не может быть запущен, пока не выполнятся процессы во всех очередях в более высокими приоритетами.

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





Дата публикования: 2015-10-09; Прочитано: 192 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...