Процессы и потоки Тема 2. Ресурсы системы Управляющие таблицы ОС Образ процесса Процесс 1 Процесс N Память Устройства Файлы Процессы Процесс 1 Процесс.

Презентация:



Advertisements
Похожие презентации
Управление процессами 3.Взаимодействие процессов: синхронизация, тупики 3.1.Разделение ресурсов 3.2.Взаимное исключение Проблемы реализации взаимного.
Advertisements

Учебный курс Операционные среды, системы и оболочки Лекция 5 Лекции читает доктор технических наук, профессор Назаров Станислав Викторович.
Взаимодействие процессов: синхронизация, тупики. Параллельные процессы Параллельные процессы – процессы, выполнение которых хотя бы частично перекрывается.
Управление процессами 3.Взаимодействие процессов: синхронизация, тупики 3.1.Разделение ресурсов 3.2.Взаимное исключение Проблемы реализации взаимного.
Операционные системы Процессы и потоки Скрипов Сергей Александрович 2009.
Учебный курс Основы операционных систем Лекция 2 кандидат физико-математических наук, доцент Карпов Владимир Ефимович.
Процессы и потоки. Процессы В общем представлении, процесс - это программа, выполняющаяся в оперативной памяти компьютера. Реально, все гораздо сложней.
Учебный курс Операционные среды, системы и оболочки Лекция 6 Лекции читает доктор технических наук, профессор Назаров Станислав Викторович.
6. Средства синхронизации и взаимодействия процессов 6.1. Проблема синхронизации Процессам Процессам часто нужно взаимодействовать друг с другом, например,
Прерывания Определение прерывания Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств.
Лекция 4. Режимы работы микропроцессора. Взаимодействие микропроцессора с остальными устройствами Взаимодействие МП с остальными устройствами МПС происходит.
Встроенные Системы Часть 3. Прерывания Кафедра Информатики, мат-мех СПбГУ Copyright © 2004 Victor Vengerov
Проектирование центральных и периферийных устройств Преподаватель: Мельников Максим Игоревич.
Учебный курс Основы операционных систем Лекция 3 кандидат физико-математических наук, доцент Карпов Владимир Ефимович.
Лекция 3. Исключения и прерывания в встроенных системах.
Операционная система. Базовые понятия Операционная система – это комплекс программ, обеспечивающий контроль за существованием, распределением и использованием.
Устройства ввода/вывода Энциклопедия учителя информатики Газета «Первое сентября»
Учебный курс Введение в цифровую электронику Лекция 5 Обмен информацией в микропроцессорной системе кандидат технических наук, доцент Новиков Юрий Витальевич.
Основные виды ресурсов и возможности их разделения.
Учебный курс Основы операционных систем Лекция 7 кандидат физико-математических наук, доцент Карпов Владимир Ефимович.
Транксрипт:

Процессы и потоки Тема 2

Ресурсы системы Управляющие таблицы ОС Образ процесса Процесс 1 Процесс N Память Устройства Файлы Процессы Процесс 1 Процесс 3 Процесс 2 Процесс N Процессор Первичные таблицы процессов Таблицы памяти Таблицы ввода-вывода Таблицы файлов

Задание (JOB) НазваниеОписание ЗаданиеНабор процессов с общими квотами и лимитами ПроцессКонтейнер для ресурсов и потоков ПотокИсполнение кода в процессе ВолокноОблегченный поток, полностью управляемый в пространстве пользователя Объекты Процесс 2Процесс N Процесс 1 Поток 2 Thread 2 Поток k Thread k Поток 1 Thread 1 Волокна (Fibers)

Образ процесса: программа, данные, стек и атрибуты процесса ИнформацияОписание Данные пользователя Изменяемая часть пользовательского адресного пространства (данные программы, пользовательский стек и модифицируемый код) Пользовательская программа Программа, которую нужно выполнить Системный стек Один или несколько системных стеков для хранения параметров и адресов вызова процедур и системных служб Управляющий блок процесса Данные, необходимые ОС для управления процессом: 1) дескриптор процесса, 2) контекст процесса

Дескриптор процесса содержит: 1. Информацию по идентификации процесса ( идентификатор процесса, идентификатор пользователя, идентификаторы родительского и дочерних процессов). 2. Информацию по состоянию процесса 3. Информацию, используемую для управления процессом

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

КОНТЕКСТ ПРОЦЕССА Содержимое регистров процессора, доступных пользователю (обычно 8 – 32 регистра и до 100 регистров в RISC – процессорах); Содержимое счетчика команд; Состояние управляющих регистров и регистров состояния; Коды условия, отражающие результат выполнения последней арифметической или логической операции (например, равенство нулю,переполнение); Указатели стеков,хранящие параметры и адреса вызова процедур и системных служб. Значительная часть этой информации фиксируется в виде слова состояния программы PSW (program status word – EFLAGS в процессоре Pentium).

Типичный граф состояния потока ВЫПОЛНЕНИЕ ГОТОВНОСТЬ ОЖИДАНИЕ Поток завершен или ошибка Поток ожидает завершения ввода- вывода или другого события Ввод-вывод завершен (событие произошло) Поток вытеснен (исчерпал квант) Поток выбран на выполнение Вновь созданный поток

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

Механизм прерываний Прерывание ­ принудительная передача управления от выполняемой программы к системе, происходящая при возникновении определенного события.

Схема обработки прерываний

Обозначения ! ­ Прерывание (сигнал – установление факта прерывания) 1 ­ Идентификация прерывания 2 ­ Отключение всех других прерываний 3 ­ Смена контекста_1 (сохранение состояния прерванного процесса из системных регистров, загрузка в системные регистры контекста соответствующего обработчика прерываний) 4 ­ Обработка прерывания, включающая определение программы Q, которую следует запустить; 5 ­ Смена контекста_2 (загрузка в системные регистры контекста определенной на предыдущем шаге программы Q) 6 ­ Установка прежнего режима системы прерываний.

Распределение прерываний по уровням приоритета Средства контроля процессора Системный таймер Магнитные диски Сетевое оборудование Терминалы Программные прерывания Внешние устройства Приоритет

Семафоры Для работы с семафорами вводятся два примитива, традиционно обозначаемых Р и V. Пусть переменная S представляет собой семафор. Тогда действия V(S) и P(S) определяются следующим образом. V(S): переменная S увеличивается на 1 единым действием. Выборка, наращивание и запоминание не могут быть прерваны. К переменной S нет доступа другим потокам во время выполнения этой операции. P(S): уменьшение S на 1, если это возможно. Если S=0 и невозможно уменьшить S, оставаясь в области целых неотрицательных значений, то в этом случае поток, вызывающий операцию Р, ждет, пока это уменьшение станет возможным. Успешная проверка и уменьшение также являются неделимой операцией. Никакие прерывания во время выполнения примитивов, V и Р недопустимы.

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

Решение задачи обедающих философов #define N 5 /* Количество философов */ #define LEFT (i+N-1)%N/* Номер левого соседа философа с номером i */ #define RIGHT (i+1)%N/* Номер правого соседа философа с номером i */ #define THINKING 0 /* Философ размышляет */ #define HUNGRY 1 /* Философ пытается получить вилки */ #define EATING 2 /* Философ ест */ typedef int semaphore; /* Семафоры - особый вид целочисленных переменных */ int state[N];/* Массив для отслеживания состояния каждого философа */ semaphore mutex =1;/* Взаимоисключение для критических областей */ semaphore s[N]; /* Каждому философу по семафору */ void philosopher(int i) /* i - номер философа, от 0 до N-1 */ { while (TRUE) { /* Повторять до бесконечности */ think(); /* Философ размышляет */ take_forks(i); /* Получает две вилки или блокируется */ eat();/* Философ ест спагетти */ put_forks(i); /* Кладет на стол обе вилки */ }

void take_forks(int i) /* i - номер философа, от 0 до N-1*/ { down(&mutex); /* Вход в критическую область */ state[i] = HUNGRY; /* Фиксация наличия голодного философа */ test(i); /* Попытка получить две вилки */ up(&mutex); /* Выход из критической области */ down(&s[i]); /* Блокировка, если вилок не досталось */ } void put_forks(i) /* i - номер философа, от 0 до N-1*/ { down(&mutex); /* Вход в критическую область */ state[i] = THINKING;/* Философ перестал есть */ test(LEFT); /* Проверить, может ли есть сосед слева */ test(RIGHT); /* Проверить, может ли есть сосед справа */ up(&mutex); /* Выход из критической области */ } void test(i)/* i - номер философа, от 0 до N-1*/ { if (state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] != EATING) { State[i] = EATING; up(&s[i]); }

Проблема читателей и писателей, моделирующая доступ к базе данных

Траектории ресурсов Диск

Алгоритм банкира

Межпроцессное взаимодействие (англ. Inter-Process Communication, IPC) набор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов (RPC). Методы IPC зависят от пропускной способности и задержки взаимодействия между потоками и типа передаваемых данных. IPC также может упоминаться как межпотоковое взаимодействие (англ. inter-thread communication), межпоточное взаимодействие и межпрограммное взаимодействие (англ. inter-application communication).

Виды механизмов межпроцессного взаимодействия (InterProcess Communication - IPC) Механизм IPCНазначение Буфер обменаПересылка данных между программами выполняется по желанию и под контролем пользователя. OLE 2.0Имеются встроенные функции для пересылки данных через границы процессов. Излишне сложен для простого обмена данными. Сообщения WM_COPYDATA Способ пересылки блока данных из одной программы в другую. Используется в тех случаях, когда скорость передачи данных не является критической и не требуется синхронизировать передачу данных. Объекты синхронизации Объекты синхронизации тоже можно отнести к механизмам IPC. Конечно, объем передаваемых данных очень невелик: например, одному процессу нужно передать другому "я закончил работу" или "я начинаю работать с общей памятью". Библиотеки динамической компоновки (DLL) Библиотеки динамической компоновки также имеют способность обеспечивать обмен данными между процессами. Когда в рамках DLL объявляется переменная, ее можно сделать разделяемой (shared). Все процессы, обращающиеся к библиотеке, для таких переменных будут использовать одно и то же место в физической памяти.

Механизм IPCНазначение СигналыПрименяются для уведомления о некотором событии, произошедшем в системе. Анонимные каналы (Anonymous pipes) Полезны для организации прямой связи между двумя процессами на одном ПК. Именованные каналы (Named pipes) Полезны для организации прямой связи между двумя процессами на одном ПК или в сети. Почтовые ячейки (mailslots) Полезны для организации связи одного процесса со многими на одном ПК или в сети. Гнезда (sockets)Полезны для организации пересылки данных как в Windows-программы, так и в прочие программы, функционирующие на одном ПК, в сети или в интрасети. Очереди сообщений Microsoft Message Queue (MSMQ) Данный протокол может работать с удаленными процессами и даже с процессами, которые на данный момент недоступны (например, не запущены). Доставка сообщения по адресу гарантируется. Файлы отображаемой памяти Обеспечивают одновременный доступ к объектам файла- отображения из нескольких процессов.

Межпроцессный обмен на локальном компьютере Запись

Организации очереди в массиве Указатель на конецУказатель на начало Указатель на началоУказатель на конец

Отображаемые файлы