본문 바로가기
Computer Science/Operating System

🥓Thread

by HaningYa 2020. 6. 16.
728x90

스레드란

: CPU 사용의 기본 단위를 나타내며 동일한 프로세스에 속하는 스레드는 코드 및 데이터를 포함하여 많은 프로세스 자원을 공유한다.

멀티 스레드 응용 프로그램의 이점

  1. 응답정
  2. 자원공유
  3. 경제성
  4. 확장성

병행성과 병렬성

  • 병행성: 단일 CPU가 있는 시스템에서 여러 스레드가 진행 중일 경우
  • 병렬성: 멀티 코어 시스템에서 여러 스레드가 동시에 진행 중인 경우

다중 스레드 응용 프로그램 설계 도전과제

  1. 작업 분할: 스레드별 작업을 분할하는 기준 모호
  2. 균형 조정: 스레드간 작업량이 균등해야함
  3. 서로 다른 스레드 간 데이터 분할
  4. 데이터 종속성 식별
  5. 테스트 및 디버깅 어려움

데이터 병렬 처리 vs 작업 병렬 처리

  • 데이터 병렬 처리: 동일한 데이터 부분 집합을 다른 컴퓨팅 코어에 분산시키고 각 코어에서는 동일한 연산 수행
  • 작업 병렬 처리: 여러 코어에 데이터가 아니라 작업을 분산시키고 각 작업은 고유한 연한을 실행

사용자 스레드와 커널 스레드의 매핑

  • 사용자 응용 프로그램은 사용자 수준 스레드를 생성하여 궁극적으로 CPU에서 실행 되도록 커널 스레드에 매핑되어야 한다.
  • 다대일 모델
  • 일대일 모델
  • 다대다 모델

스레드 라이브러리

  • Windows: 윈도우 전용
  • Pthreads: UNIX, Linux, macOS -> POSIX호환 시스템
  • Java threading: JVM 지원 시스템

암묵적 스레딩

  • 스레드가 아닌 Task로 식별
  • 언어 또는 API 프레임워크가 스레드를 만들고 관리
  • Thread pool, fork join, GCD 의 접근 방식이 있음

스레드 종료

  • 비동기 취소
    : 스레드가 업데이트를 수행하는 중이라도 스레드를 즉시 중지
  • 지연취소
    : 스레드가 종료해야 한다고 통지하지만 스레드는 질서 정연하게 종료
  • 대부분 비동기 종료보다 지연 취소를 선호

Linux 의 특이한점

프로세스와 스레드를 구분하지 않고 각각을 태스크라 한다. Linux clon() 시스템 콜을 사용하여 프로세스와 비슷하거나 스레드와 비슷한 태스크를 만들 수 있다.

728x90

'Computer Science > Operating System' 카테고리의 다른 글

🌌운영체제 구조  (0) 2020.06.17
🚗Process  (0) 2020.06.16
🚀CPU 스케줄링 알고리즘  (0) 2020.06.16
OS #1 - Operating System Introduction.  (0) 2020.04.20

댓글