프로세스(Process)


프로세스는 실행 중인 프로그램의 인스턴스이다.

운영 체제에 의해 메모리에 로드되어 실행되는 프로그램 코드와 데이터의 집합으로,

독립적인 실행 단위이다.

프로세스는 운영 체제로부터 자신만의 독립된 메모리 영역(코드, 데이터, 힙, 스택)과 시스템 자원을 할당받는다.

각 프로세스는 다른 프로세스와 독립적으로 실행되며, 

하나의 프로세스가 다른 프로세스의 메모리에 직접 접근하는 것은 허용되지 않는다.

프로세스 간 통신은 IPC(Inter-Process Communication) 메커니즘을 통해 이루어진다.

 

스레드(Thread)

스레드는 프로세스 내에서 실행되는 실행 단위이다. 

프로세스 내의 코드를 실행하는 가장 작은 단위로, 프로세스의 자원을 공유하면서 동작한다.

스레드는 프로세스 내에서 코드, 데이터, 힙 영역을 공유하며,

각 스레드는 자신의 스택(함수 호출, 지역 변수 등)과 CPU 레지스터 상태를 가진다.

하나의 프로세스 내에서 다수의 스레드가 병렬로 실행될 수 있으며, 

이를 통해 자원을 효율적으로 사용하고 성능을 향상시킨다.

스레드 간에 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다.

 


프로세스와 스레드의 차이점이란?


메모리와 자원의 공유: 

프로세스는 독립된 메모리 공간을 가지지만, 스레드는 같은 프로세스 내에서 메모리와 자원을 공유한다.


생성과 관리의 비용: 

프로세스는 생성 및 관리 비용이 높고, 리소스 사용량이 많다. 반면, 스레드는 가볍고 효율적이다.


통신과 동기화: 

프로세스 간 통신은 복잡하고 비용이 많이 들지만, 스레드 간 통신은 상대적으로 간단하다. 

다만, 스레드는 동기화 문제를 주의해야 한다.


독립성과 안정성: 

프로세스는 강력한 격리성으로 인해 안정적이지만, 

스레드는 자원 공유로 인해 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 줄 수 있다.

 

 

 

결론


이러한 특징 때문에,  리소스가 많이 필요한 독립적인 작업프로세스로 실행하는 것이 좋고,

리소스를 공유하며 빠른 응답이 필요한 작업은 스레드를 사용하는 것이 효과적이다.

'산대특 > 게임 알고리즘' 카테고리의 다른 글

디자인 패턴  (0) 2024.02.05
싱글톤 패턴  (0) 2024.02.05
스레드(Thread)와 코루틴(Coroutine)  (0) 2024.02.03
자료구조 - [Tree]  (0) 2024.02.01
[C#] Item Guide 만들기  (0) 2024.01.25

+ Recent posts