¡GoConqr estrena diseño! Cuéntanos qué te parece.

Fichas

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

Sergei Fomin Многопоточное программирование на C/C++ Certificate Inglés 18 fichas

Fichas del conjunto (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;
    Во втором случае можно передавать рабочему не данные клиентские, а дескриптор для чтения этих данных.

Información

Descripción
Карточки к 5-й лекции курса "Многопоточное программирование на C/C++" на stepic.org
Creado por
Sergei Fomin
Visitas
44
Etiquetas
c/c++unixipc
Valoración

Escríbenos

¿Sobre qué es tu mensaje?

¿Qué te parece el nuevo diseño?

¿Te gusta?