Семафоры-счетчики POSIX Программирование с использованием POSIX thread library.

Презентация:



Advertisements
Похожие презентации
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Advertisements

СИСТЕМНЫЕ ВЫЗОВЫ ВВОДА И ВЫВОДА Системные вызовы и библиотеки Unix SVR4.
Асинхронный ввод/вывод Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
Средства System V IPC Системные вызовы и библиотеки Unix SVR4.
Создание и завершение нитей Программирование с использованием POSIX thread library Иртегов Д.В. Учебное пособие подготовлено по заказу и при.
Система реального времени QNX/Neutrino (QNX6). QNX Микpоядеpная Cетевая Мyльтизадачная Многопользовательcкая.
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
Краткий обзор ОСРВ. RTLinux Встраивается в обычный Linux RTLinux kernel находится между ядром Linux и «железом» RTLinux обрабатывет все прерывания независимо.
POSIX Threads. Общая модель Программа Общая память Поток 1 CPU Поток 2 Поток N Потоки – наборы инструкций, исполняющиеся на CPU. Все потоки одной программы.
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
Многопоточное программирование. Виды параллелизма. Общая память Распределенная память.
ВСТРОЕННЫЕ ИНФОРМАЦИОННО- УПРАВЛЯЮЩИЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ Лекция 5 Операционные системы реального времени Кафедра АСВК, Лаборатория Вычислительных.
Средства System V IPC Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4.
2.Система межпроцессного взаимодействия IPC 2.1.Состав, общие концепции 2.2.Очередь сообщений 2.3.Разделяемая память 2.4.Массив семафоров Взаимодействие.
Реализация взаимодействия процессов. Взаимодействие процессов взаимодействие в рамках локальной ЭВМ (одной ОС) взаимодействие в рамках сети родственные.
Реализация взаимодействия процессов. Взаимодействие процессов взаимодействие в рамках локальной ЭВМ (одной ОС) взаимодействие в рамках сети родственные.
Система межпроцессного взаимодействия IPC. Общие концепции #include key_t ftok ( char * filename, char proj ) filename строка, cодержащая имя файла proj.
Система межпроцессного взаимодействия IPC.. Система межпроцессного взаимодействия IPC. Состав. Очереди сообщений Семафоры Разделяемая память.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.
Транксрипт:

Семафоры-счетчики POSIX Программирование с использованием POSIX thread library

Семафоры-счетчики POSIX Realtime Extension (1003.1b- 1993/1003.1i-1995) Сборка в Solaris требует ключа –lrt В Linux включены в libpthread.so

Неименованные семафоры cc [ flags] file –lrt [ libraries ] #include int sem_init(sem_t *sem, int pshared, unsigned int value); int sem_destroy(sem_t *sem);

Операции над семафорами cc [ flags] file –lrt [ libraries ] #include int sem_post(sem_t *sem); int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem);

sem_getvalue cc [ flags] file –lrt [ libraries ] #include int sem_getvalue( sem_t *restrict sem, int *restrict sval);

Применение – задача производитель-потребитель void thread1() { while(1) { sem_wait(&a); print(…); sem_post(&b); } void thread2() { while(1) { sem_wait(&b); print(…); sem_post(&a); } sem_init(&a, 0, 0); sem_init(&b, 0, 1);

Именованные семафоры cc [ flags] file –lrt [ libraries ] #include sem_t *sem_open(const char *name, int oflag, /* unsigned long mode, unsigned int value */...);

sem_open(3RT) Открывает или создает именованный семафор. Флаги – O_CREAT и O_EXCL, аналогичны одноименным флагам open(2) При использовании O_CREAT необходимо передать еще два параметра – маску прав доступа и начальное значение семафора

sem_close(3RT) cc [ flags] file –lrt [ libraries ] #include int sem_close(sem_t *sem);

sem_close(3RT) Закрывает семафор Неявный sem_close происходит при exit(2), exec(2)

Именованные семафоры Всегда разделяемые (доступны для межпроцессного взаимодействия) Должны закрываться sem_close(3RT) Набор операций тот же, что и над неименованным семафором (sem_post(3RT), sem_wait(3RT), sem_trywait(3RT), sem_getvalue(3RT)) Имя должно начинаться с / Имена могут (но не обязаны) быть видны в файловой системе. В Solaris 10 не видны Уничтожаются при помощи sem_unlink(3RT)

sem_unlink cc [ flags] file –lrt [ libraries ] #include int sem_unlink(const char * name);

sem_unlink Уничтожает имя семафора Семафор уничтожается, когда все процессы, использовавшие его, исполнят sem_close(3rt), exit(2) или exec(2) Sem_unlink не ожидает уничтожения семафора