Обзор многопоточности в Java
Цель работы: научиться проводить анализ преимуществ, недостатков, проблем многопоточностивJava.
Оборудование:Персональный компьютер с ОС Linux
Индивидуальное задание.Провести анализ многопоточности, выявить особенности, достоинства и недостатки многопоточности в Java
Теоретические сведения
Работа с процессами и потоками
· Создание процессов
o Класс java.lang.ProcessBuilder
o После создания потока его можно принудительно завершить или послать ему данные
· Создание потоков
o Наследование от класса java.lang.Thread – основной
Способы синхронизации потоков
· Ключевое слово synchronized – критическая секция, основной
o Объявление метода, целиком являющегося критической секцией
o Выделение критической секции в теле метода
· Использование типов пакета java.util.concurrent
o CyclicBarrier
o CountDownLatch
§ ConcurrentMap<K,V>
§ BlockingQueue<E>
Модель работы с потоками
· В JRE до версии 1.2 использовалась модель GreenThreads
o GreenThreads – имитация потоков операционной системы
o JVM берёт на себя заботу о переключении между разными GreenThreads
o Для ОС все GreenThreads управляемого процесса являются единственным потоком
o Даже при использовании GreenThreads для ОС JVM представляется в виде нескольких потоков, например, потока, в котором запускается сборщик мусора
· Преимущества
o Теоретически выше скорость переключения между GreenThreads (реально работает очень медленно)
o Требуется меньше ресурсов
o Возможность создания большего количества GreenThreads, по сравнению с потоками
· Недостатки
o Невозможно выполнить GreenThreads на разных процессорах
o В единицу времени выполняется только один GreenThread
· Начиная с версии 1.2 в JRE по умолчанию используется модель потоков ОС, но модель GreenThreads также поддерживается
Особенности работы с потоками Java в ОС Solaris
· В ОС Solaris для Java начиная с версии 1.2 возможна использование модели MхN для работы с потоками
Управление задачами
· java.util.concurrent.ThreadPoolExecutor – реализация пула потоков
· java.util.concurrent.ScheduledThreadPoolExecutor – дополнительная возможность выполнять задания по расписанию или периодически
Ход работы:
1. Ознакомиться с теоретическими сведениями.
2. Провести анализ многопоточности, выявить особенности, достоинства и недостатки. Результаты оформить в таблице.
Содержание отчета
Отчет по практической работе должен содержать следующие пункты:
- название практической работы;
- цель работы;
- краткие теоретические сведения;
- индивидуальное задание для выполнения практической работы;
- краткое описание хода выполнения работы;
- результаты выполнения работы;
- выводы.
Практическая работа №15
Методы управления памятью в операционных системах
Цель работы: научиться определять и анализировать основные характеристики памяти компьютера.
Индивидуальное задание
Провести анализ использования памяти в операционных системах
Оборудование:ПК с операционной системой Windows XP/7/8.
Теоретические сведения
Система памяти является важнейшей обязательной частью персонального компьютера, без которой он не может функционировать.
По своей структуре система памяти разделяется на основную (внутреннюю) и внешнюю память. Основная (внутренняя) память - это память, к которой центральный процессор компьютера в процессе работы обращается постоянно за получением команд и данных, необходимых для функционирования компьютера. Внешняя память - это различного типа запоминающие устройства, где информация может сохраняться до начала и после обработки в компьютере.
Основная память, в свою очередь, делится на оперативную и постоянную.
Оперативная память является главной частью основной памяти и применяется для оперативного обмена информацией, т.е. командами и данными, между процессором, внешней памятью, периферийными устройствами ПК. Устройства оперативной памяти сокращенно называют ОЗУ или RAM (RandomAccessMemory) - память с произвольным доступом. Это название соответствует тому положению, что оперативная память должна обеспечивать чтение, запись любой ячейки ОЗУ в произвольном порядке.
Оперативная память может выполняться с использованием элементов памяти динамических (DRAM) и статических (SRAM).
И динамическая, и статическая память являются энергозависимыми. При отключении питания информация будет потеряна.
Важнейшими характеристиками оперативной памяти являются быстродействие, объем памяти, надежность. Важное значение имеет и стоимость элементов памяти.
Кэш-память вводится между ОЗУ и процессором и другими абонентами системной шины. Она не предназначена для хранения каких-либо выделенных массивов информации, а осуществляет хранение тех информационных блоков, к которым происходили последние обращения. Вследствие того, что вероятность повторных обращений очень велика, то при этих обращениях информация будет извлекаться из сверхоперативной кэш-памяти, что существенно ускоряет работу компьютера в целом.
Конструктивно элементы основной оперативной памяти выполнены в виде модулей, которые устанавливаются в специальные разъемы - слоты - на материнской плате. Возможна замена, дополнение модулей памяти.
Через оперативную память центральный процессор осуществляет связь с внутренней постоянной памятью. В современных ПК такая внутренняя постоянная память представлена винчестером - накопителем на твердом магнитном диске. На винчестере в специальном отделе хранится программное обеспечение ПК, а в других отделах - необходимые пользователю информационные данные, в том числе и архивируемые. Емкость современного винчестера может достигать нескольких сотен и даже тысяч Гигабайт.
Страничный файл, который называется также файлом подкачки, в Windows находится на жестком диске. Он используется для хранения данных и программ точно так же, как и физическая память, но его объем обычно превышает объем физической памяти. Windows использует файл подкачки (или файлы, их может быть несколько) для хранения информации, которая не помещается в RAM, производя, если нужно, обмен страниц между файлом подкачки и RAM.
Классические схемы управления памятью представлены на рисунке.
Необходимость обеспечить программам возможность осуществлять обмен данными с внешними устройствами и при этом не включать в каждую двоичную программу соответствующий двоичный код, осуществляющий собственно управление устройствами ввода/вывода, привела разработчиков к созданию системного программного обеспечения и, в частности, самих операционных систем.
Программирование задач управления вводом/выводом является наиболее сложным и трудоемким, требующим очень высокой квалификации. Поэтому код, позволяющий осуществлять операции ввода/вывода, стали оформлять в виде системных библиотечных процедур; потом его стали включать не в системы программирования, а в операционную систему с тем, чтобы в каждую отдельно взятую программу его не вставлять, а только позволить обращаться к такому коду. Системы программирования стали генерировать обращения к этому системному коду ввода/вывода и осуществлять только подготовку к собственно операциям ввода/вывода, то есть автоматизировать преобразование данных к соответствующему формату, понятному устройствам, избавляя прикладных программистов от этой сложной и трудоемкой работы. Другими словами, системы программирования вставляют в машинный код необходимые библиотечные подпрограммы ввода/вывода и обращения к тем системным программным модулям, которые, собственно, и управляют операциями обмена между оперативной памятью и внешними устройствами.
Таким образом, управление вводом/выводом — это одна из основных функций любой ОС. Одним из средств правления вводом/выводом, а также инструментом управления памятью является диспетчер задач Windows, он отображает приложения, процессы и службы, которые в текущий момент запущены на компьютере. С его помощью можно контролировать производительность компьютера или завершать работу приложений, которые не отвечают.
При наличии подключения к сети можно также просматривать состояние сети и параметры ее работы. Если к компьютеру подключились несколько пользователей, можно увидеть их имена, какие задачи они выполняют, а также отправить им сообщение.
Также управлять процессами можно и «вручную» при помощи командной строки.
Команды Windows для работы с процессами:
- at — запуск программ в заданное время
- Schtasks — настраивает выполнение команд по расписанию
- Start — запускает определенную программу или команду в отдельном окне.
- Taskkill — завершает процесс
- Tasklist — выводит информацию о работающих процессах
Для получения более подробной информации, можно использовать центр справки и поддержки или команду help (например: helpat)
- cmd.exe — запуск командной оболочки Windows
Ход работы
- Отследите выполнение процесса explorer.exe при помощи диспетчера задач и командной строки.
- Продемонстрируйте преподавателю завершение и повторный запуск процесса explorer.exe из:
- Диспетчера задач;
- Командной строки.
3. Сделать выводы о взаимосвязи запушенных процессов и оперативной памятью компьютера.
Содержание отчета
Отчет по практической работе должен содержать следующие пункты:
- название практической работы;
- цель работы;
- краткие теоретические сведения;
- индивидуальное задание для выполнения практической работы;
- краткое описание хода выполнения работы;
- результаты выполнения работы;
- выводы.
Практическая работа №16