일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 자료구조정리
- 자료형타입
- 언리얼엔진
- leveleditor
- 자료구조
- c++porinter
- c++용어정리
- uaiperception
- 각도변환
- 수학용어정리
- bttask
- 게임개발
- 게임엔진튜토리얼
- livrary
- directx
- c++
- unrealengineai
- c++class
- 언리얼비헤이어비어트리
- 25.06.11dir
- DX
- 언리얼ai
- 프로그래밍일기
- 프로그래밍
- 언리얼엔진5
- c언어정리
- ipc(inter process communication)
- 월드아웃라이너
- 영단어정리
- 언리얼엔진공부
- Today
- Total
루리코딩 세상
CPU와 쓰레드 - 왜 프로그래밍에서 쓰레드가 중요한가? 본문
하드웨어를 찾아보다 새로운 것을 알게 되었다. 가상 메모리인 램에 주소값을 할당하여 매개변수를 선언하여 연산처리가 되는 것에 대한 이해를 하였으나, 쓰레드라는 개념을 접하면서 해당 기능이 CPU와 연관성을 갖는 것은 아닐까라는 의구점을 주었다.
PC를 조립해본 경험을 토대로 CPU에는 멀티 코어를 활용하는 기능이 내장되어있고 RAM 메모리와 중간의 캐시 메모리를 활용해
입력되어 있는 변수값을 연산하여 입출력장치(키보드-모니터-스피커 등)로 사용자로 하여금 처리된 데이터를 읽을 수 있는 과정에 대한 의구심이 해결되었으나, 이에 프로그래밍 언어를 통해서 처리과정에 어떻게 개입할 것인가에 대한 새로운 지식이 필요함을 느꼈다.
특히나 인텔 코어 칩셋과 AMD 코어 칩셋에서 서로 간의 장단점을 설명할 때 주로 들었던 것은
AMD의 멀티코어 갯수가 인텔코어에 비해 많아, 사용자로 하여금 다중 작업을 함에 있어서 더욱 효율적이다. 라는 점이었는데
이를 토대로 코어의 갯수가 쓰레드에 연관이 있음을 추론 할 수 있었다.
기본적으로 CPU(Central Processing Unit)의 동작 방식은 다음과 같다.
컴퓨터의 중심으로 인간으로 보자면 뇌의 역할을 하는 컴퓨터의 주요 구성품이다. 주로 하는 역할은 연산과 제어를 담당하여, 명령어를 처리하고 이를 보내주는 것을 담당한다. 명령어를 처리하는 단계는
Fetch - Decode - Execute - Writeback 순서로 이뤄져있는데,
- Fetch: 메모리에서 명령어를 불러옵니다.
- Decode: 명령어를 해석합니다.
- Execute: 연산을 수행합니다.
- Writeback: 결과를 저장합니다.
로 해석이 된다. 이러한 과정을 계속 반복하면서 순차 또는 병렬적으로 다중 작업을 처리하는 특성을 가지는데,
이러한 병렬적 처리를 가능하게 하는 구조가 "쓰레드" 로 판단된다.
프로세스 내에서 쓰레드는 어떻게 동작하는가?
프로그램이 실행되는 중에는 프로세스(Precess)로 고유의 메모리 공간을 할당받아 프로그램을 실행하게 되는데,
쓰레드는 이와 다르게 프로세스 내에서 실행되는 작은 실행 단위로, 동일한 메모리 공간을 공유하면서 독립적으로 실행되는 방식이다. 하나의 프로세스에서 여러개의 쓰레드를 가질 수 있으며, 각각 독립적으로 작동하는 것이 특성인데. 이러한 동작이 가능하게 하는 것이 CPU- 멀티 코어의 핵심적인 기능으로 판단된다.
'하드웨어(Hardware, HW)' 카테고리의 다른 글
캐시 메모리(Cache Memory) - 주소 매핑(Address Mapping) (0) | 2025.05.29 |
---|---|
가상 메모리(Virtual Memory)와 스와핑(Swapping) 현상 (0) | 2025.05.16 |
커패시터(Capacitor) (1) | 2025.05.15 |
RAM(Random Access Memory)에 대하여, (5) | 2025.05.15 |