동시성

Computer Sci.

[동시성 프로그래밍] Ch3. 동기 처리 1 (하)

3.5 조건 변수 어떤 조건을 만족하지 않는 동안에는 프로세스를 대기 상태로 두고 조건이 만족되면 대기 중인 프로세스를 실행하고 싶을 때가 있다. 예를 들면 교차로의 신호등을 떠올릴 수 있는데, 이와 같은 신호등을 동시성 프로그래밍 세계에서는 조건 변수라고 부르며, 조건 변수를 기반으로 프로세스의 대기를 수행한다. 다음 코드는 Pthreads를 이용한 조건 변수의 예다. Pthreads에서는 pthread_cond 계열 타입과 함수를 이용해 조건 변수를 구현한다. 이 코드에는 어떤 데이터를 생성하는 프로세스와 생성된 데이터를 소비하는 프로세스가 있으며, 데이터를 소비하는 프로세스는 데이터가 생성될 때까지 대기한다. #include #include #include #include pthread_mutex ..

Computer Sci.

[동시성 프로그래밍] Ch3. 동기 처리 1 (상)

동시성 프로그래밍에서 여러 프로세스 사이의 협조가 필요한데, 프로세스 사이에 타이밍 동기화, 데이터 업데이트 등을 협조적으로 수행하는 처리를 동기 처리(synchronous processing)라 부른다. 3.1 레이스 컨디션 레이스 컨디션(race condition)은 경합 상태라고 불리며, 여러 프로세스가 동시에 공유하는 자원에 접근함에 따라 일어나는 예상치 않은 이상이나 상태를 의미한다. 동시성 프로그래밍에서는 이 레이스 컨디션을 일으키지 않고 올바르게 프로그래밍을 하는 것이 중요한 문제이다. 예를 들어 공유 메모리 상에 있는 변수를 여러 프로세스가 증가시킨다고 가정하자. 이 때 메모리에 읽기와 쓰기를 동시에 수행할 수는 없고, 각각 다른 타이밍에 수행한다고 가정한다. 아래 그림은 프로세스 A, B..

Computer Sci.

[동시성 프로그래밍] Ch1. 동시성과 병렬성

1.1 프로세스 존재론적으로 설명하는 물질에는 사물과 프로세스가 있다. 사물은 공간상에서 넓이를 갖지만 시간적인 넓이는 갖지 않는 것이며, 프로세스는 공간과 시간의 넓이를 모두 갖는 것이다. 즉, 사물은 특정한 시점에 전체가 존재하지만 프로세스는 특정한 시점에 일부만 존재한다. 다만, 이 책에서는 어떤 계산을 수행하는 추상적인 계산 실행 주체라는 계산과 관련된 프로세스만 가리킨다. 이 책에서는 프로세스를 다음과 같이 정의한다. 프로세스란 계산을 실행하는 주체를 가리키며 크게 다음 네 가지 상태를 변경하면서 계산을 진행한다. 실행 전 상태 : 계산을 실행하기 전의 상태. 실행 상태로 전이할 수 있다. 실행 상태 : 계산을 실행하고 있는 상태. 대기 상태 또는 계산 종료 상태로 전이할 수 있다. 대기 상태 ..

Prog. Langs & Tools/JavaScript

JS #7. 비동기성(Asynchrony): 지금과 나중(now and later)

자바스크립트에서 일정 시간 동안 발생하는 프로그램의 움직임을 어떻게 표현하고 나타낼 것인지에 대해 그동안 많은 연구가 있었다. 오늘은 그러한 연구의 결과 중 하나인 비동기성(Asynchrony)에 대해서 알아보고자 한다. 프로그램에서 '지금'에 해당하는 부분 그리고 '나중'에 해당하는 부분 사이의 관계가 바로 비동기 프로그래밍의 핵심이다. 자바스크립트 프로그램은 .js 파일 하나로도 작성될 수 있지만 보통은 여러 개의 덩이(chunk), 곧 '지금' 실행 중인 프로그램 덩이 하나 + '나중'에 실행할 프로그램 덩이들로 구성된다. 가장 일반적인 프로그램 덩이 단위는 함수이다. 여기서 명심해야 할 부분은 프로그램은 '지금'과 '나중' 사이에 중단되지 않으며 이 때 작업이 비동기적으로 처리되어 단지 '지금' ..

DevOwen
'동시성' 태그의 글 목록