(8) 스레드

탱구리·2025년 6월 18일

Computer System

목록 보기
8/10

스레드

CPU 스케줄러가 CPU에 전달하는 일 하나
CPU가 처리하는 작업의 단위: 프로세스로부터 전달받은 스레드
프로세스의 코드에 정의된 절차에 따라 CPU에 직접 요청을 하는 실행 단위

  • 프로세스 vs. 스레드
    프로세스끼리는 약하게 연결되어 있는 반면 스레드끼리는 강하게 연결되어 있음

    프로세스스레드
    작업 단위OS 입장에서의 작업 단위CPU 입장에서의 작업 단위
    정의실행 중인 프로그램프로세스 내 작업 단위
    메모리각각 독립적으로 사용같은 메모리 공간을 공유
    안정성충돌 시 다른 프로세스에 영향 X한 스레드 오류 시 전체 프로세스에 영향 可
    생성/관리 비용비교적 큼상대적으로 작음
    작업 단위OS 입장에서의 작업 단위CPU 입장에서의 작업 단위

멀티스레드

  • 멀티태스크 vs. 멀티스레드

    멀티태스크멀티스레드
    여러 개의 프로세스로 구성된 것하나의 프로세스에 여러 개의 스레드로 구성된 것

  • 멀티스레드 vs. 멀티태스킹 vs. 멀티프로세싱 vs. CPU 멀티 스레드

    멀티스레드멀티태스킹(시간 공유)멀티프로세싱CPU 멀티 스레드
    운영체제가 SW적으로 프로세스를 작은 단위의 스레드로 분할하여 운영하는 기법OS가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법 (하드웨어적인 방법)

  • 멀티스레드 vs. 멀티태스킹

    • fork( ) 시스템 호출로 여러 개의 프로세스를 만들면 필요 없는 정적 영역이 여러 개가 됨
    • 멀티스레드는 코드, 파일 등의 자원을 공유함으로써 자원의 낭비를 막고 효율성 향상
  • 멀티스레드의 장단점

    장점단점
    응답성 향상모든 스레드가 자원을 공유하므로 한 스레드에 문제가 생기면 전체 프로세스에 영향 끼침
    자원 공유
    효율성 향상
    다중 CPU 지원

멀티스레드 모델

사용자 스레드 (1 to N)

  • 사용자 프로세스 내에 여러 개의 스레드가 커널의 스레드 하나와 연결
  • 라이브러리가 직접 스케줄링을 하고 작업에 필요한 정보를 처리하기 때문에 문맥 교환이 필요 없음
  • 커널 스레드가 I/O 작업 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기하게 됨
  • 한 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 CPU를 동시에 사용할 수 없음

커널 스레드 (1 to 1)

  • 하나의 사용자 스레드가 하나의 커널 스레드와 연결
  • 독립적으로 스케줄링이 되므로 특정 스레드가 대기 상태에 들어가도 다른 스레드는 작업을 계속 할 수 있음
  • 커널 레벨에서 모든 작업을 지원하기 때문에 멀티 CPU를 사용할 수 있음
  • 하나의 스레드가 대기 상태에 있어도 다른 스레드는 작업을 계속할 수 있음
  • 커널의 기능을 사용하므로 보안에 강하고 안정적으로 작동
  • 문맥 교환 시 오버헤드 때문에 느리게 작동

멀티레벨 스레드 (M to N 모델)
사용자 스레드 + 커널 스레드

  • 커널 스레드가 대기 상태에 들어가면 다른 커널 스레드가 대신 작업을 하여 사용자 스레드보다 유연하게 작업 처리 가능
  • 커널 스레드를 같이 사용하므로 여전히 문맥 교환 시 오버헤드가 있어 사용자 스레드만큼 빠르지 X
  • 빠르게 움직여야 하는 스레드는 사용자 스레드로 작동하고, 안정적으로 움직여야 하는 스레드는 커널 스레드로 작동

0개의 댓글