반응형
매일메일을 통한
하루하루 CS 공부하기!
스레드, 프로세스, 코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 크다.
스레드가 많으면?
- OS가 스레드 간 Context Switching을 자주 수행하여 CPU 리소스가 스레드 관리에 많이 소모됨
- 스레드가 많아지면 Synchronization이나 State 관리가 복잡해짐 → 버그 발생률 증가
실제 작업 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 Memory, Cache, Lock 등의 자원을 경쟁하게 되어 성능 저하나 Dead Lock 발생 가능.
프로세스가 많으면?
- 각 프로세스는 독립적인 메모리 공간을 가짐
- 따라서 많은 프로세스가 동시 실행 시 Memory Utilization이 급격하게 증가.
- 프로세스 생성 & 관리에 많은 시스템 리소스 소모
- 프로세스 간 통신 (IPC)이 필요한 경우 성능 저하 발생 가능
- 오버헤드 : 프로세스 간 Context Switching > 스레드 간 Context Switching
OS는 동시에 실행할 수 있는 프로세스 수에 제한이 있으며, 이를 초과할 시 새로운 프로세스 생성이 불가능하거나 시스템이 불안정해질 수 있다.
코어가 많으면?
CPU는 코어가 높을 수록 병렬 처리 성능을 향상시킬 수 있지만, 소프트웨어가 멀티코어 환경에 최적화 되어있어야 한다.
코어 수가 많아질수록 CPU 비용과 전력 소비 증가, 발열 관리도 복잡해짐.
반응형
'Back-end' 카테고리의 다른 글
[Back-End] DBMS에서 동시성을 제어하는 방법 (0) | 2025.01.08 |
---|---|
[Back-End] 웹사이트에 처음 접근했을 때 발생하는 일련의 과정 (1) | 2025.01.07 |
[Back-End] Shared Lock과 Exclusive Lock 이란? (0) | 2024.12.31 |
[Back-End] Sync와 Async 그리고 Blocking와 Non-Blocking? (2) | 2024.12.30 |
[Back-End] 로그와 메트릭에 대해 설명해봐라! (2) | 2024.12.19 |