- •Методические рекомендации по выполнению практических работ
- •Оп.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-сервера и его настройка
Практическая работа №13 Обзор многопоточности в .Net
Цель работы: научиться проводить анализ преимуществ, недостатков, проблем многопоточностив.NET
Оборудование: Персональный компьютер с ОС Linux
Индивидуальное задание. Провести анализ многопоточности, выявить особенности, достоинства и недостатки многопоточности в .NET.
Теоретические сведения
NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения CommonLanguageRuntime (CLR), которая подходит для разных языков программирования.
Считается, что платформа .NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании SunMicrosystems (ныне принадлежит Oracle).
Почти все возможности .NET Framework доступны через обширное множество управляемых типов. Эти типы организованы в иерархические пространства имен и упакованы в набор сборок, которые вместе со средой CLR составляют платформу .NET.
NET Framework состоит из прикладных API-интерфейсов, большинствоиз которых покрывают три области функциональности:
• технологии пользовательских интерфейсов;
• технологии серверной части;
• технологии распределенных систем.
Функциональные возможности .NET Framework:
• Обширная поддержка асинхронности через методы возврата из задач.
• Поддержка протокола сжатия ZIP.
• Улучшенная поддержка HTTP через новый класс HttpClient.
• Улучшение показателей производительности для сборки мусора и извлеченияресурсов сборки.
• Поддержка взаимодействия WinRT и API-интерфейсов для построения планшетных приложений в стиле Metro.
Платформа .NET Framework предоставляет потоковую модель для низкоуровневого ввода-вывода. Обычно для чтения и записи непосредственно в файлы и сетевыеподключения используются потоки данных, которые могут быть соединены или помещены внутрь декорированных потоков для добавления функциональности сжатияили шифрования.
Асинхронные функции C# 5 значительно упрощают параллельное программирование, поскольку они уменьшают потребность в работе с низкоуровневыми технологиями. Тем не менее, все еще возникают ситуации, при которых нужны сигнальныеконструкции, локальное хранилище потока, блокировки чтения/записи и т.п.
Поток может находиться в одном из нескольких состояний. В целом, поток может быть выполняющимся; готовым к выполнению, как только он получит время и ресурсы ЦП; приостановленным, т.е. временно не выполняющимся; возобновленным в дальнейшем; заблокированным в ожидании ресурсов для своего выполнения; а также завершенным, когда его выполнение окончено и не может быть возобновлено.
В среде .NET Framework определены две разновидности потоков: приоритетный и фоновый. По умолчанию создаваемый поток автоматически становится приоритетным, но его можно сделать фоновым. Единственное отличие приоритетных потоков от фоновых заключается в том, что фоновый поток автоматически завершается, если в его процессе остановлены все приоритетные потоки.
В связи с организацией многозадачности на основе потоков возникает потребность в особого рода режиме, который называется синхронизацией и позволяет координировать выполнение потоков вполне определенным образом. Для такой синхронизации в C# предусмотрена отдельная подсистема.
Все процессы состоят хотя бы из одного потока, который обычно называют основным, поскольку именно с него начинается выполнение программы. Из основного потока можно создать другие потоки.
В языке C# и среде .NET Framework поддерживаются обе разновидности многозадачности: на основе процессов и на основе потоков. Поэтому средствами C# можно создавать как процессы, так и потоки, а также управлять и теми и другими. Для того чтобы начать новый процесс, от программирующего требуется совсем немного усилий, поскольку каждый предыдущий процесс совершенно обособлен от последующего.
Намного более важной оказывается поддержка в C# многопоточной обработки, благодаря которой упрощается написание высокопроизводительных, многопоточных программ на C# по сравнению с некоторыми другими языками программирования.
Для создания потока необходимо указать метод, используемый для выполнения потока.
• Основные операции
o Запуск
o Ожидание завершения
o Запрос досрочного завершения
Пулы потоков:
• Запросы сервера удобно обрабатывать в отдельных потоках
• Большое количество запросов – большое количество потоков – медленная работа
• Необходимо ограничить количество потоков – так появился пул потоков
Таймеры:
• Выполнение периодически повторяющихся операций
• Выполнение операций по истечении указанного интервала времени
• Для выполнения операции таймера используется отдельный поток
• Виды таймеров
o System.Threading.Timer – обычный
o System.Windows.Forms.Timer – «оконный», без создания дополнительного потока
o System.Timers.Timer – устаревший класс
Обработка исключений:
• Исключение может произойти в любом потоке
• Исключение будет выбрасываться повторно
Контекст выполнения потока. Контекст включает:
o Параметры безопасности
o Параметры локализации
o Параметры транзакций
Контекст занимает много места и копируется в создаваемые потоки
• У процессора есть кэш, ускоряющий работу с памятью
o Данные читаются в кэш из памяти
o Данные модифицируются в кэше
• При совместном использовании памяти несколькими ядрами каждое ядро имеет свой кэш
Недостатки традиционной реализации многопоточности
• Традиционные средства императивных языков программирования рассчитаны на однопоточное выполнение инструкций
• Расширение возможностей языков программирования по поддержке многопоточности обеспечивается за счёт применения готовых библиотек и API операционных систем
o Предоставляются низкоуровневые примитивы, ориентированные на реализацию потоков и их синхронизацию, но не распараллеливание обычных алгоритмов
o Реализация и отладка даже несложных алгоритмов в многопоточных программах становится трудной задачей
o Требуется значительное время на обеспечение приемлемого качества кода
o Необходимо самостоятельно управлять количеством потоков с учётом аппаратных возможностей
o Разработанный код трудно обслуживать и использовать повторно.
Преимущества использования пула потоков
• Возможность одновременно обрабатывать ограниченное количество запросов клиентов с постановкой в очередь ожидающих запросов
• Эффективно при наличии значительного числа операций ввода-вывода и ожидания внешних сервисов
• Повышение эффективности использования аппаратных ресурсов системы
• Возможность быстро запускать обработку поступившего запроса при наличии одного или нескольких свободных потоков в пуле.
Ход работы:
1. Ознакомиться с теоретическими сведениями.
2. Провести анализ многопоточности, выявить особенности, достоинства и недостатки. Результаты оформить в таблице.
Содержание отчета
Отчет по практической работе должен содержать следующие пункты:
- название практической работы;
- цель работы;
- краткие теоретические сведения;
- индивидуальное задание для выполнения практической работы;
- краткое описание хода выполнения работы;
- результаты выполнения работы;
- выводы.
