스레드 와 동시성 - Thread & Concurrency
chanto11
·2021. 3. 23. 12:03
Thread : 스레드
- 경량의 프로세스
- CPU 사용하는 기본 단위
- thread ID, PC(program counter), register set, stack으로 구성됨
- 멀티스레드 서버 아키텍쳐
= 서버에서 클라이언트의 요청을 받아 스레드를 만들어 서비스하고 서버는 추가 요청을 계속 listen 한다.
- 멀티스레딩 장점:
- NonBlocking 으로 처리를 할수있다.
- Resource 자원을 공유가 쉽다. (프로세스의 shared-memory 나 message-passing 방식에 비해 쉽다.)
- Context switching 비용이 적다 (프로세스보다 적은 overhead)
- Scalability 확장성이 뛰어나다.
- 멀티 코어 시스템에서 멀티 스레드
- 멀티 코어를 동시에 효율적으로 처리능력이 향상. (하지만 시스템 구성 난이도 증가)
- single-core = 시분활 방식, multiple-core = 스레드 병렬 처리
- 멀티 코어 시스템에 도전 과제
- Identifying tasks : 어떻게 작업을 나눠서 할지. (작업 처리 방법 도출)
- Balance : 각각의 작업량의 균형을 맞추기. (스레드의 효율적인 일처리 방식 도출)
- Data splitting : 각 코어에 데이터를 잘 나누기.
- Data dependency : 동기적인 처리 동작하기위해 Data 의존도를 고려.
- Tesing and debugging : 테스트 & 디버깅의 어려움.
※ 현재에는 분산처리시스템을 이용하여 처리 (개인의 컴퓨터를 넘어서서)
- 네트워크 운영체제, 분산 운영체제
- Data Migration(데이터 이주), Computation(연산 이주), Process Migration(프로세스 이주)
- Client / Server, Processor Pool, Hybrid
- 캐싱, 원격서비스
- 등...
복잡한 과정에 의해 분산 처리되어짐.
multicore programming : 멀티 코어 프로그래밍
- amdahl's Law : 암달의 법칙 : 코어는 많을수록 좋은가?
= 코어가 크게 중요하는 않는다.