![](/user_photo/70644__xXXN.png)
- •Модель процесса, Создание и завершение процесса
- •Иерархии, реализация, состояния процессов
- •Иерархии процессов
- •Реализация процессов
- •Состояния процессов
- •Классическая модель потоков
- •2.1 Классическая модель потоков
- •Применение потоков, моделирование режима многозадачности
- •Потоки в posix, реализация потоков в пользовательском пространстве
- •Реализация потоков в ядре, гибридная реализация, активация планировщика Реализация потоков в ядре
- •Гибридная реализация
- •Активация планировщика
- •Всплывающие потоки, превращение однопоточного кода в многопоточный Всплывающие потоки
- •2.2. Превращение однопоточного кода в многопоточный
- •Взаимодействие процессов: состязательная ситуация, критические области Межпроцессное взаимодействие.
- •Состояние состязания.
- •Критическая область.
- •3.1 Взаимодействие между процессами
- •Передача информации от одного процесса другому
- •3.1.2 Состояние состязания
- •3.1.3 Критические области
- •Взаимодействие процессов: взаимное исключение с активным ожиданием, приостановка и активизация
- •2.Взаимное исключение с активным ожиданием
- •2.1 Запрещение прерываний.
- •2.2 Переменные блокировки.
- •3.Приостановка и активизация
- •Введение в планирование, планирование в пакетных системах
- •Планирование в пакетных системах
- •Планирование в интерактивных системах Введение
- •Гарантированное планирование
- •Лотерейное планирование
- •Справедливое планирование
- •Планирование потоков
- •Планирование в системах реального времени, политика и механизмы, планирование потоков
- •Понятие адресного пространства, правление свободной памятью.
- •Методы распределения памяти с использования дискового пространства:
- •Страничное распределение виртуальной памяти
- •Сегментное распределение памяти
- •3. Сегментно-страничная организация разделения памяти
- •Страничная организация памяти, таблицы страниц Страничная организация памяти, таблицы страниц
- •Страничная организация памяти. Виртуальная память.
- •Структура страниц.
- •Формирование адреса при страничном преобразовании.
- •Преимущества страничной памяти
- •Недостатки страничной памяти
- •Ускорение работы страничной организации памяти, таблицы страниц для больших объемов памяти
- •Оптимальный алгоритм замещения страниц, сравнительная характеристика алгоритмов замещения страниц Алгоритмы замещения страниц
- •Оптимальный алгоритм замещения страниц
- •Алгоритм исключения недавно использовавшейся страницы
- •Алгоритм fifo
- •Алгоритм «второй шанс»
- •Алгоритм «часы»
- •Алгоритм замещения наименее востребованной страницы
- •Сравнительная характеристика алгоритмов замещения страниц
- •Разработка систем страничной организации памяти: локальная и глобальная политики, управление загрузкой, разделение пространства команд и данных
- •Локальная и глобальная политика
- •Управление загрузкой
- •Разделение пространства команд и данных
- •Совместно использование страниц, библиотек, очистка страниц, обработка ошибки отсутствия страницы. Совместно используемые страницы
- •Совместно используемые библиотеки
- •Политика очистки страниц
- •Обработка ошибки отсутствия страницы
- •Файлы: имена, структура, типы атрибуты файлов, доступ и операции с файлами.
- •Каталоги: одноуровневые каталоги, иерархические системы каталогов, операции с каталогами
- •Структура файловой системы, реализация файлов, каталогов.
- •Основы аппаратного обеспечения ввода-вывода Устройства ввода-вывода
- •Контроллеры устройств
- •Ввод-вывод, отображаемый на пространство памяти.
- •Принципы создания программного обеспечения ввода-вывода
- •Диски: аппаратная часть, форматирование, алгоритмы планирования перемещения блока головок.
- •Форматирование диска
- •Алгоритмы планирования перемещения головок
- •Аппаратная составляющая и программное обеспечение часов, таймеры
- •Программное обеспечение пользовательского интерфейса: клавиатура, мышь, монитор
- •2.4. Монитор
- •Маршрутизация с использованием масок постоянной и переменной длины
- •Фрагментация ip-пакетов, параметры и механизм фрагментации
- •Групповое вещание
- •Стандартная модель группового вещания ip
- •Основные типы протоколов группового вещания
- •Инжиниринг трафика в mpls
2.1 Классическая модель потоков
Процессы используются для группировки взаимосвязанных ресурсов в единое целое, а потоки являются «сущностью», распределяемой для выполнения на центральном процессоре.
Процесс содержит:
- адресное пространство (содержащее текст программы и данные);
- глобальные переменные;
- открытые файлы;
- дочерние процессы;
- необработанные аварийные сигналы;
- сигналы и обработчики сигналов;
- учетную информации.
Поток выполнения имеет:
- счетчик команд, отслеживающий, какую очередную инструкцию нужно выполнять;
- регистры, в которых содержатся текущие рабочие переменные;
- стек с протоколом выполнения, содержащим по одному фрейму для каждой вызванной, но еще не возвратившей управление процедуры
Потоки добавляют к модели процесса возможность реализации нескольких выполняемых задач в единой среде процесса. Потоки иногда называют облегченными (легковесными) процессами.
Многопоточный режим допускает работу нескольких потоков в одном и том же процессе.
Различные потоки в процессе не обладают той независимостью, которая есть у различных процессов. У потоков одно и то же адресное пространство, один поток может считывать данные из стека другого потока, записывать туда свои данные и даже стирать оттуда данные. Защита между потоками отсутствует, в ней нет необходимости.
Различные процессы могут сильно конкурировать друг с другом, а потоки внутри одного процесса служат для совместной работы, активно и тесно сотрудничают друг с другом.
Подобно процессу (с одним потоком), поток может быть в одном из следующих состояний:
выполняемый,
заблокированный,
готовый,
завершенный.
Каждый поток имеет собственный стек, который содержит по одному фрейму для каждой уже вызванной, но еще не возвратившей управление процедуры.
Применение потоков, моделирование режима многозадачности
Поток – это основной элемент системы, которому ОС выделяет машинное время для параллельного выполнения на процессоре двух и более различных задач.
С появлением понятия потоков в проектирование добавляется возможность использования в ходе параллельных действий единого адресного пространства и всех имеющихся данных процесса. Еще одной отличительной особенностью потоков является лёгкость создания и завершения по сравнению с более сложными процессами.
Потоки позволяют получить довольно большой прирост производительности приложений, выполняющих серьезные вычисления за счет параллельного выполнения различных задач и лёгкости создания. Особенно это актуально для систем, использующих несколько центральных процессоров, где появляется «реальная» возможность параллельных вычислений.
Потоки можно классифицировать следующим способом:
По отображению в ядро: 1:1, N:M, N:1.
По многозадачной модели: вытесняющая многозадачность, кооперативная многозадачность.
По уровню реализации: режим ядра, режим пользователя, гибридная реализация.
Классификация по отображению в ядро.
Модель 1:1 – любой поток, созданный в любом процессе управляется напрямую планировщиков ядра ОС, то есть один пользовательский процесс на один поток ядра.
Модель N:M описывает некоторое число потоков пользовательских процессов N на M потоков режим ядра. К примеру, имеется некая гибридная система, где часть потоков отдается на выполнение в планировщике, а большая их часть в планировщике потоков процесса или библиотеки. Данная модель труднореализуема, но обладает серьезной производительностью.
Модель N:1 – это множество потоков пользовательского процесса, которые отображается на один поток ядра ОС.
Классификация по многозадачной модели
Понятие кооперативной многозадачности обозначает то, что все потоки выполняют свою работу по очереди, с одинаковым отведенным на это временем.
Вытесняющая многозадачность.
Поток с большим приоритетом «вытесняет» поток с меньшим. Современные ОС используют данный подход для выполнения поставленных задач.
Классификация по уровню реализации
Реализацию потоков на уровне ядра можно сравнить с классической моделью 1:1.
Реализация потоков в пользовательском режиме. Такие тяжелые операции, как системный вызов и смена контекста требовали реализацию поддержку в режиме пользователя. Было сделано много попыток реализации, но данная методика не обрела популярности.
Гибридная реализация появилась при попытке совместить преимущества двух предшествующих реализаций, но задумка не удалась: получилось больше недостатков, чем достоинств.
Применение потоков
Допустим мы имеем веб-сайт, куда поступают запросы на определенные веб-страницы, которые затем отправляются обратно пользователям. Как правильно, на главную страницу сайта приходится большинство клиентских запросов. Данные «подборки» называются кэшем, который позволяет повысить производительность за счёт размещения часто используемых запросов на основной странице, то есть в основной памяти.
Один из потоков называется диспетчером, который «читает» входящие запросы от пользователей. Далее он анализирует запрос, подбирает «спящий» (то есть заблокированный) рабочий поток, которому и передает запрос. После этого диспетчер разблокирует данный поток и переводит его в состояние готовности к работе.
После перевода рабочий поток проверяет возможность получения запрашиваемых данных из кэша страниц (доступ к которому имеют все потоки). Если нужная информация не находится, то поток запускает операцию чтения с диска и переводится в «спящий» режим работы до завершения операции.
При блокировке одного потока из-за необходимости поиска данных с диска разблокируется другой рабочий поток и переходит в состояние готовности к работе.
Потоки позволяют использовать концепцию последовательных процессов, которые осуществляют блокирующие системные вызовы и в это же время позволяют «распараллелить» работу. Данные блокирующие системные вызовы позволяют упростить программирование, а работа в параллели даёт большую производительность.
Многозадачность
Многозадачность – это свойство ОС или среды программирования обеспечивать возможность параллельной обработки нескольких процессов. Примитивные многозадачные среды позволяют закрепить за каждой задачей определённый участок памяти и задача выполняется в строго определённые интервалы времени.
Развитые многозадачные системы проводят распределение ресурсов динамически, когда определенная задача занимает память или же освобождает её в зависимости от приоритета и стратегии системы. Такая многозадачная среда обладает данными особенностями:
Каждая задача имеет свой приоритет, в соответствии с которым для её выполнения выделяется время и память.
Очередь задач выстраивается по принципу стратегии системы и приоритетов, чтобы каждая задача получила требуемые ресурсы.
Система обеспечивает защиту памяти от «несанкционированного» вмешательства других задач.
Система обрабатывает запросы в режиме реального времени.
Режим многозадачности целесообразно применять для рационального использования ЦП.
Выполнение среднестатистического процесса занимает лишь около пятой части времени, пока он находится в памяти, следовательно, при одновременном нахождении пяти процессов в памяти ЦП будет полностью загружен. В данной модели предполагается, что ни один из пяти процессов не может быть остановлен одновременно с другим. Целесообразнее построить модель, которая использует вероятностный подход к занятости центрального процессора.
Допустим,
некий процесс проводит часть времени
,
которое ему выделил ЦП, в режиме ожидания
завершения некоторых операций
ввода-вывода. В памяти также присутствуют
одновременно
процессов, то вероятность того, что все
процессы находятся в режиме ожидания
равна
.
На рис. 1 представлена функция, называемая степенью многозадачности, которая представляет из себя зависимость времени использования ЦП от количества процессов, находящихся одновременно в памяти.
Рис. 1. Зависимость времени использования ЦП от количества процессов, находящихся одновременно в памяти.
Если процесс находится в режиме ожидания 80% своего времени, то для снижения бездействия ЦП до 10% в памяти должны находиться одновременно 10 процессов. В данном случае под режимом ожидания подразумевается не только ожидание ввода-вывода, а также ещё ожидание пользовательского ввода.
Например,
память компьютера имеет объем 8 Гбайт,
ОС и её таблицы используют около 2 Гбайт
памяти, а каждая пользовательская
программа также занимает около 2 Гбайт.
Значит в памяти компьютера можно
одновременно разместить всего три
программы пользователя. В данном случае
ЦП будет загружен на
(учитывая среднее ожидание ввода-вывода
равное 80% времени). Если увеличить объем
памяти компьютера до 16 Гбайт, то это
позволит системе перейти от трёхкратной
многозадачности к семикратной, что
повысит загрузку ЦП до 79%, то есть
дополнительные 8 Гбайт памяти увеличат
производительность процессора на 30%.
Первое увеличение объема памяти привносит большой рост производительности процессора для повседневных задач рядового пользователя. Увеличение объема до 24 Гбайт поднимет уровень производительности с 79% до 91% (прирост только 12%).
Прям совсем коротко по теме
Поток – это основной элемент системы, которому ОС выделяет машинное время для параллельного выполнения на процессоре двух и более различных задач, то есть он может выполнять какую-то часть общего кода процесса, в том числе и ту часть, которая в это время уже выполняется другим потоком.
Потоки позволяют использовать концепцию последовательных процессов, которые осуществляют блокирующие системные вызовы и в это же время позволяют «распараллелить» работу.
Многозадачность – это свойство ОС или среды программирования обеспечивать возможность параллельной обработки нескольких процессов. Примитивные многозадачные среды позволяют закрепить за каждой задачей определённый участок памяти и задача выполняется в строго определённые интервалы времени.