5. Процессы. Каналы. Сигналы.

Descrição

Карточки к 5-й лекции курса "Многопоточное программирование на C/C++" на stepic.org
Sergei Fomin
FlashCards por Sergei Fomin, atualizado more than 1 year ago
Sergei Fomin
Criado por Sergei Fomin quase 9 anos atrás
10
0

Resumo de Recurso

Questão Responda
Системный вызов fork() Порождает дочерний процесс. Родителю возвращает pid ребёнка, ребёнку возвращает 0.
Механизм "copy on write" Родственные процессы делят физические сегменты памяти до тех пор, пока какой-то процесс не захочет изменить свой участок памяти - только тогда он копирается физически
Системный вызов exec() Заменяет образ процесса на другой процесс, загруженный с жёсткого диска
Переменные окружения Набор пар "ключ=значение"
Основные атрибуты процесса Идентификатор процесса, идентификатор родительского процесса, переменные окружения, идентификаторы пользователя и группы (реальные и эффективные), рабочий каталог, корневой каталог, приоритет
Самые часто используемые сигналы SIGSEGV, SIGFPE, SIGPIPE, SIGABRT, SIGTERM, SIGINT, SIGKILL, SIGCHLD, SIGALARM
Особенности сигналов ANSI После обработки сигнала обработчик автоматически сбрасывается в default. В момент обработки сигналы не блокируются. Прерывают системные вызовы, и те возвращают ошибку. Устарели.
Маска сигналов (POSIX) Позволяет временно блокировать определённые сигналы. Установленный бит в маске означает блокирование.
Основные флаги сигналов POSIX SA_NODEFER - отменить самоблокирование сигнала во время обработки; SA_RESTARTHAND - сбрасывать обработчик после каждого срабатывания; SA_RESTART - не прерывать исполнение системных вызвов; SA_SIGINFO - сигнал реального времени
Сигналы реального времени В отличие от простых сигналов: - Не "склеиваются", а становятся в очередь; - Поддерживают приоритеты; - Несут дополнительную информацию (кем послан, пользовательскую инфу).
Системный вызов pause() Процесс впадает в спячку до получения следующего сигнала
Процессы-зомби Процессы, завершившие выполнение и освободившие все ресурсы, кроме pid. Происходит, если родитель не проверил код возврата дочернего процесса. Избегается с помощью waitpid() или сигнала SIGCHLD
Типы блокировок ресурсов LOCK_EX - только 1 процесс владает ресурсом LOCK_SH - ресурс разделяется Первую обычно ставят на запись, вторую на чтение.
Блокировка по файлу (file lock) Если файла не существует, ресурс свободен; Если файл существует - занят.
Типы каналов fifo - именованный канал pipe - анонимный канал
Как pipe используется для перенаправления стандартного I/O? dup2(int oldfd, int newfd) Закрываем stdin, делаем dup2(pipe, stdin) Тоже самое для stdout
popen Запуск команды и получение дескриптора на чтение или запись в его stdin или stdout. Ограничение: либо чтение, либо запись, что-то одно.
Способы распределение нагрузки на процессоры 1) Сделать много fork() 2) Master process и worker proccesses; Во втором случае можно передавать рабочему не данные клиентские, а дескриптор для чтения этих данных.

Semelhante

Indian Penal Code
Sanskriti Jain
Programming
Herbert Fortes
PLASEA Test Formativo Taxonomia de Bloom
Rafael Blanco
Linux Programming Interface: Chapter 1
Jon Schipp
3. Сокеты Беркли. Мультиплексирование.
Sergei Fomin
7. Потоки. Средства синхронизации.
Sergei Fomin
Conceptos administrativos_Carlos Dante Conde Salazar
Carlos D. Conde Salzar
FILE CMD
Fen Pin
Conceptos administrativos
ESTEFANY RAMIREZ RAMIREZ
Private Defense
Krishan kanha