Deff_Dev
[CS] 멀티스레드 & GPU 본문
1. 프로세스와 스레드의 차이는 무엇인가요 ?
- 프로세스는 컴퓨터에서 실제로 실행 중인 프로그램을 의미하고 스레드는 같은 프로세스 내에서 돌아가는 여러 작업 (흐름) 단위를 의미한다.
- 프로세스는 독립된 힙 메모리 공간에서 실행되지만, 스레드는 같은 프로세스 내에서 독립된 스택 메모리 영역을 할당 받는다.
- 다른 스레드에 있는 정보를 가져오는 것을 문맥 교환하는데, 같은 프로세스에 있는 스레드들은 Code, Data, Heap 영역을 공유하기 때문에 문맥 교환이 가볍다
- 프로세스는 한 개 이상의 스레드를 가질 수 있다.
2. Unity에서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 있을까 ?
- 결론적으로 말하자면 멀티 스레딩을 이용하면 메인 스레드의 Transform 값을 변경할 수 있다.
- 하지만 기본적으로 Unity는 메인 스레드가 아닌 다른 스레드에서 Unity API에 접근하는 것을 막기 때문에 UnityMainThreadDispatcher를 이용하여 Unity API에 접근할 수 있다.
3. 왜 모든 직업을 비동기로 처리하지 않는 걸까요 ?
- 모든 작업을 비동기로 처리하면, 작업들 간의 동기화 문제, 복잡성 증가, 그리고 오버헤드가 발생할 수 있다.
- 또한, 일부 작업은 실시간으로 즉각적인 반응이 필요하기 대문에 비동기로 처리하면 성능 저하나 게임 플레이에 부정적인 영향을 미칠 수 있다.
4. Unity에서 멀티스레딩을 구현하기 위한 방법에 대해 설명해주세요.
- 멀티 스레딩: 스레드들이 병렬적으로 실행되는 것으로, 하나의 프로세스가 동시에 여러 작업을 실행하는 것이 목적
1. 잡 시스템 - 작업을 작은 단위로 나눠 여러 스레드에서 병렬로 처리할 수 있게 한다.
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 |
---|