{{위키데이터 속성 추적}}
[[파일:An illustration of the dining philosophers problem.png|섬네일|[[식사하는 철학자들 문제]]는 병행성과 공유 자원을 동반하는 고전적인 문제이다.]]

'''병행성'''({{lang|en|concurrency}})은 [[컴퓨터 과학]]에서 여러 계산을 동시에 수행하는 시스템의 특성으로, 잠재적으로는 서로 상호 작용이 가능하다.

== 문제 ==
병행 시스템의 계산이 그들이 실행 중일 때에만 상호 작용이 가능하기 때문에 시스템에서 가능성 있는 실행 경로의 수는 매우 많고 그 결과의 산물은 부정확하다. 공유 자원을 동시에 이용하는 일은 [[교착 상태]], [[기아 상태]]와 같은 문제들로 이어지는 부정확성의 요인이 되기도 한다.<ref name="cleaveland1996">{{저널 인용|last=Cleaveland|first=Rance|author2=Scott Smolka|제목=Strategic Directions in Concurrency Research|journal=ACM Computing Surveys|volume=28|issue=4|date=December 1996|url=http://doi.acm.org/10.1145/242223.242252|pages=607|doi=10.1145/242223.242252}}</ref>

병행 시스템의 설계는 실행, 데이터 교환, 메모리 할당, 실행 스케줄링을 조화롭게 하여 응답 시간을 최소화하고 스루풋을 최대화하는 미더운 기술들을 찾아내는 일을 동반한다.<ref>{{서적 인용 | first1=Colin | last1=Campbell | first2=Ralph | last2=Johnson | first3=Ade | last3=Miller | first4=Stephen | last4=Toub | 제목=Parallel Programming with Microsoft .NET | url=http://msdn.microsoft.com/en-us/library/ff963542.aspx | date=August 2010 | publisher=Microsoft Press | isbn=978-0-7356-5159-3 | 확인날짜=2015-11-24 | 보존url=https://web.archive.org/web/20160212160837/https://msdn.microsoft.com/en-us/library/ff963542.aspx | 보존날짜=2016-02-12 | url-status=dead }}</ref>

== 이론 ==
=== 병렬 ===
병행 시스템을 모델링하고 이해하는 형태들이 많이 개발되었으며 다음을 포함한다:<ref>{{서적 인용|last=Filman|first=Robert|author2=Daniel Friedman|제목=Coordinated Computing -  Tools and Techniques for Distributed Software|year=1984|publisher=McGraw-Hill|isbn=0-07-022439-0|url=http://ic.arc.nasa.gov/people/filman/text/dpl/dpl.html|확인날짜=2007년 4월 22일|보존url=https://web.archive.org/web/20070516135233/http://ic.arc.nasa.gov/people/filman/text/dpl/dpl.html|보존날짜=2007년 5월 16일|url-status=dead}}</ref>
* [[병렬 임의 접근 기기]](PRAM)<ref>{{서적 인용 | first=Jörg | last=Keller |author2=Christoph Keßler |author3=Jesper Träff   | 제목=Practical PRAM Programming | publisher=John Wiley and Sons | year=2001}}</ref>
* [[액터 모델]]
* BSP(Bulk synchronous parallel) 모델과 같은 계산 브리지 모델
* [[페트리 네트]]
* [[프로세스 계산]]
** [[커뮤니케이팅 시퀜셜 프로세스|CSP]] 모델
* [[튜플 공간]] (예: [[린다]])
* [[SCOOP]]
* Reo Coordination Language

== 같이 보기 ==
* [[병행 컴퓨팅]]

== 참고 문헌 ==
* {{서적 인용
| last = Lynch
| first = Nancy A.
| 제목 = Distributed Algorithms
| publisher = Morgan Kauffman
| year = 1996
| isbn = 1-55860-348-4
}}
* {{서적 인용
| last1 = Tanenbaum
| first1 = Andrew S.
| last2 = Van Steen
| first2 = Maarten
| 제목 = Distributed Systems: Principles and Paradigms
| publisher = Prentice Hall
| year = 2002
| isbn = 0-13-088893-1
}}
* {{서적 인용
| last = Kurki-Suonio
| first = Reino
| 제목 = A Practical Theory of Reactive Systems
| publisher = Springer
| year = 2005
| isbn = 3-540-23342-3
}}
* {{서적 인용
| last = Garg
| first = Vijay K.
| 제목 =  Elements of Distributed Computing
| publisher = Wiley-IEEE Press
| year = 2002
| isbn = 0-471-03600-5
}}
* {{서적 인용
| last = Magee
| first = Jeff
|author2=Kramer, Jeff
 | 제목 =  Concurrency: State Models and Java Programming
| publisher = Wiley
| year = 2006
| isbn = 0-470-09355-2
}}

== 각주 ==
<references />

== 외부 링크 ==
* {{언어링크|en}} [https://web.archive.org/web/20060128114620/http://vl.fmnet.info/concurrent/ Concurrent Systems] at [http://vlib.org/ The WWW Virtual Library]
* {{언어링크|en}} [http://shairosenfeld.com/concurrency.html Concurrency patterns presentation] {{웨이백|url=http://shairosenfeld.com/concurrency.html |date=20140714202338 }} given at [http://scaleconf.org scaleconf]

[[분류:병행성| ]]
[[분류:에츠허르 데이크스트라]]