阻塞与非阻塞进程同步:实现分析

V. Nazaruk, P. Rusakov
{"title":"阻塞与非阻塞进程同步:实现分析","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":"{\"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}","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
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Blocking and Non-Blocking Process Synchronization: Analysis of Implementation
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, в контексте синхронизации процессов.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Inventory Management in Multi Echelon Supply Chain using Sample Average Approximation Hybridisation of Evolutionary Algorithms for Solving Multi-Objective Simulation Optimisation Problems Simulation-Based Analysis of Fitness Landscape in Optimisation Multi-Agent Geosimulation of Urban Dynamics within the V-Devs Framework The Baseline Configuration of Project Management Information System
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1