본문 바로가기

멀티 스레딩

동기화(synchronization), 경쟁 조건(race condition), 임계 영역(critical section) 하나의 객체를 두 개의 스레드가 접근할 때 생기는 일 귤박스가 2개 있고, 2개의 스레드에게는 각각 서로 다른 귤 박스를 담당하게 할 것이다. badCounter 객체는 2개의 스레드가 공유한다. 만약, 불량인 상태인 각각의 귤박스에 1개씩 있다고 하자. 그러면 우리가 원하는 state의 값은 2이다. 그러나, 항상 우리가 원하는 값이 높은 확률로 나오지 않는다. 그 이유를 아래에서 살펴보자. 1. LOAD state to R1 : state값을 cpu 레지스터 R1에 로딩. 2. R1 = R1 + 1 : 레지스터 R1에 +1을 한다. 3. STORE R1 to state : 레지스토 R1의 값을 메모리에 반환을 한다. Counter::increament() 메서드의 state++를 어셈블리어로 변환하면.. 더보기
헷갈리는 개념들에 대한 정리(feat 프로세스, 스레드, 멀티태스킹, 멀티스레딩 etc) I/O 작업의 3가지 의미 1. 파일을 읽고 쓰는 것 2. 네트워크의 어딘가와 데이터를 주고 받는 것 3. 입출력 장치(EX.마우스, 키보드)와 데이터를 주고 받는 것 단일 프로세스 시스템(초창기의 OS Architecture) 한 번에 하나의 프로그램만 실행됨. 프로세스들이 순차적으로 실행이 되므로, 하나의 프로세스가 모두 실행이 완료되어야만 그 다음의 프로세스를 실행할 수 가 있다. 단점 : cpu 사용률이 매우 안 좋음. -> 프로세스의 I/O 작업 중 CPU는 유휴 상태에 들어 간다. 이러한 문제를 해결하기 위하여 여러 개의 프로그램을 메모리에 올려 놓고 동시에 실행시키자. 즉, I/O 작업이 발생하면 CPU를 놀게 놔 두는 것이 아니라, 대기 중인 프로세스를 올려 실행을 시킨다. 이것을 멀티 프.. 더보기