프로세스(Process) 와 스레드(Thread)

Moon Blue의 IT 로그 📝·2023년 3월 29일
0
post-thumbnail
구분프로세스(Process)스레드(Thread)
정의프로그램이 실행 중인 상태프로세스 내에서 실행되는 작업 단위
메모리 구조코드, 데이터, 스택, 힙 영역 등스택 영역만 독립, 코드, 데이터, 힙 영역 공유
자원 공유독립적인 메모리 공간, 자원 공유 어려움동일 프로세스 내 스레드끼리 자원 공유 가능
생성 및 관리생성, 관리 비용이 높음생성, 관리 비용이 상대적으로 낮음
통신 방식IPC(Inter-Process Communication) 사용전역 변수, 공유 메모리를 이용한 통신 가능

✅ 프로세스 vs 스레드

프로세스는 프로그램이 메모리에 로드되어 실행 중인 상태를 의미하며, 독립적인 메모리 공간과 시스템 자원을 가집니다. 스레드는 프로세스 내에서 실행되는 작업 단위로, 메모리 공간을 공유하면서 독립적으로 실행됩니다.

✅ 메모리 구조

프로세스는 코드, 데이터, 스택, 힙 영역 등의 독립적인 메모리 구조를 가지고 있습니다. 스레드는 동일한 프로세스 내에서 실행되므로, 코드, 데이터, 힙 영역을 공유하고, 스택 영역만 독립적으로 가집니다.

✅ 자원 공유

프로세스는 독립된 메모리 공간과 시스템 자원을 가지기 때문에, 자원 공유가 어렵습니다. 반면, 스레드는 같은 프로세스 내에서 실행되기 때문에 자원 공유가 가능하며, 전역 변수와 공유 메모리를 이용하여 통신할 수 있습니다.

💰 생성 및 관리 비용

프로세스의 생성 및 관리 비용은 높습니다. 프로세스 간의 전환 시 많은 시스템 자원을 사용하게 됩니다. 반면, 스레드는 상대적으로 낮은 생성 및 관리 비용을 가지며, 스레드 간 전환 시 프로세스 전환보다 더 적은 시스템 자원을 사용합니다.

📡 통신 방식

프로세스 간의 통신은 독립된 메모리 공간 때문에 IPC(Inter-Process Communication)를 사용해야 합니다. IPC는 공유 메모리, 파이프, 소켓 등의 방식으로 프로세스 간 데이터를 전달하게 됩니다. 반면, 스레드는 전역 변수와 공유 메모리를 이용하여 동일한 프로세스 내에서 쉽게 통신할 수 있습니다.

🛠 작업 효율성

프로세스와 스레드의 가장 큰 차이는 작업 효율성입니다. 스레드는 프로세스보다 적은 시스템 자원을 사용하며, 더 빠른 실행 및 전환 속도를 가집니다. 따라서, 멀티태스킹이 필요한 작업에서 스레드를 활용하면 프로세스보다 높은 성능과 효율성을 얻을 수 있습니다.


프로세스와 스레드의 차이점과 특성을 이해하고 적절한 상황에서 활용할 수 있도록 프로그래밍하는 것이 중요합니다. 이를 통해 시스템의 성능과 효율성을 높일 수 있습니다.

profile
What a Beautiful World~ 🌏

0개의 댓글