GoConqr has a new look! Let us know what you think.

Flashcards

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

Sergei Fomin Многопоточное программирование на C/C++ Certificate English 18 cards

Cards in this deck (18)

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

Information

Description
Карточки к 5-й лекции курса "Многопоточное программирование на C/C++" на stepic.org
Created by
Sergei Fomin
Views
44
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?