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

식사하는 철학자들 문제는 병행성과 공유 자원을 동반하는 고전적인 문제이다.

문제 편집

병행 시스템의 계산이 그들이 실행 중일 때에만 상호 작용이 가능하기 때문에 시스템에서 가능성 있는 실행 경로의 수는 매우 많고 그 결과의 산물은 부정확하다. 공유 자원을 동시에 이용하는 일은 교착 상태, 기아 상태와 같은 문제들로 이어지는 부정확성의 요인이 되기도 한다.[1]

병행 시스템의 설계는 실행, 데이터 교환, 메모리 할당, 실행 스케줄링을 조화롭게 하여 응답 시간을 최소화하고 스루풋을 최대화하는 미더운 기술들을 찾아내는 일을 동반한다.[2]

이론 편집

병렬 편집

병행 시스템을 모델링하고 이해하는 형태들이 많이 개발되었으며 다음을 포함한다:[3]

같이 보기 편집

참고 문헌 편집

  • Lynch, Nancy A. (1996). 《Distributed Algorithms》. Morgan Kauffman. ISBN 1-55860-348-4. 
  • Tanenbaum, Andrew S.; Van Steen, Maarten (2002). 《Distributed Systems: Principles and Paradigms》. Prentice Hall. ISBN 0-13-088893-1. 
  • Kurki-Suonio, Reino (2005). 《A Practical Theory of Reactive Systems》. Springer. ISBN 3-540-23342-3. 
  • Garg, Vijay K. (2002). 《Elements of Distributed Computing》. Wiley-IEEE Press. ISBN 0-471-03600-5. 
  • Magee, Jeff; Kramer, Jeff (2006). 《Concurrency: State Models and Java Programming》. Wiley. ISBN 0-470-09355-2. 

각주 편집

  1. Cleaveland, Rance; Scott Smolka (December 1996). “Strategic Directions in Concurrency Research”. 《ACM Computing Surveys》 28 (4): 607. doi:10.1145/242223.242252. 
  2. Campbell, Colin; Johnson, Ralph; Miller, Ade; Toub, Stephen (August 2010). 《Parallel Programming with Microsoft .NET》. Microsoft Press. ISBN 978-0-7356-5159-3. 2016년 2월 12일에 원본 문서에서 보존된 문서. 2015년 11월 24일에 확인함. 
  3. Filman, Robert; Daniel Friedman (1984). 《Coordinated Computing - Tools and Techniques for Distributed Software》. McGraw-Hill. ISBN 0-07-022439-0. 2007년 5월 16일에 원본 문서에서 보존된 문서. 2007년 4월 22일에 확인함. 
  4. Keller, Jörg; Christoph Keßler; Jesper Träff (2001). 《Practical PRAM Programming》. John Wiley and Sons. 

외부 링크 편집