프로세스와 스레드 차이
프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말함
프로세스마다 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당받는다.(code, data, heap, stack)
스레드는 이 중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다.
[요약]
프로세스 : 자신만의 고유 공간과 자원을 할당받아 사용
스레드 : 다른 스레드와 공간과 자원을 공유하면서 사용
멀티 프로세스로 처리 가능한 걸 굳이 멀티 스레드로 하는 이유는?
프로세스를 생성하여 자원을 할당하는 시스템 콜이 감소함으로써 자원의 효율적 관리가 가능
프로세스 간의 통신(IPC)보다 스레드 간의 통신 비용이 적어 작업들 간 부담이 감소함
대신, 멀티 스레드를 사용할 때는 공유 자원으로 인한 문제 해결을 위해 ‘동기화’에 신경써야 한다.
교착상태(DeadLock)가 무엇이며, 4가지 조건은?
프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태를 말함
시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생하는 문제
이 4가지 조건 중 하나라도 만족하지 않으면 교착상태는 발생하지 않음
교착상태의 4가지 조건은 아래와 같다.