OS

[OS] Thread (쓰레드)

집한구석 2021. 10. 3. 11:51
728x90

Thread (쓰레드)

  • 경량화 프로세스라고도 함
  • CPU를 점유하는 가장 기본적인 단위

Single Thread / Multi Thread

싱글쓰레드 / 멀티쓰레드

  • 레지스터, 스택, 프로그램 카운터가 프로세스 내부에 별도로 가지게 되면 쓰레드가 됨
  • 한 프로세스에 쓰레드를 여러개 가지게 되면 멀티쓰레드가 됨

Multi Thread 장점

  1. 반응성: User 인터페이스를 처리할때, 논블록킹으로 익스큐션을 계속 실행 가능
  2. 자원공유 : 스레드는 코드와 데이터 영역을 공유하기 때문에 Shared 영역을 안만들어도 자원공유가 자유로움 (프로세스 대비)
  3. 경제성 : 프로세스보다 비용이 더 경제성 있음 (컨텍스트 스위칭시 프로세스에 비해서 오버헤드가 낮음)
  4. 확장성 : 멀티프로세스 아키텍처에 병렬처리를 가능하게함

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