Застосування мови програмування GO для моделювання процесів масового обслуговування
DOI:
https://doi.org/10.30837/2522-9818.2024.2.065Ключові слова:
комп’ютерне моделювання; система масового обслуговування; мова програмування Go; конкаренсі.Анотація
Предметом дослідження статті є методи та підходи до програмного моделювання систем масового обслуговування на прикладі багатоканальної системи з обмеженою чергою та відмовами в разі її переповнення. Мета роботи – обґрунтування доцільності застосування сучасних комп’ютерних інформаційних технологій, а саме мови програмування Go для моделювання систем масового обслуговування. У статті вирішуються такі завдання: формулювання досліджуваної системи масового обслуговування; визначення компонентів, критеріїв спорідненості систем масового обслуговування з їх програмними моделями; загальний огляд конкаренсі як математичної моделі; опис підходів та інструментарію мови програмування Go. Упроваджуються такі методи: мова програмування Go та її інструментарій, конкаренсі, паралельне виконання. Досягнуті результати: сформульовано досліджуване завдання масового обслуговування; визначено критерії порівняння компонентів систем масового обслуговування з інструментарієм мови програмування Go; проаналізовано доцільність використання мови програмування Go для моделювання систем масового обслуговування; подальшого розвитку набув інструментарій для комп’ютерного моделювання систем масового обслуговування; запропоновано застосування підходів конкаренсі, їх імплементації в мові програмування Go до моделювання систем масового обслуговування. Висновки. Мова програмування Go є дуже вдалою технологією для моделювання систем масового обслуговування. Її філософія, спосіб роботи, а також вбудований інструментарій має широкі можливості для моделювання різноманітних систем масового обслуговування. Використання зазначеної мови є доцільним і дозволяє наблизити поведінку програми до модельованого процесу, спростити імплементацію та зменшити час, необхідний на оброблення даних. Визначено значні перспективи щодо подальшого впровадження програмного продукту, реалізованого мовою Go у сфері моделювання процесів масового обслуговування.
Посилання
Список літератури
Литвинов А.Л. Теорія систем масового обслуговування. Харків: ХНУМГ ім. О.М. Бекетова, 2018. 141 с.
Borovkov A. Stochastic Processes in Queueing Theory. Translate by K.Wickwire. New York: Springer-Verlag, 1976. 280 p. DOI: https://doi.org/10.1007/978-1-4612-9866-3
Chabbi M., Ramanathan M.K. A study of real-world data races in Golang. PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, San Diego, 13–17 June 2022 / Special Inter. Group on Program. Lang. SIGPLAN. New York, 2022. P. 474–489. DOI: https://doi.org/10.1145/3519939.3523720
Zeifman A.I. Quasi-Markov Processes and Description of Some Models of Queueing Theory. IFAC Proceedings Volumes. 1986. Vol. 19. No. 5. P. 445–449. DOI: https://doi.org/10.1016/S1474-6670(17)59840-7
Hoare А. Communicating sequential processes. New Jersey: Prentice Hall, 1985. 235 p. DOI: https://doi.org/10.1145/359576.359585
Yunfei Liu EMsFEM based concurrent topology optimization method for hierarchical structure with multiple substructures/ Yunfei Liu et al. Computer Methods in Applied Mechanics and Engineering. 2024. Vol. 418. Part A. 116549. P. 1–26. DOI: https://doi.org/10.1016/j.cma.2023.116549
C. A. R. Hoare. Communicating sequential processes. Communications of the ACM. 1978. Vol. 21. No 8. P. 666–677. DOI: https://doi.org/10.1145/359576.359585
Sufyan bin U. Mastering GoLang: A Beginner's Guide. Boca Raton: CRC Press, 2022. 298 p. DOI: https://doi.org/10.1201/9781003310457
Fava D., Steffen M. Ready, set, Go!: Data-race detection and the Go language. Science of Computer Programming. 2020. Vol. 195. 102473. P.1–23. DOI: https://doi.org/10.1016/j.scico.2020.102473
Sottile M., Mattson T., Rasmussen C. Introduction to Concurrency in Programming Languages. New York: Chapman and Hall/CRC, 2009. 344 p. DOI: https://doi.org/10.1201/b17174
Sufyan bin U. GoLang: The Ultimate Guide. Boca Raton: CRC Press, 2022. 366 p. DOI: https://doi.org/10.1201/9781003309055
Bowman H., Gomez R. Concurrency Theory: Calculi an Automata for Modelling Untimed and Timed Concurrent Systems. London: Springer-Verlag, 2006. 422 p. DOI: https://doi.org/10.1007/1-84628-336-1
Zhang D., Qi P., Zhang Y. GoDetector: Detecting Concurrent Bug in Go. IEEE Access. 2021. Vol. 9. P. 136302–136312. DOI: https://doi.org/10.1109/ACCESS.2021.3116027
Donovan A. A. A., Kernighan B. W. The Go programming language. New York: Addison-Wesley Professional, 2015. 400 p.
Pontelli E., Gupta G. On the duality between or-parallelism and and-parallelism in logic programming. 1st International EURO-PAR Conference on Parallel Processing: EURO-PAR 199. Stockholm, 29–31 aug. 1995. Lecture Notes in Computer Science. Vol 966. Springer, Berlin. 2005. P. 43–54. DOI: https://doi.org/10.1007/BFb0020454
Komendantskaya E., Schmidt M., Heras J. Exploiting Parallelism in Coalgebraic Logic Programming. Electronic Notes in Theoretical Computer Science. 2014. Vol. 303. P. 121–148. DOI: https://doi.org/10.1016/j.entcs.2014.02.007
Whitney J., Gifford C., Pantoja M. Distributed execution of communicating sequential process-style concurrency: Golang case study. The Journal of Supercomputing. 2019. Vol. 75. No 3. P. 1396–1409. DOI: https://doi.org/10.1007/s11227-018-2649-2
References
Lytvynov, A. (2018), Queuing Theory System, [Teoriia system masovoho obsluhovuvannia], KhNUMH im. O.M. Beketova, Kharkiv, 141 p.
Borovkov, A. (1976), Stochastic Processes in Queueing Theory. Translate by K.Wickwire, Springer-Verlag, New York, 280 p. DOI: https://doi.org/10.1007/978-1-4612-9866-3
Chabbi, M., Ramanathan, M. (2022), "A study of real-world data races in Golang", PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, 13–17 June 2022, San Diego. Special Inter. Group on Program. Lang. SIGPLAN, New York, P. 474–489. DOI: https://doi.org/10.1145/3519939.3523720
Zeifman, A. (1986), "Quasi-Markov Processes and Description of Some Models of Queueing Theory", IFAC Proceedings Volumes, Vol. 19, No. 5, P. 445–449. DOI: https://doi.org/10.1016/S1474-6670(17)59840-7
Hoare, A. (1985), Communicating sequential processes, Prentice Hall, New Jersey. 235 p. DOI: https://doi.org/10.1145/359576.359585
Liu, Y. (2024), "EMsFEM based concurrent topology optimization method for hierarchical structure with multiple substructures"/ Liu, Y. et al., Computer Methods in Applied Mechanics and Engineering, Vol. 418, Part A, 116549, P. 1–26. DOI: https://doi.org/10.1016/j.cma.2023.116549
Hoare, A. (1978), "Communicating sequential processes", Communications of the ACM, Vol. 21, No 8, P. 666–677. DOI: https://doi.org/10.1145/359576.359585
Sufyan, bin U. (2022), Mastering GoLang: A Beginner's Guide, CRC Press, Boca Raton, 298 p. DOI: https://doi.org/10.1201/9781003310457
Fava, D., Steffen, M. (2020), "Ready, set, Go!: Data-race detection and the Go language", Science of Computer Programming, Vol. 195, 102473, P.1–23. DOI: https://doi.org/10.1016/j.scico.2020.102473
Sottile, M., Mattson, T., Rasmussen, C. (2009), Introduction to Concurrency in Programming Languages, Chapman and Hall/CRC, New York, 344 p. DOI: https://doi.org/10.1201/b17174
Sufyan, bin U. (2022), GoLang: The Ultimate Guide, CRC Press, Boca Raton, 366 p. DOI: https://doi.org/10.1201/9781003309055
Bowman, H., Gomez, R. (2006), Concurrency Theory: Calculi an Automata for Modelling Untimed and Timed Concurrent Systems, Springer-Verlag, London, 422 p. DOI: https://doi.org/10.1007/1-84628-336-1
Zhang, D., Qi, P., Zhang, Y. (2021), "GoDetector: Detecting Concurrent Bug in Go", IEEE Access, Vol. 9, P. 136302–136312. DOI: https://doi.org/10.1109/ACCESS.2021.3116027
Donovan, A., Kernighan, B. (2015), The Go programming language, Addison-Wesley Professional, New York, 400 p.
Pontelli, E., Gupta, G. (2005), "On the duality between or-parallelism and and-parallelism in logic programming", 1st International EURO-PAR Conference on Parallel Processing: EURO-PAR 199, Stockholm, 29–31 aug. 1995. Lecture Notes in Computer Science, vol 966, Springer, Berlin, P. 43-54. DOI: https://doi.org/10.1007/BFb0020454
Komendantskaya, E., Schmidt, M., Heras, J. (2014), "Exploiting Parallelism in Coalgebraic Logic Programming", Electronic Notes in Theoretical Computer Science, Vol. 303, P. 121–148. DOI: https://doi.org/10.1016/j.entcs.2014.02.007
Whitney, J., Gifford, C., Pantoja, M. (2019), "Distributed execution of communicating sequential process-style concurrency: Golang case study", The Journal of Supercomputing, Vol. 75, No 3, P. 1396–1409. DOI: https://doi.org/10.1007/s11227-018-2649-2
##submission.downloads##
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Ця робота ліцензується відповідно до Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Наше видання використовує положення про авторські права Creative Commons для журналів відкритого доступу.
Автори, які публікуються у цьому журналі, погоджуються з наступними умовами:
Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0), котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у цьому журналі.
Автори мають право укладати самостійні додаткові угоди щодо не комерційного та не ексклюзивного розповсюдження роботи у тому вигляді, в якому вона була опублікована цим журналом (наприклад, розміщувати роботу в електронному сховищі установи або публікувати у складі монографії), за умови збереження посилання на першу публікацію роботи у цьому журналі.
Політика журналу дозволяє і заохочує розміщення авторами в мережі Інтернет (наприклад, у сховищах установ або на особистих веб-сайтах) рукопису опублікованої роботи, оскільки це сприяє виникненню продуктивної наукової дискусії та позитивно позначається на оперативності та динаміці цитування опублікованої роботи.