Remove ads
From Wikipedia, the free encyclopedia
Паралелно израчунавање је облик рачунарства у коме се неколико прорачуна извршава током преклапања временског периодима-истовремено-уместо редом (један се заврши пре него што почне наредни). Ово је својство система, ово може бити индивидуални програм, рачунар или мрежа- постоји и посебна тачка извршење или "нит контроле" за свако израчунавање ("процеса"). Истовремено систем је онај где израчунавање може да напредује без чекања за све остале прорачуне да заврши-где више од једног прорачун може да напредује "у исто време".[1]
Као парадигма програмирања, истовремено рачунарство је облик модуларног програмирања, односно факторинг укупног рачунања у субцомпутатионс који се могу истовремено извршавати. Пионири у области рачунарства су Едсгер Дајкстра, Пер Бринцх Хансен, и C. А. Р Хоаре.
Упоредно рачунарство је повезано, али се разликују од паралелног рачунарства, иако su ови концепти често збуњујући,[2][3] и могу се описати као "више процеса извршавања у истом временском периоду". У паралелном рачунарству, извршење се буквално јавља у истом тренутку, на пример на одвојеним прерађивачима мулти-процесора машина, са циљем убрзавања израчунавања паралелног рачунарства јер је немогуће на једнојезграрном процесору, само као један рачун се може јавити у било ком тренутку (током било којег појединачног циклусу).[а]. Насупрот томе, истовремено рачунарство састоји се од процеса живота који се преклапају, али извршење се не мора десити у истом тренутку. Циљ је да се модел процеса у спољашњем свету које се дешава истовремено, као што више клијената приступа серверу у исто време. Структурирање софтверских система састоји се од више конкурентских, комуникациони делови могу бити корисни за борбу против комплексности, без обзира на то да ли ће се делови извршити паралелно.[4]
На пример, истовремени процеси могу бити погубљени на једном језгру интерлеавинг приликом извршавања корака сваког процеса преко временских кругова:, само један процес ради на време, а ако се то не заврши током времена круга, застао је, други процес почиње или се наставља, а касније оригинални процес се наставља. На тај начин више процеса се извршава у једном тренутку, али само један процес се извршава у том тренутку.
Паралелно израчунавање може се извршити паралелно,[2][5] Ben-Ari, Mordechai (2006). на пример додељивање сваког процеса на посебан процесор или процесор језгра, или дистрибуира рачунање преко мреже, али генерално, језик, алати и технике за паралелно програмирање не може бити погодно за истовремено програмирање, и обрнуто.
Тачан тајминг када се извршавају задаци на систему истовремено зависи и од распореда и задаци не морају увек да буду истовремено извршени. На пример, с обзиром на два задатка, Т1 и Т2:
Реч "секвенцијално" се користи као супротна и за "истовремено" и "паралелно"; када се изричито разликује, истовремено / секвенцијално и паралелно / серијски се користе као супротни парови.[6] Распоред у којем се задаци извршавају један по један (серијски, не паралелизма), без преплитања (секуентуалли, нема конкуренцију: задатак не почиње док се претходни задатак не заврши) назива се серијски распоред. Скуп задатака који могу да се серијски закажу cу сериализабле, што поједностављује контролу конкуренције.
Главни изазов у дизајнирању истовремених програма је контрола конкуренција: обезбеђује исправан редослед интеракција или комуникација између различитих рачунарских погубљења, и координира приступ ресурсима који се деле између погубљења.[5] Потенцијални проблеми су услови раса, застоја и ресурса глади. На пример, размотримо следеће алгоритме за прављење повлачења из текућег рачуна коју представљају заједнички биланс
ресурса:
bool withdraw(int withdrawal)
{
if(balance >= withdrawal)
{
balance -= withdrawal;
return true;
}
return false;
}
Претпоставимо да стање = 500
, и два истовремена темена чине позивну поруку (300)
и повлачење (350)
. Ако се линија 3 у обе операције извршава пре линије 5 обе операције ће да пронађу равнотежу >= повлачење
вредност је тачна, а извршење ће наставити са одузимањем износа исплате. Међутим, пошто оба процеса извршавају своје повлачење, укупан износ повлачења ће завршити што је даље од првобитног биланса. Ове врсте проблема са дељеним ресурсима захтевају коришћење контроле конкуренција, или неблокирајући алгоритми.
Због истовремених система се ослањају на коришћење заједничких ресурса (укључујући комуникационе медије), истовремено рачунарство уопштено захтева употребу неког облика арбитра који негде у имплементацији посредује приступ тим ресурсима.
Нажалост, док многа решења постоје за проблем сукоба око једног ресурса, многе од тих "решења" имају своје конкурентне проблеме као код застоја када је укључено више од једног ресурса.
Постоји неколико модела истовременог рачунарства, који се могу користити да схвате и анализирају истовремене системе. Ови модели обухватају:
Велики број различитих метода може да се користи за имплементацију истовремених програма, као што је спровођење сваког рачунарског извршења као процес оперативног система, или имплементације рачунарских процеса као скуп нити у једном процесу оперативног система.
У неким истовременим рачунарским системима, комуникација између истовремених компоненти је сакривена од програмера (на пример, помоћу будућности), док се у другима то мора експлицитно руковати. Експлицитне комуникација се могу поделити у две класе:
Заједничка меморија и порука пролазности конкуренције имају различите карактеристике перформанси. Типично (мада не увек), пер-процесу меморија изнад и задатак пребацивања преоптерећења је нижа у поруци пролазности система, али изнад за поруке пролазности сама је већа него за процедуре позива. Ове разлике су често преплављене од других фактора учинка.
Упоредно рачунарство се развило из ранијег рада пруга и телеграфа, из 19. и почетком 20. века, а неки термини потичу из овог периода, као што је семафор. Настојао је да се позабави питањем како да рукује са више возова на истом железничком систему (избегавање судара и максималне ефикасности) и како да рукује на више преноса преко одређеног скупа жица (побољшање ефикасности), као што је време-Дивисион Мултиплекинг (1870с ).
Академске студије истовремених алгоритама су почеле 1960, Дијкстра (1965) је заслужан за први рад у овој области, идентификовање и решавање међусобног искључивања.[7]
Паралелност је свеприсутна у рачунарству, јавља се из ниског нивоа хардвера на једном чипу на светским мрежама. Примери.
На нивоу програмског језика:
На нивоу оперативног система:
На нивоу мреже, умрежени системи су генерално истовремени по својој природи, јер се састоје од посебних уређаја.
Паралелни програмски језици су програмски језици који користе језичке конструкције за конкуренцију. Ови конструкти могу да укључе мулти-тхреадинг, подршку са дистрибуираног рачунарства, порука пролази, заједничке ресурсе (укључујући дељене меморије) или будућности и обећања. Такви језици се понекад описују као паралелно оријентисани језици или паралелно оријентисано програмирање језика (ЦОПЛ).[8]
Данас, најчешће коришћени програмски језици који имају специфичне конструкције за конкуренцију су Јава и С #. Оба ова језика у основи користе дељене меморије конкуренцијских модела, са закључавањем и обезбеђивањем од монитора (мада модели Мессаге-пролазу могу и спроведени на врху основи дељене меморије модела). Од језика који користе поруку проласка конкуренцију модела, Ерлангова се вероватно највише користи у индустрији у овом тренутку. (Уреди)
Многи истовремени програмски језици су развијени више као истраживачки језици (нпр Пицт) него као језици за производне сврхе. Међутим, језици, као што су Ерланг, Лимбо, и Оккам воде у индустријској употреби у различитим временским периодима у последњих 20 година. Језици на којима конкуренција има важну улогу укључује:
Многи други језици пружају подршку за конкуренцију у облику библиотека, на нивоу отприлике упоредиве са горње листе.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.