Слайды и текст доклада
Pic.1
Архитектура операционных систем 3. Процессы и потоки
Pic.2
Процесс Определения: Это программа в состоянии выполнения Объект, выполняемый на процессоре Процессы – фундаментальное понятие в ОС Как исполняемый объект, процесс позволяет параллельное выполнение …
Pic.3
Процесс 2 Процесс состоит из трех основных компонент Исполняемого программного кода Ассоциированных с ним данных, необходимых для выполнения этой программы Контекста (информация, необходимая ОС для …
Pic.4
Образ процесса Это выделенное место в памяти Каждый процесс выполняется в собственном виртуальном адресном пространстве, которое состоит из: Сегмента стэка: используется для вызовов функций и …
Pic.5
Структуры управления процессом Таблица процессов. Одна запись на каждый процесс Блок управления процессом: Process Control Block (PCB) Описывает свой процесс и его текущее состояние Образ процесса …
Pic.6
Process Control Block Содержит всю информацию, необходимую для приостановки и последующего возобновления процесса Идентификатор процеса № процесса, информация о пользователе, … Состояние процессора …
Pic.7
Диспетчеризация «Диспетчер» отправляет процессы на выполнение: выделяет время ЦП, переключает ЦП с одного процесса на другой В любой момент времени, процесс может находится в каком-либо состоянии …
Pic.8
Модель состояний процесса 1 Можно выделить три основных состояния Выполнения (исполняется на ЦП) Готовности (временно остановлен) Блокировки (ожидает внешнего события)
Pic.9
Модель состояний процесса 2 Модель из пяти состояний Новый: процесс создан, но ещё не помещён операционной системой в пул выполняемых процессов. Создан PCB, но процесс ещё не в памяти Готовность: …
Pic.10
Планирование процессов В ОС есть различные очереди (или списки) для планирования процессов Очередь задач: множество всех процессов в системе Очередь готовых: множество всех процессов, готовых для …
Pic.11
Управление процессами Используется одна очередь «готовых» и одна очередь «заблокированных» Недостатки: При наступлении события, все ожидающие этого события процессы нужно переместить из …
Pic.12
Создание процесса Загрузка системы При инициализации системы создаются несколько процессов В Unix, это процессы «демоны» sched (pid 0), init (pid 1), и другие более высокоуровневые (веб-сервер, …
Pic.13
Создание процесса 2 Присвоить уникальный идентификатор новому процессу Выделить место для процесса Программа, данные, стэк Инициализировать PCB Добавить процесс в очередь «готовых» к выполнению
Pic.14
Иерархия процессов (UNIX) Строгая иерархия между процессами: дочерний и родительский процессы всегда взаимосвязаны Группы процессов Напр. интерпретатор командной строки (shell) является родительским …
Pic.15
Иерархия процессов (Windows) Её нет. Все равны. Хэндл процесса: когда новый процесс создаётся родительским, то родитель получает хэндл дочернего процесса. Т. о. может им управлять. Этот хэндл можно …
Pic.16
Создание процесса (UNIX) Процессы создаются через fork() / exec() fork() создаёт точный клон вызывающего процесса, т. н. «дочерний» процесс exec() заменяет образ процесса этого клона новой …
Pic.17
Создание процесса (UNIX) 2
Pic.18
Создание процесса (UNIX) 3 Как же создать новую программу, а не ещё одну копию старой? «Легко». Вначале fork(), потом exec(). exec() не создаёт нового процесса, а заменяет данные текущего процеса …
Pic.19
Что в Linux? clone() заменяет fork() (и vfork() тоже). У clone() есть дополнительные опции. Но всё-равно нужно чётко понимать, как работает fork() В Linux exec() не является системным вызовом. …
Pic.20
Создание процесса (NT) Процессы создаются через системный вызов NtCreateProcess().
Pic.21
Переключение между процессами При необходимости переключиться на другой процесс, ОС выполняет «переключение контекста» Состояние старого процесса сохраняется в его PCB Состояние нового процесса …
Pic.22
Переключение контекста События, вызывающие переключение контекста: Прерывания Исключения Системные вызовы
Pic.23
Потоки (нити) Процесс состоит как минимум из: Адресного пространства Набор инструкций (код) программы Данные для программы Состояния потока выполнения Счётчик команд (регистр IP) Указатель стэка SP …
Pic.24
Потоки, зачем они нужны Потоки – для параллелизма и одновременности. Параллелизм – это физически одновременное выполнение для достижения наибольшей производительности. Одновременность – логическое …
Pic.25
Параллелизм Возьмём пример про веб-сервер со слайда 12, который должен обслуживать несколько запросов параллельно Ожидая данных по запросу клиента из базы данных, сервер мог бы загрузить данные с …
Pic.26
Параллелизм 2 В каждом из этих примеров параллелизма есть общее: Один код Доступ к одним данным Один уровень доступа Одно множество ресурсов Но есть разное: Стэк и указатель на стэк SP Счётчик …
Pic.27
Параллелизм 3 Как этого достичь? Используя знания о процессах, можно fork-нуть несколько процессов Заставить каждый из них отображать своё виртуальное адресное пространство на одну и ту же физическую …
Pic.28
Решение – потоки! Основная мысль отделить понятие процесса (адресного пространства, ресурсов ОС) от Минимальной нити, потока управления (т. е. состояния выполнения – стэка, регистров ЦП) Иногда такое …
Pic.29
Потоки и процессы Большинство современных ОС поддерживает два объекта: Процесс, который определяет адресное пространство и общие атрибуты процесса Поток, который определяет последовательный поток …
Pic.30
Потоки и процессы 2 Многопоточность полезна для: Обработки одновременных событий Построения параллельных программ Поддержка многопоточности – разделение понятия процесса от минимального потока …
Pic.31
Потоки и процессы 3 Раньше: «процесс» = адресное пространство + ресурсы ОС + подразумевался единственный поток Теперь: «процесс» = адресное пространство + ресурсы ОС + все потоки процесса
Pic.32
Потоки режима ядра и пользователя На уровне ядра Есть функция ядра для создания нового потока Выделяет стэк выполнения внутри адресного пространства процесса Создаёт и инициализирует Thread Control …
Pic.33
Потоки режима пользователя Библиотека pthreads Каждый поток представляется регистром PC, остальными регистрами ЦП, стэком и небольшим блоком TCB Создание потока, переключение между потоками и …
Pic.34
Сравнение производительности По данным Gribble, Lazowska, Levy, Zahorjan из Университета им. Вашингтона: Создание потока режима ядра pthread_create()/pthread_join() в 2. 5 раза быстрее создания …
Pic.35
Обобщение Множество потоков в одном адресном пространстве – это хорошо. Потоки режима ядра намного эффективнее процессов, но есть потери на системные вызовы Потоки режима пользователя имеют …
Скачать презентацию
Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!