Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические ОП 04 выполнять 1-4, 5,6,10,15,16,18,23,24,26,29 за год.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
4.82 Mб
Скачать

Практическая работа №12

Обзор многопоточности в POSIX

Цель работы: научиться проводить анализ преимуществ, недостатков, проблем многопоточности в POSIX

Оборудование: Персональный компьютер с ОС Linux

Индивидуальное задание. Провести анализ многопоточности, выявить особенности, достоинства и недостатки многопоточности в POSIX.

Теоретические сведения

POSIX (англ. portable operating system interfaceforUnix — переносимый интерфейс операционных систем Unix) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов. Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем. Серия стандартов POSIX была разработана комитетом 1003 IEEE. Международная организация по стандартизации (ISO) совместно c Международной электротехнической комиссией (IEC) приняли данный стандарт (POSIX) под названием ISO/IEC 9945.

Задачи:

  • содействовать облегчению переноса кода прикладных программ на иные платформы;

  • способствовать определению и унификации интерфейсов заранее при проектировании, а не в процессе их реализации;

  • сохранять по возможности и учитывать все главные, созданные ранее и используемые прикладные программы;

  • определять необходимый минимум интерфейсов прикладных программ, для ускорения создания, одобрения и утверждения документов;

  • развивать стандарты в направлении обеспечения коммуникационных сетей, распределенной обработки данных и защиты информации;

  • рекомендовать ограничение использования бинарного (объектного) кода для приложений в простых системах.

POSIX определяет набор интерфейсов (функций заголовочных файлов) для программирования потоков. Эти рекомендации носят название POSIXthreads или Pthreads.

В рамках процесса различные потоки имеют свои атрибуты. Часть этих атрибутов наследуются от процесса и они общие для всех потоков, а часть индивидуальны для каждого потока.Под thread-safe функциями понимаются такие, которые безопасно можно вызывать из разных потоков. Как правило это такие функции, которые не используют глобальные ресурсы для своей работы. Стандарт требует, чтобы все функции были таковыми. Исключение делается только для некоторых из них.

Преимущества и недостатки

Преимущества:

• Затраты на создание потоков меньше, чем на создание процессов (~ 2 ms for threads)

• многозадачность, т.е., один процесс может обслуживать несколько клиентов

• Переключение между потоками для ОС менее накладно, чем переключение между процессами

Недостатки:

• Многопоточное программирование требует более аккуратного подхода к разработке поскольку

– Отладка сложнее

– Создание нескольких потоков на однопроцессорной машине не обязательно приведет к увеличению производительности.

Естественно, что как любая модель, модель программирования потоков имеет свои преимущества и недостатки. Основное преимущество использования потоков состоит в том, что они более легковесны, нежели процессы. Операционной системе надо меньше времени на их создание и переключение контекста между потоками по сравнению с процессами.Недостатки, пожалуй, тоже очевидны. Так многопоточные приложения сложнее отлаживать, чем последовательные. Кроме того при некорректном использовании потоков параллельная программа может даже работать медленнее, чем последовательная.

Программная модель pthreads определяет:

• Создание потоков

• Управление исполнением потоков

• Управление разделяемыми ресурсами процесса.

POSIX

POSIX – (PortableOperatingSystemInterfaceforUnix – переносимый интерфейс операционных систем Unix) – набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой.

Разработано комитетом 1003 IEEE, утверждено стандартом ISO/IEC 9945.

POSIX 1003.1 – Корневые службы

• Создание и контроль процессов

• Сигналы

• Исключения плавающей точки

• Нарушение сегментации

• Запрещенные директивы

• Ошибки шины

• Таймеры

• Операции над файлами (директориями)

• Каналы

• Библиотека C (включает стандарт ANSI C)

• Интерфейс и контроль ввода/вывода

POSIX 1003.1b – Расширения реального времени

• Планировка приоритетов

• Сигналы реального времени

• Таймеры и синхронизация

• Семафоры

• Передача сообщений

• Общая память

• Асинхронный и синхронный ввод/вывод

• Интерфейс блокировки памяти

POSIX 1003.1c – Расширения потоков

• Создание, контроль и очистка потоков

• Планировщик потоков

• Синхронизация потоков

• Обработка сигналов

Поддержка POSIX операционными системами

• Полная поддержка

o Android OS

o LynxOS

o QNX

o VxWorks

Неполная поддержка

o FreeBSD

o Linux

Стандарт родился как модель программирования потоков для Unix систем и основывался на стандарте IEC9945-1Стандарт определяет интерфейсы по созданию и управлению потоками, по механизмам разграничения доступа к разделяемым ресурсам процесса.

В программе всегда существует один поток, который создаются при загрузки функции main в Си и PROGRAM в фортране.Далее основной поток может создать дочерние потоки. При этом если основной поток завершается, автоматически (если не предпринято специальных действий) завершаются и дочерние потоки.

Для того, чтобы завершение дочерних потоков не происходило, можно использовать функцию выхода из (основного) потока pthread_exit().

Завершение потоков может происходить по двум причинам, а именно: завершилась функция, которую поток исполняет или (что аналогично) поток вызвал pthred_exit(), поток прервали.

Ход работы:

1. Ознакомиться с теоретическими сведениями.

2. Провести анализ многопоточности, выявить особенности, достоинства и недостатки. Результаты оформить в таблице.

Содержание отчета

Отчет по практической работе должен содержать следующие пункты:

- название практической работы;

- цель работы;

- краткие теоретические сведения;

- индивидуальное задание для выполнения практической работы;

- краткое описание хода выполнения работы;

- результаты выполнения работы;

- выводы.