동시성, 병렬성, 원자성, 의존성
프로그램의 실행 단위. 아래 그림을 보자. 코드 영역에는 컴파일 된 실행 가능한 명령어들이 올라와 있다. 그리고 각 스레드들은 각각의 program counter를 가지게 된다. pc는 현재 실행중인 명령어의 위치를 뜻하므로, 말 그대로 실행 흐름이 어디에 위치해 있는
ipc shared memory
ipc pipes
shared memory와 파이프는 하나의 컴퓨터 내부적으로 프로세스들 끼리 통신하기 위해 쓰이는 일종의 공유 메모리 영역 오브젝트다. 그렇다면 단 하나의 컴퓨터가 아닌, 다른 외부 컴퓨터의 프로세스와 통신 하기 위해서는 어떻게 해야할까? 두 가지 전략이 있다. 하나는 소켓 통신, 다른 하나는 RPC. 소켓 소켓은 end points for commu...
POSIX threads (pthreads) library는 unix-like 운영체제에서 제공하는 스레드 프로그래밍 인터페이스이다.
implicit threading
vmstat 1 3 3초 동안 컨텍스트 스위치가 얼마나 일어났는지 알 수 있다. 프로세스:r: CPU 시간을 기다리거나 실행 중인 프로세스의 수.b: 비인터럽트 가능한 슬립에 있는 프로세스의 수.메모리:swpd: 사용 중인 가상 메모리 양.free: 여유 메모리 양.b
아래의 동시성 문제 예제 코드를 보자. 위의 예제 코드를 해석보자. data 메모리 영역의 공유 자원 sum 변수에 tid1, tid2 스레드가 각각 접근\++, --연산을 시행 각자 10000번 더하고 10000번 빼니까 독립적으로 시행된다고 가정해보면 0이 나와
이번에는 n개의 프로세스와 s개의 자원에 대해 CSP를 해결할 수 있는 고전적인 해법, 세마포어에 대하여 알아보도록 하자. 세마포어는 다익스트라가 고안한 교착상태에 대한 해법(알고리즘)이다. 동작 메커니즘은 아래와 같다. 두 개의 atomic한 함수가 존재해서정수 변수
자, 우리가 어떤 소스 파일을 컴파일 해서 바이너리 exe 파일을 얻었다고 하자. 그렇다면 이 exe 파일에 명시 되어 있는 주소 정보는 물리적인 RAM의 주소 정보일까? 아니면 virtual memory의 주소일까? 물리적인 RAM의 주소 정보는 운영체제가 관리하고
주로 멀티 스레드를 배울 때 자주 나오는 용어. 하지만 멀티 스레드는 프로그램의 동시성을 구현하는 하나의 방법일 뿐이다. 동시성이란 두 개 이상의 단위 작업을 동시에 처리하는 것을 의미한다. 그런데 이 동시에 처리한다는 말이 좀 애매모호해서 오해가 발생한다. 두 작업이