Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Презентация за дипломна работа

Презентация за дипломна работа

Обзор и сравнителен анализ на методите за конкурентно и паралелно програмиране

Georgy Angelov

February 13, 2019
Tweet

More Decks by Georgy Angelov

Other Decks in Programming

Transcript

  1. ОБЗОР И СРАВНИТЕЛЕН АНАЛИЗ НА МОДЕЛИТЕ ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО

    ПРОГРАМИРАНЕ Дипломант: Георги Сергеев Ангелов РСМТ Научен ръководител: доц. д-р Калин Георгиев Николов
  2. КОНКУРЕНТНОТО И ПАРАЛЕЛНОТО ПРОГРАМИРАНЕ... • ...става все по-приложимо; • ...става

    все по-наложително; • ...е трудно като цяло; • ...може да се постигне, използвайки много различни модели.
  3. ЦЕЛИ • Да запозная разработчиците на софтуерни системи с по-

    известните модели за конкурентно и паралелно програмиране
  4. ЦЕЛИ • Да запозная разработчиците на софтуерни системи с по-

    известните модели за конкурентно и паралелно програмиране • Да предоставя практически-ориентиран сравнителен анализ
  5. ЦЕЛИ • Да запозная разработчиците на софтуерни системи с по-

    известните модели за конкурентно и паралелно програмиране • Да предоставя практически-ориентиран сравнителен анализ • Да създам и разгледам реализации на представителни задачи, използващи тези модели
  6. ЦЕЛИ • Да запозная разработчиците на софтуерни системи с по-

    известните модели за конкурентно и паралелно програмиране • Да предоставя практически-ориентиран сравнителен анализ • Да създам и разгледам реализации на представителни задачи, използващи тези модели • Да дефинирам метод за избор на такъв модел
  7. ПРАКТИЧЕСКИ ФОКУС • Фокус върху популярни и доказано приложими модели

    • Обзор, който не предполага предварително знание за моделите
  8. ПРАКТИЧЕСКИ ФОКУС • Фокус върху популярни и доказано приложими модели

    • Обзор, който не предполага предварително знание за моделите • Разглежда моделите както на високо (теоретично) ниво, така и конкретни техни реализации
  9. ПРАКТИЧЕСКИ ФОКУС • Фокус върху популярни и доказано приложими модели

    • Обзор, който не предполага предварително знание за моделите • Разглежда моделите както на високо (теоретично) ниво, така и конкретни техни реализации • Анализ в контекста на типични проекти от софтуерната индустрия
  10. ПРАКТИЧЕСКИ ФОКУС • Фокус върху популярни и доказано приложими модели

    • Обзор, който не предполага предварително знание за моделите • Разглежда моделите както на високо (теоретично) ниво, така и конкретни техни реализации • Анализ в контекста на типични проекти от софтуерната индустрия • Критерии за сравнение, които са важни в практиката
  11. СЪЩЕСТВУВАЩИ РАЗРАБОТКИ • Много книги и разработки, разглеждащи конкретен модел

    • Малко от тях разглеждат няколко модела • Още по-малко съпоставят и сравняват няколко модела
  12. СЪЩЕСТВУВАЩИ РАЗРАБОТКИ • Много книги и разработки, разглеждащи конкретен модел

    • Малко от тях разглеждат няколко модела • Още по-малко съпоставят и сравняват няколко модела • Повечето от тях се фокусират върху определени аспекти на моделите
  13. СЪЩЕСТВУВАЩИ РАЗРАБОТКИ • Много книги и разработки, разглеждащи конкретен модел

    • Малко от тях разглеждат няколко модела • Още по-малко съпоставят и сравняват няколко модела • Повечето от тях се фокусират върху определени аспекти на моделите • Практически липсват разработки, предоставящи метод за избор
  14. ПОДХОД • Избор на модели за разглеждане • Съставяне на

    въведение във всеки от тях • Избор на представителни задачи
  15. ПОДХОД • Избор на модели за разглеждане • Съставяне на

    въведение във всеки от тях • Избор на представителни задачи • Разглеждане на практически реализации за всеки модел
  16. ПОДХОД • Избор на модели за разглеждане • Съставяне на

    въведение във всеки от тях • Избор на представителни задачи • Разглеждане на практически реализации за всеки модел • Анализ на базата на реализациите и допълнителни източници
  17. ПОДХОД • Избор на модели за разглеждане • Съставяне на

    въведение във всеки от тях • Избор на представителни задачи • Разглеждане на практически реализации за всеки модел • Анализ на базата на реализациите и допълнителни източници • Определяне на метод за избор на модел
  18. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ МОДЕЛИ • Нишки и ключалки

    • Софтуерна Транзакционна Памет • Функционален паралелизъм
  19. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ МОДЕЛИ • Нишки и ключалки

    • Софтуерна Транзакционна Памет • Функционален паралелизъм • Асинхронно програмиране
  20. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ МОДЕЛИ • Нишки и ключалки

    • Софтуерна Транзакционна Памет • Функционален паралелизъм • Асинхронно програмиране • Актьорски модел
  21. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ МОДЕЛИ • Нишки и ключалки

    • Софтуерна Транзакционна Памет • Функционален паралелизъм • Асинхронно програмиране • Актьорски модел • Комуникиращи последователни процеси
  22. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ МОДЕЛИ • Нишки и ключалки

    • Софтуерна Транзакционна Памет • Функционален паралелизъм • Асинхронно програмиране • Актьорски модел • Комуникиращи последователни процеси • Други специализирани модели
  23. ЗА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ ЖЕЛАНИ ХАРАКТЕРИСТИКИ • Практическа насоченост - реализация,

    достатъчно близка до реален код • Представителност за определен клас практически проблеми
  24. ЗА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ ЖЕЛАНИ ХАРАКТЕРИСТИКИ • Практическа насоченост - реализация,

    достатъчно близка до реален код • Представителност за определен клас практически проблеми • Позволяват кратка и стегната реализация
  25. БАЗА ОТ ДАННИ ОТ ТИП КЛЮЧ-СТОЙНОСТ • Включва атомарни операции

    върху повече от един ключ (например getAndUpdate и mergeAndSet)
  26. БАЗА ОТ ДАННИ ОТ ТИП КЛЮЧ-СТОЙНОСТ • Включва атомарни операции

    върху повече от един ключ (например getAndUpdate и mergeAndSet) • Представителна за сървърни приложения, обработващи заявки
  27. БАЗА ОТ ДАННИ ОТ ТИП КЛЮЧ-СТОЙНОСТ • Включва атомарни операции

    върху повече от един ключ (например getAndUpdate и mergeAndSet) • Представителна за сървърни приложения, обработващи заявки • Променящо се състояние
  28. БАЗА ОТ ДАННИ ОТ ТИП КЛЮЧ-СТОЙНОСТ • Включва атомарни операции

    върху повече от един ключ (например getAndUpdate и mergeAndSet) • Представителна за сървърни приложения, обработващи заявки • Променящо се състояние • Проблеми и решения, свързани с координация на достъп до общи структури от данни
  29. ОБРАБОТКА НА ГЕОГРАФСКИ ДАННИ • Прочитане, филтриране и агрегация на

    данни за географски обекти • Големина - 41GiB за планетата, 19GiB за Европа и 86MiB за България ОТ OPENSTREETMAP
  30. ОБРАБОТКА НА ГЕОГРАФСКИ ДАННИ • Прочитане, филтриране и агрегация на

    данни за географски обекти • Големина - 41GiB за планетата, 19GiB за Европа и 86MiB за България • Поточна обработка ОТ OPENSTREETMAP
  31. ОБРАБОТКА НА ГЕОГРАФСКИ ДАННИ • Прочитане, филтриране и агрегация на

    данни за географски обекти • Големина - 41GiB за планетата, 19GiB за Европа и 86MiB за България • Поточна обработка • Представителна за проекти, обработващи големи масиви от данни ОТ OPENSTREETMAP
  32. СЪЗДАДЕНИ РЕАЛИЗАЦИИ • База от данни чрез нишки в Java

    • База от данни чрез Софтуерна транзакционна памет в Clojure НА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ
  33. СЪЗДАДЕНИ РЕАЛИЗАЦИИ • База от данни чрез нишки в Java

    • База от данни чрез Софтуерна транзакционна памет в Clojure • Обработка на географски данни чрез нишки в Java НА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ
  34. СЪЗДАДЕНИ РЕАЛИЗАЦИИ • База от данни чрез нишки в Java

    • База от данни чрез Софтуерна транзакционна памет в Clojure • Обработка на географски данни чрез нишки в Java • Обработка на географски данни чрез потоци в Java НА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ
  35. СЪЗДАДЕНИ РЕАЛИЗАЦИИ • База от данни чрез нишки в Java

    • База от данни чрез Софтуерна транзакционна памет в Clojure • Обработка на географски данни чрез нишки в Java • Обработка на географски данни чрез потоци в Java • Обработка на географски данни чрез Комуникиращи последователни процеси в Go НА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ
  36. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба ИЗБРАНИ ХАРАКТЕРИСТИКИ
  37. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба • Производителност ИЗБРАНИ ХАРАКТЕРИСТИКИ
  38. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба • Производителност • Ниво на абстракция ИЗБРАНИ ХАРАКТЕРИСТИКИ
  39. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба • Производителност • Ниво на абстракция • Композируемост ИЗБРАНИ ХАРАКТЕРИСТИКИ
  40. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба • Производителност • Ниво на абстракция • Композируемост • Леснота за поддръжка ИЗБРАНИ ХАРАКТЕРИСТИКИ
  41. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба • Производителност • Ниво на абстракция • Композируемост • Леснота за поддръжка • Възможност за разпределена работа ИЗБРАНИ ХАРАКТЕРИСТИКИ
  42. АНАЛИЗ • Устойчивост на проблеми (fault-tolerance) • Безопасност от програмистки

    грешки (safety) • Естественост за употреба • Производителност • Ниво на абстракция • Композируемост • Леснота за поддръжка • Възможност за разпределена работа • Възможност за употреба заедно с други модели ИЗБРАНИ ХАРАКТЕРИСТИКИ
  43. МЕТОД ЗА ИЗБОР 1. Определяне на вида на системата НА

    МОДЕЛ ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ
  44. МЕТОД ЗА ИЗБОР 1. Определяне на вида на системата 2.

    Разделяне на подсистеми (при необходимост) НА МОДЕЛ ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ
  45. МЕТОД ЗА ИЗБОР 1. Определяне на вида на системата 2.

    Разделяне на подсистеми (при необходимост) 3. Определяне на подходящи модели за всяка подсистема, базирайки се на направения анализ НА МОДЕЛ ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ
  46. МЕТОД ЗА ИЗБОР 1. Определяне на вида на системата 2.

    Разделяне на подсистеми (при необходимост) 3. Определяне на подходящи модели за всяка подсистема, базирайки се на направения анализ 4. Избор на модел измежду подходящите за този вид система НА МОДЕЛ ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ