728x90
Thread (쓰레드)
- 경량화 프로세스라고도 함
- CPU를 점유하는 가장 기본적인 단위
Single Thread / Multi Thread
- 레지스터, 스택, 프로그램 카운터가 프로세스 내부에 별도로 가지게 되면 쓰레드가 됨
- 한 프로세스에 쓰레드를 여러개 가지게 되면 멀티쓰레드가 됨
Multi Thread 장점
- 반응성: User 인터페이스를 처리할때, 논블록킹으로 익스큐션을 계속 실행 가능
- 자원공유 : 스레드는 코드와 데이터 영역을 공유하기 때문에 Shared 영역을 안만들어도 자원공유가 자유로움 (프로세스 대비)
- 경제성 : 프로세스보다 비용이 더 경제성 있음 (컨텍스트 스위칭시 프로세스에 비해서 오버헤드가 낮음)
- 확장성 : 멀티프로세스 아키텍처에 병렬처리를 가능하게함
4개 쓰레드를 어플리케이션에서 상황별 고려 (싱글코어 / 멀티코어)
싱글코어
- 시간에 따라서 인터리빙(사이사이에 끼어넣음)되어 순차적으로 처리
멀티코어
- 멀티코어일 경우 병렬성이 향상되어 효율적으로 처리
- 쓰레드를 나눠서 처리함, 효율적이지만 고려해야할 사항이 많아짐
Multi Thread 처리시 고려사항
- Task 식별 : Task를 나눠야 하고 나눈 Task를 식별해야함
- 밸런스 : 동일한 Value의 동일한 작업을 수행하도록 작업을 보장해야함
- 데이터 분할 : 별도의 코어에서 실행하려면 데이터도 분할해야함
- 데이터 종속성 : 작업 실행이 다음과 동기화되었는지 확인이 필요함
'OS' 카테고리의 다른 글
[OS] Thread Safe (0) | 2021.11.06 |
---|---|
[OS] 데드락 (0) | 2021.11.06 |
[OS] Process (프로세스) (0) | 2021.07.11 |
[OS] 뮤텍스 / 세마포어 (0) | 2021.06.13 |
[OS] PCB(Process Control Block) (0) | 2021.06.12 |