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