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

Description

Карточки к 5-й лекции курса "Многопоточное программирование на C/C++" на stepic.org
Sergei Fomin
Flashcards by Sergei Fomin, updated more than 1 year ago
Sergei Fomin
Created by Sergei Fomin about 8 years ago
7
0

Resource summary

Question Answer
Системный вызов 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; Во втором случае можно передавать рабочему не данные клиентские, а дескриптор для чтения этих данных.
Show full summary Hide full summary

Similar

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
FILE CMD
Fen Pin
Private Defense
Krishan kanha
Indian Penal Code
Gaurav Singh
ESTRUCTURA UNIX
Emma Hdz.