Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольные вопросы + ответы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
323.07 Кб
Скачать
  1. Сигналы и их использование для управления процессами

Процессы могут принимать сигналы. Сигнал – традиционный способ асинхронной связи между процессами.

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

Обработка сигналов

Существует несколько вариантов реакции процесса на поступление сигнала.

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

Игнорирование – эффект «отсутствия» сигнала. Процесс продолжает своё нормальное выполнение.

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

Обработчик является обычной функцией с одним целочисленным параметром типа int и возвращающей значение типа void.

Задание обработчика handler для сигнала signum осуществляется системным вызовом signal со следующим прототипом:

sighandler_t signal(int signum, sighandler_t handler);

Обработка процессом сигнала может быть отложена (заблокирована).

Сигналы SIGKILL и SIGSTOP нельзя заблокировать или игнорировать. Для них нельзя определить пользовательский обработчик.

  1. Понятие потока выполнения. Сравнительный анализ потоков и процессов.

Процесс – единица выделения ресурсов. Процессы инертны. Каждый процесс всегда состоит, по крайней мере, из одного потока выполнения. Этот поток создаётся автоматически при инициализации процесса.

Поток выполнения (thread – «тред») – единица исполнения (распределения процессорного времени). Процесс может иметь несколько потоков. Любой процесс можно «расщепить» на несколько параллельных потоков, которые выполняются независимо и совместно используют выделенные процессу ресурсы.

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

Ядро Linux поддерживает потоки в виде легковесных процессов. Потоки одного процесса выполняются в одном адресном пространстве. Они разделяют все переменные приложения.

Издержки на переключение контекста между потоками одного процесса невелики, по сравнению с переключением контекстов разных процессов.

  1. Асинхронные параллельные потоки. Проблематика разработки многопоточных приложений.

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

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

Параллельные процессы могут быть независимыми или взаимодействующими.

Взаимодействующим процессам в некоторые моменты времени может требоваться синхронизировать свои действия (запрос на выполнение операции, обмен данными). Такие процессы являются асинхронными.

Синхронизация – использование специальных неделимых (атомарных) операций для кооперации между асинхронными параллельными процессами.

Параллельная обработка – поле современных исследований и практической деятельности.

Проблемы разработки параллельных алгоритмов: критерий возможности выполнения операций параллельно, надёжное и безопасное взаимодействие процессов, отладка параллельных программ.

Синхронизация «готовность данных».

Задача: вычисление корней уравнения ax2+bx+c

Последовательный алгоритм вычисления корней требует 11 шагов.

Алгоритм с параллельными вычислениями требует 6 шагов. Идея:

объединяем то, что может быть выполнено без дополнительных промежуточных действий.

Проблема готовности промежуточных результатов вычислений при распараллеливании

Синхронизация «выполнение одним из многих».(РиС)

Задача о покупке молока: если один из супругов по возвращении с работы обнаруживает, что молоко закончилось, то необходимо сходить в магазин и купить его.

Возможна ситуация, при которой молоко будет куплено обоими супругами. Источник проблемы: субъекты действуют независимо. Решение проблемы: синхронизация действий (кооперация).

Вариант: использование записки. Новая проблема: на написание и оставление записки требуется время.