• 스레드 : 프로세스를 구성하는 실행의 흐름 단위
난해한 설명 같지만 이거만한게 없다..
전통적인 관점에서는 하나의 프로세스가 하나의 작업을 처리하는 단일 스레드 프로세스
스레드 개념을 도입해서 한 프로세스가 여러가지 일을 동시에 처리하는 멀티 스레드 프로세스가 된다
스레드는 프로세스 내에서 각각 ID, PC, 레지스터, 스택을 가지고 실행된다
프로세스 내의 스레드들은 PC 포함 레지스터, 스택을 유지하고 프로세서 자원을 공유하면서 실행된다
프로세스와 스레드를 구분하지 않고 둘다 실행의 문맥인 태스크로 보는 운영체제도 있다 <- 리눅스
• 멀티 프로세스와 멀티 스레드
같은 작업을 여러번 수행하려고 할때 FORK를 여러번 하는 것과 스레드를 여러개 만들어서 실행하는 방법이 있음
결과물은 같아도 FORK를 통해 프로세스를 실행하는 방법은 코드,데이터,스택.힙 등 자원이 복제되어서 메모리를 낭비
스레드를 통해서 하는 것은 스택과 레지스터 이외의 자원을 공유하기에 메모리가 효율적이고 통신에서 유리하다
그렇지만 멀티스레드 환경에서는 한 스레드에 문제가 생기면 공유하는 다른 스레드까지 문제가 생길 수 있다..