Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по Операционным системам.docx
Скачиваний:
2
Добавлен:
18.09.2019
Размер:
156 Кб
Скачать
  1. Сигнал в ос unix — это асинхронное уведомление процесса о каком-либо событии.

Функции сигналов:

  • оповещение процессов о возникновении системных событий;

  • обеспечение механизма для коммуникации и синхронизации между прикладными процессами.

  • Сигналы дают возможность вызвать специальную функцию — обработчик сигнала при возникновении определенного события. После обработки сигнала таким обработчиком основная программа продолжает работу с того места, в котором она была прервана поступлением сигнала.

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

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

  • при выборке процесса диспетчером на выполнение из очереди готовых;

  • перед блокировкой или после блокировки;

  • во время некоторых блокировок.

Независимо от источника сигнала все сигналы процессу доставляет ядро ОС.

  1. Поток — это независимо планируемый контекст выполнения, разделяющий единое адресное пространство с другими потоками своего процесса.

Многопоточность - исполнение нескольких потоков в одном процессе.

Основные операции с потоками:

  • Создание нового потока: функции pthread_create — в UNIX, CreateThread—в Windows.

Основным параметром этих функций является имя процедуры, которую необходимо запустить в новом потоке. В Windows также предусмотрена функция CreateRemoteThread, позволяющая создать поток в другом процессе.

  • Прекращение работы процесса. Завершить поток можно изнутри самого этого потока функцией pthread_exit в UNIX или ExitThread — в Windows. После этого поток исчезает и уже не рассматривается планировщиком. Завершить поток можно также из другого потока при помощи функции pthread_cancel в UNIX или TerminateThread — в Windows.

  • Ожидание потоком завершения другого определенного потока. Выполняется при помощи функции pthread_join в UNIX или WaitForSingleObject и WaitForMultipleObject—в Windows. Поток может добровольно уступить свою очередь другому потоку при помощи функций pthread_yield в UNIX или SwitchToThread и SuspendThread — в Windows.

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

Категории ресурсов.

  • Повторно используемые – не истощаются при использовании. Имеют фиксированное количество единиц.

  • Расходуемые – нельзя забрать у процесса без потери данных.

Режимы доступа к ресурсу.

  • Монопольный – доступ к ресурсу в каждый момент времени может получить только один процесс

  • Разделяемый – доступ к ресурсу одновременно может получить любое количество процессов

Ресурсные взаимоблокировки – ни один процесс не может работать, ни один не может высвободить какой-либо ресурс, ни один не может возобновить работу.

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

Условия возникновения взаимоблокировок.

  • Взаимные исключения – одновременно использовать ресурс может только один процесс

  • Удержание и ожидание – процесс может удерживать выделенные ресурсы во время ожидания других ресурсов

  • Отсутствие перераспределения – ресурс не может быть принудительно отобран у удерживающего его процесса

  • Циклическое ожидание – существует замкнутая цепь процессов, каждый из которых удерживает как минимум один ресурс необходимый процессу, следующему в цепи после данного процесса

Предупреждение взаимоблокировок

  • Пренебрежение проблемой в целом

  • Обнаружение и устранение

  • Динамическое избегание тупиков

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