쓰레드 Thread

yongju·2024년 1월 7일
0

정보처리기사

목록 보기
21/91

쓰레드

  • 실행될 명령어들의 연속, called by 정량 프로세스(light-weight)
  • 순차적 실행, 프로세스 상태 전이의 병렬성을 접속하기 위함.
  • 다중 프로그래밍 기법에서 여러개의 프로세스는 하나의 시스템을 공유

단일 쓰레드

  • 하나의 프로세스를 수행하는 과정에서 인터럽트, 함수 순차적 실행
  • 커널 개입이 없어서, 통신이 효율적

다중 쓰레드

  • 하나의 프로세스에서 여러개의 thread가 실행될 수 있도록하는 기술
  • 다중 프로세스에서 각 프로세스는 독립된 메모리에서 각각 실행됨.
  • 각 프로세스간 변수, 자료구조 접근 x
    - stack만 따로 할당 받고, code, data, heap 영역 공유
    • 각 프로세스는 heap 공간을 공유하지는 않는데, 한 프로세스 내에서 쓰레드끼리의 힙 영역 공유가 가능함.
      => 한 쓰레드가 프로세스 자원 변경시, 다른 쓰레드도 그 변경결과를 알 수 있음.

쓰레드 운영 방식

커널 수준

  • 쓰레드 패키지를 운영체제 커널 자체에서 관리(커널캐입이 많아서 비효율)
  • 응용프로그램 이식성이 낮음.
  • 사용자를 해제하지 못하면 운영체제가 지원

사용자 수준

  • 쓰레드 패키지를 사용자 영역에 두고, 운영체제 커널은 단일 프로세스만 관리(커널개입이 적어서 효율적)
  • 운영체제는 run time system도 하나의 프로세스로 간주
  • cpu사용을 해제하지 못하면 시스템 중단 -> 커널로 전환없이 스레드 교환이 가능해서 오버헤드 줄어듬
    <커널 수준과 반대>
  • 이식성 높음
  • 문맥교환이 적어서 속도가 빠름
  • 독자적 알고리즘 필요, 구현 어려움
  • 대형시스템에 적합
profile
AI dev

0개의 댓글