[swift] 스레드와 프로세스의 차이점

스레드(Thread)와 프로세스(Process)는 운영체제에서 동작하는 개별 실행 단위입니다. 하지만 둘은 목적과 동작 방식에서 다른 차이점을 가지고 있습니다.

프로세스(Process)

프로세스는 운영체제로부터 할당받은 자원(메모리, 파일 핸들 등)과 CPU 시간을 갖는 독립적인 실행 단위입니다. 프로세스는 독립적으로 메모리 공간을 할당받고, 서로 간섭하지 않으며, 개별적인 주소 공간을 갖습니다. 이러한 특징으로 인해 프로세스 간 통신은 비용이 많이 들어갑니다.

프로세스는 실행 중에 발생할 수 있는 예외나 에러에 대한 안정성을 갖추고, 각각 개별적인 스레드를 가질 수 있습니다. 또한 다른 프로세스의 영향을 받지 않고 독립적으로 동작할 수 있기 때문에 안정성과 병렬 처리가 가능합니다. 하지만 프로세스 간의 전환에는 상대적으로 많은 시간과 자원이 소모됩니다.

스레드(Thread)

스레드는 하나의 프로세스 안에서 실행되는 여러 개의 실행 단위로, 프로세스의 자원을 공유하여 동작합니다. 스레드는 프로세스의 메모리 공간을 공유하기 때문에 데이터 접근이 용이하며, 스레드들 간의 통신 또한 간단해집니다.

스레드는 경량 프로세스(Lightweight Process)라고도 불리며, 프로세스 내에서 동시에 여러 스레드가 동작할 수 있습니다. 스레드 간의 전환에는 비용이 적게 들기 때문에 일반적으로 프로세스보다 빠른 속도로 동작할 수 있습니다. 스레드는 프로세스 내의 자원을 공유하기 때문에 스레드 간 동기화 이슈에 유의해야 합니다.

결론

스레드와 프로세스는 운영체제에서 동작하는 실행 단위로, 각각 독립적인 메모리 공간을 가지고 있고, 동작 방식과 자원 공유 등의 측면에서 차이가 있습니다. 스레드는 프로세스 내에서 여러 개의 동시 실행 단위로 동작하며, 자원을 공유하기 때문에 더 빠른 속도를 갖고 있습니다. 프로세스는 각각 독립적인 주소 공간을 갖고 있으며, 안정성과 병렬 처리를 위해 사용됩니다.

참고 문서: