주요 차이점 : 스레드와 프로세스는 멀티 스레딩에서 두 가지 밀접한 관련이 있습니다. 두 용어의 주요 차이점은 스레드가 프로세스의 일부라는 것입니다. 즉, 프로세스에 하나 이상의 스레드가 포함될 수 있지만 스레드는 프로세스를 포함 할 수 없습니다.
프로그래밍에는 프로세스와 스레드라는 두 가지 기본 실행 단위가 있습니다. 둘 다 일련의 지침을 실행합니다. 둘 다 프로그램이나 운영 체제에 의해 시작됩니다. 이 기사는 두 단위를 구별하는 데 도움이됩니다.
프로세스에는 자체 포함 된 실행 환경이 있습니다. 그것에는 완전한 개인 기본 런타임 자원 세트가 있습니다. 특히 각 프로세스는 자체 메모리 공간을 가지고 있습니다. 프로세스는 종종 다른 프로그램이나 응용 프로그램과 비슷한 것으로 간주됩니다. 그러나 단일 애플리케이션의 실행은 실제로 협력 프로세스의 집합 일 수 있습니다. 프로세스 간의 통신을 원활하게하기 위해 대부분의 운영 체제는 파이프 및 소켓과 같은 프로세스 간 통신 (IPC) 리소스를 사용합니다. IPC 자원은 다른 시스템의 프로세스 간 통신에도 사용될 수 있습니다. 가상 컴퓨터의 대부분의 응용 프로그램은 단일 프로세스로 실행됩니다. 그러나 프로세스 작성기 개체를 사용하여 추가 프로세스를 만들 수 있습니다.
컴퓨터에서 스레드는 운영 체제가 독립적으로 관리 할 수있는 프로그램 된 명령의 최소 시퀀스까지도 실행할 수 있습니다. 스레드 및 프로세스의 응용 프로그램은 운영 체제마다 다릅니다. 그러나 스레드는 프로세스 내에서 만들어져 존재합니다. 모든 프로세스에는 적어도 하나가 있습니다. 또한 여러 스레드가 프로세스에 존재하고 리소스를 공유하므로 스레드 간의 효율적인 통신에 도움이됩니다.
단일 프로세서에서 멀티 태스킹은 프로세서가 다른 스레드로 전환 할 때 수행됩니다. 그것은 멀티 스레딩으로 알려져 있습니다. 전환이 너무 자주 발생하여 스레드 또는 작업이 동시에 실행되는 것으로 인식됩니다. 스레드는 실제로 멀티 프로세서 또는 멀티 코어 시스템에서 동시 처리가 가능하며 모든 프로세서 또는 코어가 별도의 스레드를 동시에 실행합니다.
요약하면 스레드는 간단한 명령 집합을 포함하고 더 큰 프로세스 내에서 실행할 수 있으므로 경량 프로세스로 간주 될 수 있습니다. 컴퓨터는 동시에 여러 스레드와 프로세스를 실행할 수 있습니다.
프로세스와 스레드의 비교 :
방법 | 실 | |
정의 | 실행중인 프로그램의 인스턴스를 프로세스라고합니다. | 스레드는 프로세스의 하위 집합입니다. |
방법 | 상위 프로세스의 자체 데이터 세그먼트 사본이 있습니다. | 프로세스의 데이터 세그먼트에 직접 액세스 할 수 있습니다. |
통신 | 프로세스는 형제 프로세스와 통신하기 위해 프로세스 간 통신을 사용해야합니다. | 스레드는 프로세스의 다른 스레드와 직접 통신 할 수 있습니다. |
간접비 | 프로세스에는 상당한 오버 헤드가 있습니다. | 스레드는 거의 오버 헤드가 없습니다. |
창조 | 새로운 프로세스는 상위 프로세스의 중복을 필요로합니다. | 새 스레드를 쉽게 만들 수 있습니다. |
제어 | 프로세스는 하위 프로세스를 제어 할 수만 있습니다. | 스레드는 동일한 프로세스의 스레드에 대해 상당한 제어권을 행사할 수 있습니다. |
변경 사항 | 상위 프로세스의 변경 사항은 하위 프로세스에 영향을 미치지 않습니다. | 주 스레드의 모든 변경 사항은 프로세스의 다른 스레드의 동작에 영향을 줄 수 있습니다. |
기억 | 별도의 메모리 공간에서 실행하십시오. | 공유 메모리 공간에서 실행하십시오. |
파일 설명자 | 대부분의 파일 설명자는 공유되지 않습니다. | 파일 설명자를 공유합니다. |
파일 시스템 | 파일 시스템 컨텍스트를 공유하지 않습니다. | 파일 시스템 컨텍스트를 공유합니다. |
신호 | 신호 처리를 공유하지 않습니다. | 신호 처리를 공유합니다. |
에 의해 통제되는 | 프로세스는 운영 체제에 의해 제어됩니다. | 스레드는 프로그램에서 프로그래머가 제어합니다. |
의존 | 프로세스는 독립적입니다. | 스레드는 종속적입니다. |