분류 전체보기 88

[OS]동기화

용어정리 상호배제: 동시에 접근 하지 않는것 임계영역: 두 개 이상의 스레드에 의해서 공유되는 메모리 공간에 접근하는 코드영역 스레드 동기화 기법 뮤텍스: lock을 가지고 있을 경우에만 공유 데이터에 접근 가능하게 하는 락킹 매커니즘 (갯수가 1인 세마포어) 세마포어: 세마포어는 동시에 리소스에 접근할 수 있는 '허용 가능한 Counter의 갯수'를 가지고 있는 매커니즘 모니터: Mutex(Lock)와 Condition Variables(Queue라고도 함)을 가지고 있는 동기화 매커니즘 wait, notify 등은 컨디션 베리어블 역할 자바에서 상호배제를 해결하기 위한 구현체로 싱크로나이즈드 키워드 http://www.jpstory.net/2015/03/mutex-semaphore-monitor/

[OS]Busy-Waiting

B스레드의 작업을 마칠 때 까지 기다려야 하는 A스레드가 있다. A는 B가 끝 날 때까지 아무 일도 하지 않고 기다리는데 (실제로는 아무일도 하지 않기보단 접근이 가능한지 무한 체크한다.) 이를 바쁜 대기라 한다. 뮤텍스나 세마포어 등을 이용하기엔 오버헤드가 큰 상황에서 간단히 사용할 수 있다. 스핀락은 임계구역에 진입이 불가능할 때 진입이 가능할 때 까지 루프를 돌면서 재시도 하는 방식으로 구현된 락으로 바쁜 대기의 한 종류 바쁜대기를 하지 않고 스레드를 멈춘다음 접근이 가능할 때 깨우는 Signal 방식이있다.

[OS]프로세스와 스레드

프로세스란? 실행중인 프로그램에 대한 인스턴스 리소스와 스레드로 구성 하나 이상의 스레드를 포함 하나의 CPU에서 동시에 여러 프로세스가 처리되는것 처럼 보이는 것을 멀티태스킹 스레드란? 어플리케이션의 실행에 있어서 가장 기본적인 단위 애플리케이션은 최소 하나의 스레드로 구성 각 스레드마다 별도의 스택 존재 다른 스레드와 독립적으로 돌아감 자원을 공유한다! 차이 프로세스는 독립된 메모리 공간을 갖는다. 다른 프로세스의 메모리에 접근하려면 IPC를 통해 프로세스간 통신을 해야한다. 스레드는 메모리를 공유한다. 이 때문에 동기화, 데드락 등의 문제가 발생 할 수 있다.