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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  24. ПОДХОД

    View full-size slide

  25. ПОДХОД

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  61. АНАЛИЗ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  72. РЕЗУЛТАТ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  78. ОБОБЩЕНИЕ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide