운영체제

[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 멀티쓰레드 입문 (116강)

순정법사 2024.11.18

A. 멀티쓰레드 입문

1. 쓰레드

a. 쓰레드란?

🌟 스레드 : 직원같은 개념

 

정확하게 알려면 운영체제를 깊게 공부해야함

 

모바일이라 제대로 안잘림 ㅠㅠ

 

쓰레드를 설명하는 그림인데, 영혼을 로봇에 주입해서 운영한다고 하면 됨

영혼을 아주 빠르게 로봇들한테 영혼을 주입시킨다

 

b. 프로세스와 스레드의 차이

프로세스는 프로그램 그 자체를 말함 

알아서 동작하는게 아니고 하나의 껍질이라고 보면 됨 

👉 쓰레드가 프로그램을 실행시키는 주체라고 볼 수있음

 

 

c. cpu 운영

 

옛날에는 코어가 하나밖에 없어서 영혼이 한개밖에 없었음

그 영혼을 관리하는게 운영체제 

Cpu에서는 이렇게 하나씩 쓰레드에 먹이를 먹여가면서 실행하게 된다

 

d. cpu의 코어가 여러개면?

멀티코어 프로세서라고 함 / 다수의 스레드를 실행시킴

 

 

Cpu 의 성능이 좋아지는데  물리적인 한계가 발생되어서

아예 자체 코어를 4개로 만드는걸로 되었음 

 

어쨋든 쓰레드보다 프로그램이 많으니, 잘 운영하는게 중요하다


콘솔 프로그램에서는 운영체제 최적화에 많이 신경쓴다 (플레이스테이션)

 

e. mmorpg 에서 멀티스레드를 사용해야 하는 이유

 

(배그는 싱글스레드)

👉 처리해야할게 너무 많아서 그럼 

 

위와같이 각 세션에 쓰레드가 있어야지 처리가 빨라진다

 

서버 01 / 서버 02 등 각기 다른 서버가 있는데 

서버 하나당 컴퓨터 하나가 움직이고 있다고 보면 됨 (위그림 전체 빨간박스가 서버 01)

 

f. 데이터 관리 

쓰레드가 많다면 무조건 좋을까? ❌ ❌ ❌

 


힙이랑 데이터는 모든 스레드가 동일하게 사용하고 있음

그래서 많은 스레드를 사용한다고 좋은게 아님 (제대로 적당히 배치해야 한다)

 

잘못하면 이렇게 됨

 

g. 쓰레드의 비용

 

쓰레드가 왓다갔다 하는게 비용이 있음 :  생각보다 무겁다

 

쓰레드가 옮겨지면 위와같은 과정이 일어난다

 

그래서 쓰레드를 독점해서 사용하게 되면 다른 직원을 처리하지 못하게 되어 복잡해짐

따라서 만능 직원을 구할지, 전문 직원을 구할지는 정답이 없는 문제

(규모가 작으면 만능직원이 좋다)

 

쓰레드는 사용되지 않으면 준비상태로 기다린다

 

게임직원은 담당 스레드를 두는게 좋다