Застосування мови програмування 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##

Опубліковано

2024-06-30

Як цитувати

Гольдінер, Д. (2024). Застосування мови програмування GO для моделювання процесів масового обслуговування. СУЧАСНИЙ СТАН НАУКОВИХ ДОСЛІДЖЕНЬ ТА ТЕХНОЛОГІЙ В ПРОМИСЛОВОСТІ, (2(28), 65–75. https://doi.org/10.30837/2522-9818.2024.2.065