프로세스와 스레드는 컴퓨터에서 동작하는 실행 단위이다.
프로세스(Process)
운영체제로부터 시스템 자원을 할당받아 실행되는 프로그램 단위.
즉, 독립적인 메모리 영역을 가지며, 다른 프로세스와는 독립적으로 실행된다.
프로세스는 각각의 프로세스 ID(PID)를 가지고, 프로세스 간 통신(IPC)을 이용하여 통신할 수 있다.
스레드(Thread)
프로세스 내에서 실행되는 작업 단위.
한 프로세스 내에서 여러 개의 스레드가 동시에 실행될 수 있으며, 각각의 스레드는 프로세스의 메모리 공간을 공유한다.
즉, 스레드는 하나의 프로세스 내에서 독립적으로 실행되지 않으며, 다른 스레드와 메모리를 공유한다.
차이점
프로세스는 각각의 독립적인 메모리 공간을 할당받아 실행되므로, 프로세스 간의 자원 공유나 통신을 위해서는 별도의 IPC 기법을 사용해야 하지만 스레드는 같은 프로세스 내에서 메모리를 공유하기 때문에, 스레드 간의 자원 공유나 통신이 비교적 쉽다.
프로세스는 각각의 독립적인 메모리 공간을 할당받아 실행되므로, 하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스에는 영향을 주지 않지만 스레드는 같은 프로세스 내에서 실행되기 때문에, 한 스레드에서 예외가 발생하면 다른 스레드에도 영향을 줄 수 있다.
이러한 차이점으로 인해, 프로세스는 각각의 독립적인 작업을 수행하고, 서로 다른 프로세스 간의 작업을 분산하여 처리할 수 있다. 반면, 스레드는 하나의 프로세스 내에서 여러 작업을 동시에 처리하며, 이를 통해 다중 처리를 구현할 수 있다.
'개발일지' 카테고리의 다른 글
트랜잭션(Transaction)이란 (0) | 2023.04.04 |
---|---|
TCP와 UDP의 공통점과 차이점 (0) | 2023.03.31 |
Parameter와 Argument의 차이 (0) | 2023.03.30 |
List, Set, Map, HashMap의 차이 (0) | 2023.03.30 |
컬렉션 클래스에서 왜 제네릭을 사용하는가? (0) | 2023.03.29 |