- •Методические рекомендации по выполнению практических работ
- •Оп.04 «Операционные системы»
- •Практическая работа №1 Обзор аппаратного обеспечения компьютера: процессоры
- •Практическая работа №2 Обзор аппаратного обеспечения компьютера: память
- •Практическая работа №3 Обзор аппаратного обеспечения компьютера: устройства ввода-вывода
- •Практическая работа №4 Обзор аппаратного и программного обеспечения компьютерных сетей
- •Практическая работа №5 Обслуживание ввода-вывода
- •Практическая работа №6 Принцип уровней абстракции и его использование при разработке операционных систем
- •Практическая работа №7
- •Практическая работа №8 Оценка производительности системы
- •Практическая работа №9
- •Практическая работа №10
- •Практическая работа №11 Обзор многопоточности в unix
- •Практическая работа №12
- •Практическая работа №13 Обзор многопоточности в .Net
- •Практическая работа №14 Обзор многопоточности в Java
- •Практическая работа №15 Методы управления памятью в операционных системах
- •Практическая работа №16 Методы адресации в компьютерных системах
- •Практическая работа №17 Этапы обработки программы от исходного кода к исполняемому в операционных системах
- •Практическая работа №18
- •Практическая работа №19 Организация оверлейной структуры программ
- •Практическая работа №20 Реализация смежного распределения памяти
- •Методы распределения памяти без использования дискового пространства Распределение памяти фиксированными разделами
- •Распределение памяти разделами переменной величины
- •Перемещаемые разделы
- •Методы распределения памяти с использованием дискового пространства Страничное распределение
- •Сегментное распределение
- •Странично-сегментное распределение
- •Свопинг
- •Практическая работа №21
- •Практическая работа №22 Реализация хешированных таблиц страниц
- •Практическая работа №23 Создание резервных копий
- •Практическая работа №24 Восстановление данных
- •Практическая работа №25 Работа с антивирусными программами
- •Практическая работа №26 Основные правила и требования к парольной защите
- •Практическая работа №28 Осуществление мероприятий по защите персональных данных
- •Практическая работа №29
- •Приложение а
- •Практическая работа №30 Обеспечение работы системы регистрации и авторизации пользователей сети
- •Практическая работа №31 Осуществление системного администрирования локальных сетей
- •Практическая работа №32 Типы и решения сетевых проблем
- •Сети имеют сложную структуру
- •Средство устранения неполадок сети поможет решить проблему
- •Практическая работа №33 Установка контроллера домена и dns–сервера
- •Установка контроллера домена в существующий домен с использованием интерфейса Windows
- •Практическая работа №34 Добавление роли dhcp-сервера и его настройка
Практическая работа №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. Провести анализ многопоточности, выявить особенности, достоинства и недостатки. Результаты оформить в таблице.
Содержание отчета
Отчет по практической работе должен содержать следующие пункты:
- название практической работы;
- цель работы;
- краткие теоретические сведения;
- индивидуальное задание для выполнения практической работы;
- краткое описание хода выполнения работы;
- результаты выполнения работы;
- выводы.
