Читайте также:
|
|
Если дочерний процесс завершается раньше, чем родитель вызовет функцию wait, то этот дочерний процесс переходит в состояние «зомби»: он завершен, но остается в списке процессов; при этом он виден по команде ps, но не может быть снят командой kill, так как уже завершен.
Его управляющий блок остается неосвобожденным, пока родитель не вызовет wait, чтобы прочитать код завершения потомка.
9. Сигнал в ОС UNIX — это асинхронное уведомление процесса о каком-либо событии.
Функции сигналов:
· оповещение процессов о возникновении системных событий;
· обеспечение механизма для коммуникации и синхронизации между прикладными процессами.
· Сигналы дают возможность вызвать специальную функцию — обработчик сигнала при возникновении определенного события. После обработки сигнала таким обработчиком основная программа продолжает работу с того места, в котором она была прервана поступлением сигнала.
· Процесс оповещения о событии состоит из двух этапов — генерации сигнала и обработки сигнала.
· При наступлении события, связанного с каким-либо сигналом, ядро ОС генерирует этот сигнал путем установки соответствующего бита в маске ожидающих сигналов в управляющем блоке процесса. При этом процесс может получить сигнал лишь в определенные моменты времени:
· при выборке процесса диспетчером на выполнение из очереди готовых;
· перед блокировкой или после блокировки;
· во время некоторых блокировок.
Независимо от источника сигнала все сигналы процессу доставляет ядро ОС.
10. Поток — это независимо планируемый контекст выполнения, разделяющий единое адресное пространство с другими потоками своего процесса.
Многопоточность - исполнение нескольких потоков в одном процессе.
Основные операции с потоками:
· Создание нового потока: функции 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.
11. Ресурс – любой объект, который может запрашиваться и ожидаться процессом, может состоять из любого количества идентичных единиц и процесс может запрашивать любое количество единиц ресурса.
Дата добавления: 2015-05-05; просмотров: 13 | Поможем написать вашу работу | Нарушение авторских прав |