Відмінності між версіями «Рівночасні обчислення»

нема опису редагування
м (додала пропущений пробіл)
Мітка: редагування коду 2017
{{парадигми програмування}}
 
'''Рівночасні<ref>Англійсько-українсько-англійський словник наукової мови (Фізика та споріднені науки) у двох частинах</ref> обчислення''', '''Конкурентні обчислення''' ({{lang-en|Concurrent computing}}) &nbsp;— це форма [[обчислення|обчислень]], в якій кілька обчислень відбуваються в часових відрізках, що перетинаються, а не є послідовними (так, що кожне обчислення мусить закінчитись перед тим, як почнеться інше).
<!-- This is a property of a system—this may be an individual [[computer program|program]], a [[computer]], or a [[computer network|network]]—and there is a separate execution point or "«thread of control"» for each computation ("«process"»). A ''concurrent system'' is one where a computation can advance without waiting for all other computations to complete.<ref>''Operating System Concepts'' 9th edition, Abraham Silberschatz. "«Chapter 4: Threads"»</ref>
 
As a [[programming paradigm]], concurrent computing is a form of [[modular programming]], namely [[decomposition (computer science)|factoring]] an overall computation into subcomputations that may be executed concurrently. Pioneers in the field of concurrent computing include [[Edsger Dijkstra]], [[Per Brinch Hansen]], and [[C.A.R. Hoare]]. -->
{{See also|Паралельні обчислення}}
 
Поняття рівночасних обчислень часто плутають з подібним, але дещо відмінним поняттям [[Паралельні обчислення|паралельних обчислень]]<ref name=waza>[[Роб Пайк|Pike, Rob]] (2012-01-11). "«Concurrency is not Parallelism"». ''Waza conference'', 11 January 2012. Retrieved from http://talks.golang.org/2012/waza.slide (slides) and http://vimeo.com/49718712 (video).</ref><ref>{{cite web
|url=https://wiki.haskell.org/Parallelism_vs._Concurrency
|title=Parallelism vs. Concurrency
}}</ref>, хоча обидва описуються як «паралельні процеси що виконуються ''протягом спільних часових відрізків''». В паралельних обчисленнях декілька обчислень існують і відбуваються одночасно в кожну мить фізичного часу ([[такт процесора]]), наприклад на різних [[CPU|процесорах]] багатопроцесорної машини, їх метою є зменшення часу виконання обчислень.
 
В рівночасних обчисленнях декілька обчислень існують одночасно (як процеси або потоки виконання), але в кожну мить фізичного часу відбувається лише одне обчислення{{efn|Це не враховує паралелізм що може реалізовуватись ядром процесора, такий як [[конвеєр команд]] чи [[Векторний процесор|векторні інструкції]]. Одноядерний, однопроцесорний ''комп'ютер'' може мати здатність до деякого паралелізму, наприклад при використанні [[Співпроцесор|співпроцесора]] але сам процесор такої здатності не має.}}. Паралельні обчислення неможливі на одному одноядерному процесорі, оскільки в таких системах в кожен момент часу може відбуватись лише одне обчислення. Як наслідок, аспекти синхронізації паралельних обчислень визначаються особливостями апаратної платформи, а конкурентних &nbsp;— програмної.
 
<!--{{efn|This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor ''machine'' may be capable of some parallelism, such as with a [[coprocessor]], but the processor alone is not.}} By contrast, concurrent computing consists of process ''lifetimes'' overlapping, but execution need not happen at the same instant. The goal here is to model processes in the outside world that happen concurrently, such as multiple clients accessing a server at the same time. Structuring software systems as composed of multiple concurrent, communicating parts can be useful for tackling complexity, regardless of whether the parts can be executed in parallel.<ref>{{cite book |first=Fred B. |last=Schneider |title=On Concurrent Programming |publisher=Springer |isbn=9780387949420}}</ref>{{rp|1}}
* T1 and T2 may be executed simultaneously at the same instant of time (parallel ''and'' concurrent)
 
The word "«sequential"» is used as an antonym for both "«concurrent"» and "«parallel"»; when these are explicitly distinguished, ''concurrent/sequential'' and ''parallel/serial'' are used as opposing pairs.{{sfn|Patterson|Hennessy|2013|p=503}} A schedule in which tasks execute one at a time (serially, no parallelism), without interleaving (sequentially, no concurrency: no task begins until the prior task ends) is called a ''serial schedule''. A set of tasks that can be scheduled serially is ''[[Serializability|serializable]]'', which simplifies [[concurrency control]].{{citation needed|date=December 2016}}
 
-->
 
== Механізми синхронізації ==
Поширеними, але не єдиними механізмами синхронізації конкурентних обчислень є [[Сигнал (операційні системи)|сигнали]], [[Семафор (програмування)|семафори]] та [[Черга повідомлень|черги повідомлень]].
 
== Типові задачі ==
== Примітки ==
{{reflist}}
 
{{Інформатика}}
 
[[Категорія:Конкурентні обчислення| ]]
44 162

редагування