Blocking and Non-Blocking Process Synchronization: Analysis of Implementation

V. Nazaruk, P. Rusakov
{"title":"Blocking and Non-Blocking Process Synchronization: Analysis of Implementation","authors":"V. Nazaruk, P. Rusakov","doi":"10.2478/v10143-011-0033-2","DOIUrl":null,"url":null,"abstract":"Blocking and Non-Blocking Process Synchronization: Analysis of Implementation —In computer programs with multiple processes, inter-process communication is of high importance. One of its main aspects is process synchronization, which can be divided into two classes: blocking and non-blocking. Blocking synchronization is simpler and mostly used; however, non-blocking synchronization allows avoiding some negative effects. In this paper, there is discussed the logic of widespread process synchronization mechanisms and is analyzed the support of these mechanisms in different platforms. Bloķējošā un nebloķējošā procesu sinhronizācija: implementēšanas analīze Mūsdienās laiksakritīgās skaitļošanas izmantošana strauji palielinās. Šāda skaitļošana paredz skaitļošanas uzdevumu sadalīšanu vairākos procesos (vai pavedienos). Datorprogrammās ar vairākiem procesiem starpprocesu komunikācijai ir liela nozīme. Viena no būtiskiem starpprocesu komunikācijas mehānismu klasēm ir procesu sinhronizācijas algoritmi. Piemēram, var runāt par semaforiem, nosacījuma mainīgajiem, satikšanām. Procesu sinhronizācijas algoritmi var tikt iedalīti divās klasēs: bloķējošie un nebloķējošie algoritmi; turklāt, katrai no šīm klasēm ir savas priekšrocības un savi trūkumi. Tā, atšķirībā no bloķējošās sinhronizācijas, nebloķējošās sinhronizācijas algoritmu lietošana garantē to, ka sistēmā nekad neparādīsies strupsaķere — sistēmas progress tiek garantēts katra laika momentā. Daudzās modernajās programmēšanas valodās un programmatūras platformās eksistē daži iebūvēti procesu sinhronizācijas mehānismi. Tādējādi, izvēlētā programmēšanas valoda vai platforma noteiktā mērā ietekmē sinhronizācijas mehānismu (kā arī citu starpprocesu komunikācijas mehānismu) izmantošanu. Viens no šī raksta uzdevumiem ir procesu sinhronizācijas mehānismu klašu analīze un salīdzināšana. Otrs uzdevums ir analizēt procesu sinhronizācijas algoritmu atbalstu dažādās modernajās objektorientētajās programmēšanas valodās (C#, Java, C++u. c.) un aparatūras platformās. Pēdējais attiecas uz nebloķējošās sinhronizācijas algoritmiem. Rakstā arī tiek noraksturotas grafisko procesoru, kas atbalsta universālskaitļošanas tehnologiju GPGPU, iespējas procesu sinhronizācijas kontekstā. Блокирующая и неблокирующая синхронизация процессов: анализ реализации В наши дни стремительно возрастает использование параллельных вычислений.Это подразумевает разделение вычислительного задания на несколько процессов (или потоков). Важную роль в компьютерных программах с несколькими процессами играет коммуникация между соответствующими структурными единицами. Один из основных классов механизмов межпроцессного взаимодействия - алгоритмы синхронизации процессов. Напри-мер, можно говорить о семафорах, условных переменных, рандеву. Алгоритмы синхронизации процессов могут подразделяться на два класса: блоки-рующие и неблокирующие алгоритмы;при этом каждый из этих классов имеет свои преимущества и недостатки. Так, в противоположность блокиру-ющей синхронизации, использование алгоритмов неблокирующей синхронизации обеспечивает отсутствие тупиковых ситуаций - т. е., в любое вре- мя гарантирован прогресс на уровне системы. Во многих современных языках программирования и программных платформах существуют некоторые встроенные механизмы синхронизации процессов.Следовательно, выбранный язык программирования или платформа в некоторой степени влияет на использование механизмов синхронизации (также как и других механизмов межпроцессной коммуникации). Одной из задач данной статьи является анализ и сравнение классов механизмов синхронизации процессов. Другая задача заключается в анализе поддержки алгоритмов синхронизации про-цессов в различных современных объектно-ориентированных языках программирования (С#, Java, C++ и др.) и аппаратных платформах. Последнее относится к неблокирующим алгоритмам синхронизации. В статье также приводится характеристика возможностей графических процессоров, под-держивающих технологию произвольных вычислений GPGPU, в контексте синхронизации процессов.","PeriodicalId":211660,"journal":{"name":"Sci. J. Riga Tech. Univ. Ser. Comput. Sci.","volume":"102 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Sci. J. Riga Tech. Univ. Ser. Comput. Sci.","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.2478/v10143-011-0033-2","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 3

Abstract

Blocking and Non-Blocking Process Synchronization: Analysis of Implementation —In computer programs with multiple processes, inter-process communication is of high importance. One of its main aspects is process synchronization, which can be divided into two classes: blocking and non-blocking. Blocking synchronization is simpler and mostly used; however, non-blocking synchronization allows avoiding some negative effects. In this paper, there is discussed the logic of widespread process synchronization mechanisms and is analyzed the support of these mechanisms in different platforms. Bloķējošā un nebloķējošā procesu sinhronizācija: implementēšanas analīze Mūsdienās laiksakritīgās skaitļošanas izmantošana strauji palielinās. Šāda skaitļošana paredz skaitļošanas uzdevumu sadalīšanu vairākos procesos (vai pavedienos). Datorprogrammās ar vairākiem procesiem starpprocesu komunikācijai ir liela nozīme. Viena no būtiskiem starpprocesu komunikācijas mehānismu klasēm ir procesu sinhronizācijas algoritmi. Piemēram, var runāt par semaforiem, nosacījuma mainīgajiem, satikšanām. Procesu sinhronizācijas algoritmi var tikt iedalīti divās klasēs: bloķējošie un nebloķējošie algoritmi; turklāt, katrai no šīm klasēm ir savas priekšrocības un savi trūkumi. Tā, atšķirībā no bloķējošās sinhronizācijas, nebloķējošās sinhronizācijas algoritmu lietošana garantē to, ka sistēmā nekad neparādīsies strupsaķere — sistēmas progress tiek garantēts katra laika momentā. Daudzās modernajās programmēšanas valodās un programmatūras platformās eksistē daži iebūvēti procesu sinhronizācijas mehānismi. Tādējādi, izvēlētā programmēšanas valoda vai platforma noteiktā mērā ietekmē sinhronizācijas mehānismu (kā arī citu starpprocesu komunikācijas mehānismu) izmantošanu. Viens no šī raksta uzdevumiem ir procesu sinhronizācijas mehānismu klašu analīze un salīdzināšana. Otrs uzdevums ir analizēt procesu sinhronizācijas algoritmu atbalstu dažādās modernajās objektorientētajās programmēšanas valodās (C#, Java, C++u. c.) un aparatūras platformās. Pēdējais attiecas uz nebloķējošās sinhronizācijas algoritmiem. Rakstā arī tiek noraksturotas grafisko procesoru, kas atbalsta universālskaitļošanas tehnologiju GPGPU, iespējas procesu sinhronizācijas kontekstā. Блокирующая и неблокирующая синхронизация процессов: анализ реализации В наши дни стремительно возрастает использование параллельных вычислений.Это подразумевает разделение вычислительного задания на несколько процессов (или потоков). Важную роль в компьютерных программах с несколькими процессами играет коммуникация между соответствующими структурными единицами. Один из основных классов механизмов межпроцессного взаимодействия - алгоритмы синхронизации процессов. Напри-мер, можно говорить о семафорах, условных переменных, рандеву. Алгоритмы синхронизации процессов могут подразделяться на два класса: блоки-рующие и неблокирующие алгоритмы;при этом каждый из этих классов имеет свои преимущества и недостатки. Так, в противоположность блокиру-ющей синхронизации, использование алгоритмов неблокирующей синхронизации обеспечивает отсутствие тупиковых ситуаций - т. е., в любое вре- мя гарантирован прогресс на уровне системы. Во многих современных языках программирования и программных платформах существуют некоторые встроенные механизмы синхронизации процессов.Следовательно, выбранный язык программирования или платформа в некоторой степени влияет на использование механизмов синхронизации (также как и других механизмов межпроцессной коммуникации). Одной из задач данной статьи является анализ и сравнение классов механизмов синхронизации процессов. Другая задача заключается в анализе поддержки алгоритмов синхронизации про-цессов в различных современных объектно-ориентированных языках программирования (С#, Java, C++ и др.) и аппаратных платформах. Последнее относится к неблокирующим алгоритмам синхронизации. В статье также приводится характеристика возможностей графических процессоров, под-держивающих технологию произвольных вычислений GPGPU, в контексте синхронизации процессов.
阻塞与非阻塞进程同步:实现分析
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信