상호배제(Mutual Exclusion)란, 특정 프로세스가 공유 자원을 사용 중일 때 다른 프로세스가 이 자원에 접근하지 못하도록 막는 것을 의미한다. 그러니까, 공유를 하면 안되는 자원(Resource)의 동시 사용을 피하는 방법 중 하나이다. 스레드의 경우, 프로세스와 달리 메모리의 Stack 영역을 제외한 부분을 다른 스레드와 공유하는데, 이 부분에서 스레드간 동시 사용을 피하고 싶을 때 주로 사용한다. (※참고: [IT 기술면접 준비자료] 교착상태와 식사하는 철학자들) 동시 접근을 막기 위해 프로그래머에 의해 구현된 코드 영역을 임계 구역(Critical Section)이라고 한다. ▶상호배제를 재미있게 설명한 삽화. Mutex가 지켜주는 덕에, 화장실은 딱 1명만 쓸 수 있다. 더 쉬운 이해를..
Process와 Thread의 비교는 전산학의 '꽃' (아니면 말고..)인 '운영체제'에서 중요하게 다루는 내용이므로 취준생이라면 꼭 짚고 넘어가야할 내용이다. 먼저, Process와 Thread에 대해 정의를 내리자면, Process: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. Thread: 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.(출처: 위키피디아 해당 항목.) 프로그램(Program)에 대해 다들 알 것이다. 프로그램은 명령어들과 데이터의 묶음이라고 할 수 있다. 운영체제가 프로그램에 메모리를 할당하여 실행하면 이를 프로세스라고 한다. CPU의 프로세서는 하나..