[OS] 스레드

Manx·2022년 4월 28일
0

운영체제

목록 보기
3/12

스레드

  • 프로세스의 특성인 자원과 제어에서 제어만 분리한 실행 단위
  • 프로세서 활용의 기본 단위
  • 프로세스 관리 정보 공유
  • 같은 프로세스의 스레드들은 동일한 주소 공간 공유

스레드 병렬 수행의 이점

  • 사용자 응답성 증가 : 일부 스레드가 지연되어도, 다른 스레드가 작업을 처리할 수 있다.
  • 프로세스의 자원과 메모리 공유 가능 : 커널 개입을 피할 수 있다.
  • 경제성 좋음 : Context Switching 발생보다 효율적이다.
  • 다중 처리로 성능과 효율이 향상된다.

스레드와 프로세스의 관계

다중 스레드 : 프로그램 하나를 여러 실행 단위로 쪼개어 실행한다는 측면에서 다중 처리와 비슷하다.

스레드 제어 블록 (TCB, Thread Control Block)

  • 정보 저장
  • 프로세스 제어 블록은 스레드 제어 블록의 리스트
  • 스레드 간에 보호하지 않음
  • TCB의 내용
    - 실행 상태 : 프로세서 레지스터, 프로그램 카운터, 스택 포인터
    - 스케줄링 정보 : 상태, 우선순위, 프로세서 시간
    - 계정 정보
    - 스케줄링 큐용 다양한 포인터
    - 프로세스 제어 블록 PCB을 포함하는 포인터

사용자 수준 스레드 : 다대일(n:1) 매핑

  • 스레드와 관련된 모든 행위를 사용자 영역에서 함
  • 스레드 교환에 커널이 개입하지 않아 커널에서 사용자 영역으로 전환 불필요
  • 커널은 스레드가 아닌 프로세스를 한 단위로 인식, 프로세서 할당(프로세스 테이블 유지)

장점

커널의 개입을 받지 않는다.

  • 이식성 높음 : 커널에 독립적 스케줄링을 할 수 있어 모든 운영체제에 적용 가능
  • 오버헤드 적음 : 커널을 호출하지 않아, 영역 전환 오버헤드 감소
  • 유연한 스케줄링 가능

단점

  • 시스템의 동시성을 지원하지 않음
  • 스레드 간 보호 불가능

커널은 프로세스 단위로 자원을 할당하기 때문에, 스레드 한 개가 대기 상태가 되면 다른 스레드도 실행 불가능

커널 수준 스레드 : 일대일(1:1) 매핑

  • OS가 스레드를 직접 관리
  • 커널 영역에서 스레드의 생성, 관리 수행 (Context Switching 부하가 큼)
  • 프로세스 내 스레드들이 병행 수행 가능 (하나의 스레드가 block 되어도 다른 스레드는 계속 작업 가능)

두 개 짬뽕 = 혼합형 스레드 (효율적이면서 유연)

우리가 코드로 스레드를 생성해서 사용하는 것은 사용자 수준 스레드이다.
병렬 처리가 가능하다는 것과, 오버헤드의 부담을 덜 받는다는 것이 가장 큰 장점이라고 생각한다.


Reference

  • 운영체제:그림으로 배우는 구조와 원리 - 한빛 아카데미
profile
백엔드 개발자

0개의 댓글