Обзор многопоточности в 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).

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

Важнейшими характеристиками оперативной памяти являются быстродействие, объем памяти, надежность. Важное значение имеет и стоимость элементов памяти.

Кэш-память вводится между ОЗУ и процессором и другими абонентами системной шины. Она не предназначена для хранения каких-либо выделенных массивов информации, а осуществляет хранение тех информационных блоков, к которым происходили последние обращения. Вследствие того, что вероятность повторных обращений очень велика, то при этих обращениях информация будет извлекаться из сверхоперативной кэш-памяти, что существенно ускоряет работу компьютера в целом.

Обзор многопоточности в Java - student2.ru

Конструктивно элементы основной оперативной памяти выполнены в виде модулей, которые устанавливаются в специальные разъемы - слоты - на материнской плате. Возможна замена, дополнение модулей памяти.

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

Страничный файл, который называется также файлом подкачки, в Windows находится на жестком диске. Он используется для хранения данных и программ точно так же, как и физическая память, но его объем обычно превышает объем физической памяти. Windows использует файл подкачки (или файлы, их может быть несколько) для хранения информации, которая не помещается в RAM, производя, если нужно, обмен страниц между файлом подкачки и RAM.

Классические схемы управления памятью представлены на рисунке.

Обзор многопоточности в Java - student2.ru

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

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

Таким образом, управление вводом/выводом — это одна из основных функций любой ОС. Одним из средств правления вводом/выводом, а также инструментом управления памятью является диспетчер задач Windows, он отображает приложения, процессы и службы, которые в текущий момент запущены на компьютере. С его помощью можно контролировать производительность компьютера или завершать работу приложений, которые не отвечают.

При наличии подключения к сети можно также просматривать состояние сети и параметры ее работы. Если к компьютеру подключились несколько пользователей, можно увидеть их имена, какие задачи они выполняют, а также отправить им сообщение.

Также управлять процессами можно и «вручную» при помощи командной строки.

Команды Windows для работы с процессами:

  • at — запуск программ в заданное время
  • Schtasks — настраивает выполнение команд по расписанию
  • Start — запускает определенную программу или команду в отдельном окне.
  • Taskkill — завершает процесс
  • Tasklist — выводит информацию о работающих процессах

Для получения более подробной информации, можно использовать центр справки и поддержки или команду help (например: helpat)

  • cmd.exe — запуск командной оболочки Windows

Ход работы

  1. Отследите выполнение процесса explorer.exe при помощи диспетчера задач и командной строки.
  2. Продемонстрируйте преподавателю завершение и повторный запуск процесса explorer.exe из:
    • Диспетчера задач;
    • Командной строки.

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

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

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

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

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

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

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

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

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

- выводы.

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

Наши рекомендации