Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Os_Otvety.docx
Скачиваний:
155
Добавлен:
01.04.2022
Размер:
33 Мб
Скачать
☆

14. Процессы и потоки. Состояния потока

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

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

Потоки возникли как средство распараллеливания вычислений в рамках одного процесса. Процессорное время выделяется потокам, а не процессорам. В простейшем случае процесс состоит из одного потока.

Пример: Программа является рецептом в кулинарной книге. Процессом является сам процесс приготовления по этому рецепту. Ресурсы, выделяемые процессу, - это ингредиенты.

Преимущества использования потоков:

  • Создание потоков требует от ОС меньших накладных расходов, чем при создании процессов. Быстрота создания потока по сравнению с процессом

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

Состояния потоков:

  • Выполнение – активное состояние, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором. В этом состоянии поток выполняет все инструкции.

  • Готовность – пассивное состояние, поток заблокирован в связи с внешними по отношению к нему обстоятельствами. У потока есть все необходимые ресурсы, но процессорного времени у него нет. Как только планировщик выбирает этот поток, то он перейдёт в состояние выполнения.

  • Ожидание – пассивное состояние, находясь в котором поток заблокирован по своим внутренним причинам. Например, поток выполнил системный вызов и сообщил ОС, что он собирается синхронизировать свою работу с каким-то событием, а событие ещё не произошло.

Граф состояний потока:

  1. Поток выбран на выполнение;

  2. Поток ожидает завершения ввода/вывода;

  3. Ввод/вывод завершен (событие произошло);

  4. Поток вытеснен планировщиком.

15. Планирование и диспетчеризация потоков, моменты перепланировки.

Переход от одного потока к другому осуществляется в результате планирования и диспетчеризации.

Планирование включает в себя решение двух задач:

  • Определение момента времени для смены текущего активного потока;

  • Выбор для выполнения потока из очереди готовых потоков.

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

Диспетчеризация - это реализация найденного в результате планирования решения, то есть в переключении процессора с одного потока на другой. Диспетчеризация сводится к следующему:

  • Сохранение контекста текущего потока, который требуется сменить;

  • Загрузка контекста нового потока, выбранного в результате планирования;

  • Запуск нового потока на выполнение.

Ситуации, когда необходимо перепланировка:

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

  2. Активная задача выполнила системный вызов, связанный с запросом на ввод/вывод или на доступ к ресурсу, который в настоящий момент занят. Планировщик переводит задачу в состояние ожидания и выполняет перепланирование (поток выполняет системный вызов, и этот вызов - повод перевести поток в состояние ожидания).

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

  4. Завершение периферийным устройством операции ввода/вывода переводит соответствующую задачу в очередь готовых, и выполняется планирование (устройство завершило операцию ввода-вывода, и кто-то ожидал завершения этой операции, и поток переводится в состояние готовности).

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