Flashcards
5. Процессы. Каналы. Сигналы.
Cards in this deck (18)
- 1Системный вызов fork()Порождает дочерний процесс. Родителю возвращает pid ребёнка, ребёнку возвращает 0.
- 2Механизм "copy on write"Родственные процессы делят физические сегменты памяти до тех пор, пока какой-то процесс не захочет изменить свой участок памяти - только тогда он копирается физически
- 3Системный вызов exec()Заменяет образ процесса на другой процесс, загруженный с жёсткого диска
- 4Переменные окруженияНабор пар "ключ=значение"
- 5Основные атрибуты процессаИдентификатор процесса, идентификатор родительского процесса, переменные окружения, идентификаторы пользователя и группы (реальные и эффективные), рабочий каталог, корневой каталог, приоритет
- 6Самые часто используемые сигналыSIGSEGV, SIGFPE, SIGPIPE, SIGABRT, SIGTERM, SIGINT, SIGKILL, SIGCHLD, SIGALARM
- 7Особенности сигналов ANSIПосле обработки сигнала обработчик автоматически сбрасывается в default. В момент обработки сигналы не блокируются. Прерывают системные вызовы, и те возвращают ошибку. Устарели.
- 8Маска сигналов (POSIX)Позволяет временно блокировать определённые сигналы. Установленный бит в маске означает блокирование.
- 9Основные флаги сигналов POSIXSA_NODEFER - отменить самоблокирование сигнала во время обработки;
SA_RESTARTHAND - сбрасывать обработчик после каждого срабатывания;
SA_RESTART - не прерывать исполнение системных вызвов;
SA_SIGINFO - сигнал реального времени - 10Сигналы реального времениВ отличие от простых сигналов:
- Не "склеиваются", а становятся в очередь;
- Поддерживают приоритеты;
- Несут дополнительную информацию (кем послан, пользовательскую инфу). - 11Системный вызов pause()Процесс впадает в спячку до получения следующего сигнала
- 12Процессы-зомбиПроцессы, завершившие выполнение и освободившие все ресурсы, кроме pid. Происходит, если родитель не проверил код возврата дочернего процесса. Избегается с помощью waitpid() или сигнала SIGCHLD
- 13Типы блокировок ресурсовLOCK_EX - только 1 процесс владает ресурсом
LOCK_SH - ресурс разделяется
Первую обычно ставят на запись, вторую на чтение. - 14Блокировка по файлу (file lock)Если файла не существует, ресурс свободен;
Если файл существует - занят. - 15Типы каналовfifo - именованный канал
pipe - анонимный канал - 16Как pipe используется для перенаправления стандартного I/O?dup2(int oldfd, int newfd)
Закрываем stdin, делаем dup2(pipe, stdin)
Тоже самое для stdout - 17popenЗапуск команды и получение дескриптора на чтение или запись в его stdin или stdout. Ограничение: либо чтение, либо запись, что-то одно.
- 18Способы распределение нагрузки на процессоры1) Сделать много fork()
2) Master process и worker proccesses;
Во втором случае можно передавать рабочему не данные клиентские, а дескриптор для чтения этих данных.
Information
- Description
- Карточки к 5-й лекции курса "Многопоточное программирование на C/C++" на stepic.org
- Created by
- Sergei Fomin
- Views
- 44
- Tags
- Rating