A. 멀티쓰레드 입문
1. 쓰레드
a. 쓰레드란?
🌟 스레드 : 직원같은 개념
정확하게 알려면 운영체제를 깊게 공부해야함
쓰레드를 설명하는 그림인데, 영혼을 로봇에 주입해서 운영한다고 하면 됨
영혼을 아주 빠르게 로봇들한테 영혼을 주입시킨다
b. 프로세스와 스레드의 차이
프로세스는 프로그램 그 자체를 말함
알아서 동작하는게 아니고 하나의 껍질이라고 보면 됨
👉 쓰레드가 프로그램을 실행시키는 주체라고 볼 수있음
c. cpu 운영
옛날에는 코어가 하나밖에 없어서 영혼이 한개밖에 없었음
그 영혼을 관리하는게 운영체제
Cpu에서는 이렇게 하나씩 쓰레드에 먹이를 먹여가면서 실행하게 된다
d. cpu의 코어가 여러개면?
멀티코어 프로세서라고 함 / 다수의 스레드를 실행시킴
Cpu 의 성능이 좋아지는데 물리적인 한계가 발생되어서
아예 자체 코어를 4개로 만드는걸로 되었음
어쨋든 쓰레드보다 프로그램이 많으니, 잘 운영하는게 중요하다
콘솔 프로그램에서는 운영체제 최적화에 많이 신경쓴다 (플레이스테이션)
e. mmorpg 에서 멀티스레드를 사용해야 하는 이유
(배그는 싱글스레드)
👉 처리해야할게 너무 많아서 그럼
위와같이 각 세션에 쓰레드가 있어야지 처리가 빨라진다
서버 01 / 서버 02 등 각기 다른 서버가 있는데
서버 하나당 컴퓨터 하나가 움직이고 있다고 보면 됨 (위그림 전체 빨간박스가 서버 01)
f. 데이터 관리
쓰레드가 많다면 무조건 좋을까? ❌ ❌ ❌
힙이랑 데이터는 모든 스레드가 동일하게 사용하고 있음
그래서 많은 스레드를 사용한다고 좋은게 아님 (제대로 적당히 배치해야 한다)
g. 쓰레드의 비용
쓰레드가 왓다갔다 하는게 비용이 있음 : 생각보다 무겁다
그래서 쓰레드를 독점해서 사용하게 되면 다른 직원을 처리하지 못하게 되어 복잡해짐
따라서 만능 직원을 구할지, 전문 직원을 구할지는 정답이 없는 문제
(규모가 작으면 만능직원이 좋다)
쓰레드는 사용되지 않으면 준비상태로 기다린다
'운영체제' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 락 기초, 스핀락, 데드락 (0) | 2024.12.03 |
---|---|
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 공유자원 (0) | 2024.12.03 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 캐시와 CPU 파이프라인 (1) | 2024.12.03 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 쓰레드 (1) | 2024.12.02 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 서버 (115강) (1) | 2024.11.18 |