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. ОБЗОР И СРАВНИТЕЛЕН
    АНАЛИЗ НА МОДЕЛИТЕ ЗА
    КОНКУРЕНТНО И ПАРАЛЕЛНО
    ПРОГРАМИРАНЕ
    Дипломант:
    Георги Сергеев Ангелов
    РСМТ
    Научен ръководител:
    доц. д-р Калин Георгиев Николов

    View Slide

  2. ЗАЩО ИЗБРАХ
    ТАЗИ ТЕМА?

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. КОНКУРЕНТНОТО И ПАРАЛЕЛНОТО
    ПРОГРАМИРАНЕ...

    View Slide

  12. КОНКУРЕНТНОТО И ПАРАЛЕЛНОТО
    ПРОГРАМИРАНЕ...
    • ...става все по-приложимо;

    View Slide

  13. КОНКУРЕНТНОТО И ПАРАЛЕЛНОТО
    ПРОГРАМИРАНЕ...
    • ...става все по-приложимо;
    • ...става все по-наложително;

    View Slide

  14. КОНКУРЕНТНОТО И ПАРАЛЕЛНОТО
    ПРОГРАМИРАНЕ...
    • ...става все по-приложимо;
    • ...става все по-наложително;
    • ...е трудно като цяло;

    View Slide

  15. КОНКУРЕНТНОТО И ПАРАЛЕЛНОТО
    ПРОГРАМИРАНЕ...
    • ...става все по-приложимо;
    • ...става все по-наложително;
    • ...е трудно като цяло;
    • ...може да се постигне, използвайки много различни
    модели.

    View Slide

  16. ЦЕЛИ

    View Slide

  17. ЦЕЛИ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  22. ПРАКТИЧЕСКИ ФОКУС

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. СЪЩЕСТВУВАЩИ РАЗРАБОТКИ

    View Slide

  29. СЪЩЕСТВУВАЩИ РАЗРАБОТКИ
    • Много книги и разработки, разглеждащи конкретен
    модел

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  34. ПОДХОД

    View Slide

  35. ПОДХОД

    View Slide

  36. ПОДХОД
    • Избор на модели за разглеждане

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  42. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ
    МОДЕЛИ

    View Slide

  43. ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО ПРОГРАМИРАНЕ
    МОДЕЛИ
    • Нишки и ключалки

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. ПРЕДСТАВИТЕЛНИ ЗАДАЧИ

    View Slide

  51. ЗА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ
    ЖЕЛАНИ ХАРАКТЕРИСТИКИ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  55. БАЗА ОТ ДАННИ ОТ ТИП КЛЮЧ-СТОЙНОСТ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  60. ОБРАБОТКА НА ГЕОГРАФСКИ ДАННИ
    ОТ OPENSTREETMAP

    View Slide

  61. ОБРАБОТКА НА ГЕОГРАФСКИ ДАННИ
    • Прочитане, филтриране и агрегация на данни за
    географски обекти
    ОТ OPENSTREETMAP

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  65. СЪЗДАДЕНИ РЕАЛИЗАЦИИ
    НА ПРЕДСТАВИТЕЛНИТЕ ЗАДАЧИ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  71. АНАЛИЗ

    View Slide

  72. АНАЛИЗ
    ИЗБРАНИ ХАРАКТЕРИСТИКИ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  82. РЕЗУЛТАТ

    View Slide

  83. МЕТОД ЗА ИЗБОР
    НА МОДЕЛ ЗА КОНКУРЕНТНО И ПАРАЛЕЛНО
    ПРОГРАМИРАНЕ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  88. ОБОБЩЕНИЕ

    View Slide

  89. КАТАЛОГ ЗА МОДЕЛИ ЗА
    КОНКУРЕНТНОСТ

    View Slide

  90. НАРЪЧНИК ЗА ИЗБОР

    View Slide

  91. БЛАГОДАРЯ
    ЗА ВНИМАНИЕТО!

    View Slide