카테고리 없음

프로세스, 스레드, 멀티스레딩 및 CPU와 GPU의 차이

이황충 2024. 7. 23. 09:16

유니티 게임개발캠프 TIL 62일차 

프로세스와 스레드

  1. 프로세스
    • 운영 체제에서 실행 중인 프로그램의 인스턴스로, 고유의 메모리 공간을 가집니다.
  2. 스레드
    • 프로세스 내에서 실행되는 작업 단위로, 같은 메모리 공간을 공유하여 효율적인 통신과 데이터 처리가 가능합니다.

Unity에서 Main Thread와 스레드 사용

  1. Main Thread에서만 Transform 변경 가능
    • Unity에서는 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 없습니다. 모든 Unity 엔진 객체는 Main Thread에서만 안전하게 접근하고 변경할 수 있습니다.

비동기 작업의 한계

  1. 비동기 작업의 복잡성
    • 모든 작업을 비동기로 처리하면 복잡성이 증가하고 디버깅이 어려워질 수 있습니다. 비동기 작업은 적절한 동기화와 에러 처리가 필요하며, 일부 작업은 동기적으로 처리하는 것이 성능 면에서 더 효율적일 수 있습니다.

Unity에서 멀티스레딩 구현 방법

  1. Unity Job System
    • 작업을 병렬로 실행할 수 있게 해주는 시스템으로, 성능을 최적화하기 위해 사용됩니다.
  2. C# Task 및 Thread 클래스
    • 표준 C# 스레딩 API를 사용하여 멀티스레딩을 구현할 수 있습니다. 단, Unity API는 Main Thread에서만 접근할 수 있음을 주의해야 합니다.
  3. Unity ECS (Entity Component System)
    • 데이터 중심의 병렬 처리를 지원하여 대규모 오브젝트를 효율적으로 관리하고 처리할 수 있습니다.

CPU와 GPU의 작동 방법

  1. CPU (Central Processing Unit)
    • 범용 프로세서로, 다양한 작업을 순차적으로 처리합니다. 복잡한 논리 연산과 제어 흐름 관리에 적합합니다.
  2. GPU (Graphics Processing Unit)
    • 대량의 데이터를 병렬로 처리하는 데 최적화된 프로세서로, 주로 그래픽 렌더링과 병렬 계산 작업에 사용됩니다. 많은 코어를 통해 동일한 작업을 동시에 수행하는 데 뛰어납니다.