개념
프로세서: 하드웨어
프로세스: 실행중인 프로그램
스레드: 스레드는 프로세스내의 작업 단위이다. 일반적으로 한 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드는 프로세스 내의 자원과 데이터를 공유한다.
멀티 프로그래밍: 하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법이다.
멀티 태스킹: 다수의 작업(Task)을 운영체제의 스케줄링에 의해 번갈아 가며 수행되도록 한다.
멀티 프로세싱: 다수의 프로세서가 협력적으로 일을 처리하는 것
멀티 스레딩: 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화 하여 수행 능력을 향상시킨다.
멀티 쓰레딩 주요 특징
1. 경량화된 실행 단위
- 낮은 오버헤드: 같은 프로세스 내에서 실행되기 때문에 스레드간 전환은 가볍고 빠르다.
- 빠른 전환: 각 스레드는 자신만의 스택과 레지스터(프로그램 카운터)를 갖지만, 코드, 힙, 메모리 등은 공유하기 때문에 전환 시 재설정해야 할 데이터의 양이 적어 전환 속도가 빠르다.
2. 효율적인 데이터 공유
- 공유 메모리: 같은 프로세스 내 스레드들은 힙 영역 등 주요 메모리 공간을 공유하므로, 데이터 전달이 빠르고 간편하다.
- 동기화 관리: 스레드 간의 데이터 공유는 IPC와 같은 복잡한 메커니즘 없이도 이루어지지만, 동시에 접근할 경우 동기화 문제는 여전히 존재한다.
3. 응답성 및 처리 성능 향상
- 병렬 처리: 멀티 쓰레딩을 통해 I/O 작업과 CPU 집약적 작업을 동시에 처리할 수 있으므로, 시스템 전체의 응답성이 향상된다.
- 리소스 활용 최적화: CPU의 멀티코어 환경에서 각 스레드를 개별 코어에 할당하여 병렬 처리가 가능해지므로, 시스템 자원을 더울 효율적으로 사용할 수 있다.
활용예시
웹 서버: 여러 클라이언트 요청을 동시에 처리
GUI 애플리케이션: 사용자 인터페이스의 응답성을 유지하면서 백그라운드 작업을 수행
데이터베이스 서버: 여러 사용자 쿼리를 동시에 처리한다.
게임: 복잡한 게임 로직과 그래픽 렌더링을 동시에 처리한다.
다운로드 매니저: 여러 파일을 동시에 다운로드한다.
결론
멀티 쓰레딩은 프로세스 기반 멀티 태스킹보다 낮은 비용의 컨텍스트 스위칭과 효율적인 메모리 사용과 빠른 데이터 공유가 가능해진다. 이를 통해 I/O 작업이나 대기 작업을 별도의 스레드로 처리하여 주 스레드가 차단되지 않고 사용자 입력이나 다른 중요한 작업에 빠르게 대응할 수 있게 된다.
하지만, 스레드들이 같은 메모리를 공유하다 보니 경쟁 상태나 교착 상태와 같은 동기호 문제가 발생할 수 있고, 이를 해결하는 과정이 복잡해지거나 디버깅이 어려워질 수 있다. 또한, 스레드 관리를 소홀히 하면 시스템자원이 과도하게 사용될 위험도 있다.
데이터 센터 운영에는 어떻게 적용할 수 있을까?
데이터센터 테크니션이 멀티 쓰레딩 기술을 직접적으로 코딩하거나 깊이 있게 개발하는 경우는 드물지만, 데이터센터 운영 및 관리에 사용되는 다양한 도구와 시스템의 동작 원리를 이해하고, 문제해결 및 효율적인 작업 수행 능력을 향상시키는 데 중요한 기반 지식이 될 수 있다. 특히 성능문석, 자동화, 장애처리, 그리고 DCIM 시스템 활용 측면에서 멀티 쓰레딩에 대한 기본적인 이해는 테킈션의 역량을 한층 끌어올리는 데 기여할 수 있다.
'시스템엔지니어 > CS와 이것저것' 카테고리의 다른 글
[하드웨어] Basic Structure Cabling이란? (0) | 2025.05.04 |
---|---|
[백엔드] 가상화 (0) | 2025.04.18 |
[백엔드] RDB 페이징 쿼리의 필요성 (0) | 2025.04.16 |
[하드웨어 ] MCP(Model Context Protocol)가 가져오는 하드웨어 변화(데이터센터) (0) | 2025.04.15 |
[네트워크] NIC, L2 Frame, LAN 카드, MAC주소 (0) | 2025.04.13 |