Deff_Dev

[CS] 멀티스레드 & GPU 본문

면접 질문 정리/CS

[CS] 멀티스레드 & GPU

Deff_a 2024. 7. 27. 13:14

1. 프로세스와 스레드의 차이는 무엇인가요 ?

  • 프로세스는 컴퓨터에서 실제로 실행 중인 프로그램을 의미하고 스레드는 같은 프로세스 내에서 돌아가는 여러 작업 (흐름) 단위를 의미한다.
  • 프로세스는 독립된 힙 메모리 공간에서 실행되지만, 스레드는 같은 프로세스 내에서 독립된 스택 메모리 영역을 할당 받는다.
  • 다른 스레드에 있는 정보를 가져오는 것을 문맥 교환하는데, 같은 프로세스에 있는 스레드들은 Code, Data, Heap 영역을 공유하기 때문에 문맥 교환이 가볍다
  • 프로세스는 한 개 이상의 스레드를 가질 수 있다.

2. Unity에서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 있을까 ?

  • 결론적으로 말하자면 멀티 스레딩을 이용하면 메인 스레드의 Transform 값을 변경할 수 있다.
  • 하지만 기본적으로 Unity는 메인 스레드가 아닌 다른 스레드에서 Unity API에 접근하는 것을 막기 때문에 UnityMainThreadDispatcher를 이용하여 Unity API에 접근할 수 있다.

3. 왜 모든 직업을 비동기로 처리하지 않는 걸까요 ?

  • 모든 작업을 비동기로 처리하면, 작업들 간의 동기화 문제, 복잡성 증가, 그리고 오버헤드가 발생할 수 있다.
  • 또한, 일부 작업은 실시간으로 즉각적인 반응이 필요하기 대문에 비동기로 처리하면 성능 저하나 게임 플레이에 부정적인 영향을 미칠 수 있다.

4.  Unity에서 멀티스레딩을 구현하기 위한 방법에 대해 설명해주세요.

  • 멀티 스레딩: 스레드들이 병렬적으로 실행되는 것으로, 하나의 프로세스가 동시에 여러 작업을 실행하는 것이 목적

1. 잡 시스템 - 작업을 작은 단위로 나눠 여러 스레드에서 병렬로 처리할 수 있게 한다.

 

C# 잡 시스템 - Unity 매뉴얼

Unity C# 잡 시스템(Job System)을 사용해 Unity 엔진과 상호작용하는 간단하고 안전한 멀티스레드 코드를 작성하여 게임 성능을 개선할 수 있습니다.

docs.unity3d.com

 

2. C# Thread - C# 스레드를 사용하여 스레드를 생성하여 비동기 작업을 처리할 수 있다.

3. Task and async/await - await의 종료까지 대기하다 이후 함수를 수행하는 방식이고 Coroutine과 유사하지만, 수행 시점에 대한 시간이나 조건 체크 없이 특정 함수 종료까지 대기할 수 있어 비교적 간단하게 비동기 처리를 할 수 있다.


5. CPU와 GPU의 작동 방법은 어떤 차이가 있는지 설명해주세요.

  • CPU (Central Processing Unit)
    • CPU는 범용 프로세서로, 다양한 작업을 순차적으로 처리할 수 있다.
    • 여러 스레드를 통해 멀티태스킹을 수행할 수 있지만, 복잡한 로직 처리에 적합하다.
    • 명령어 처리가 바르고, 비교적 적은 수의 코어를 가지고 있다.
  • GPU (Graphics Processing Unit)
    • GPU는 그래픽 처리를 위해 특화된 프로세서로, 대량의 데이터를 병렬로 처리하는데 적합하다.
    • 수천 개의 작은 코어를 가지고 있으며, 반복적이고 동일한 연산을 동시에 처리하는 데 강점이 있다.
    • 게임 그래픽 렌더링, 영상 처리, 머신 러닝 등의 작업에 주로 사용된다.

'면접 질문 정리 > CS' 카테고리의 다른 글

[CS] 네트워크 & 렌더링 파이프라인  (0) 2024.07.27