Process vs Thread
프로세스 vs 스레드
프로그램
명령어들의 집합, 수동적인 상태이며 디스크 안에 저장되어있다.
프로세스
실행 중인 프로그램, 운영체제로 부터 실행에 필요한 자원을 할당 받은 능동적인 상태
스레드
프로세스가 할당받은 자원을 이용하는 실행단위
자원 공유 여부
프로세스는 독립된 메모리 공간을 사용하므로, 서로 다른 프로세스는 데이터 공유가 불가능합니다. 반면에, 스레드는 동일한 메모리 공간을 사용하므로, 데이터 공유가 가능합니다.
생성 비용
프로세스는 프로세스 간 전환 및 IPC를 위한 자원이 필요하므로, 프로세스 생성 비용이 스레드 생성 비용보다 높습니다.
독립성
프로세스는 각각 독립된 인스턴스이므로, 한 프로세스가 다운되더라도 다른 프로세스는 영향을 받지 않습니다. 반면에, 스레드는 하나의 프로세스 내에서 실행되므로, 한 스레드의 오류로 인해 전체 프로세스가 중단될 수 있습니다.
CPU 이용률
스레드는 동일한 프로세스 내에서 실행되므로, 프로세스 간 전환보다CPU 이용률이 높습니다. 따라서, 멀티 스레드 프로그래밍을 통해, CPU 이용률을 향상시킬 수 있습니다.
동기화와 교착상태
스레드는 공유 메모리를 사용하기 때문에, 동기화 문제가 발생할 수 있습니다. 또한, 서로 다른 스레드가 서로 상대방의 자원을 점유하고 대기하면서 아무것도 진행하지 못하는 교착상태(deadlock)가 발생할 수 있습니다.
Last updated