[OS] 스레드(Thread)

귀찮Lee·2023년 4월 12일
0

Operating System

목록 보기
11/14

◎ 스레드 vs 프로세스

  • 스레드 vs 프로세스

    • 스레드 : CPU 스케줄러가 CPU에 전달하는 일 하나 (CPU의 작업 단위)
    • 프로세스 : 실행을 위해 메모리에 올라온 프로그램
  • 차이점

    • 운영체제의 작업단위는 프로세스, CPU의 작업 단위는 스레드
    • 프로세스끼리는 약하게 결합되어 있지만 스레드끼리는 강하게 연결되어 있음
    • 한 프로세스 내 여러 스레드는 코드, 파일등의 자원을 공유함으로써 자원의 낭비를 막고 효율성을 향상함

◎ Multi- 의 차이

  • 멀티 스레드 : 한 프로세스 내 작업을 여러개의 스레드로 분할 함으로서 작업의 부담을 줄임
  • 멀티 테스킹 : 운영체제가 CPU의 작업을 줄 때, 시간을 잘게 나누어 배분하는 기법
  • 멀티 프로세싱 : CPU를 여러개 사용하여 여러 개의 스레드를 동시에 처리
  • CPU 멀티 스레드 : 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
    • 하드웨어적 방법으로 하나의 CPU에서 여러개의 스레드를 동시에 처리하는 병렬 처리 기법

◎ 멀티 테스킹 vs 멀티 스레드

멀티 테스킹멀티 스레드
fork() 시스템 호출로 프로세스를 복사함객체를 확장하여 스레드를 만듦
코드 영역, PCB, 데이터 영역의 일부가 메모리에 중복됨코드, 파일 등의 자원을 공유
fork() 한 프로세스의 문제가 생겨도 다른 프로세스에 영향을 미치지 않음한 스레드에서 오류가 발생한다면 다른 스레드에도 영향을 미침

◎ 멀티 스레드의 장단점

장점

  • 응답성 향상
  • 자원 공유
  • 효율성 향상
  • 다중 CPU 지원

단점

  • 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침

◎ 멀티 스레드 모델

  • 스레드의 종류

    • 커널 스레드 : 커널이 직접 생성하고 관리하는 스레드
    • 사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드
  • 사용자 레벨 스레드

    • 사용자 프로세스 내 여러개의 스레드가 커널의 스레드 하나와 연결
    • 라이브러리가 직접 스케줄링 및 처리를 함
      → 문맥 교환이 필요 없음
    • 커널 스레드가 입출력 작업을 위해 대기하면, 모든 사용자 스레드가 같이 대기함
    • 한 프로세스의 타임 슬라이스를 여러 스레드가 공유
      → 여러 개의 CPU를 동시에 사용할 수 없음
  • 커널 레벨 스레드

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

    • 사용자 레벨 스레드, 커널 레벨 스레드 혼합 방식 (M to N)
      • 특정 스레드가 대시 상태에 들어가도 다른 스레드는 계속 작업 가능
    • 문맥 교환시 오버 헤드 발생
      • 사용자 레벨 스레드만큼 빠르지 않음
    • 빠르게 움직여야 하는 스레드는 사용자 레벨 스레드로, 안정적으로 움직여야 하는 스레드는 커널 레벨 스레드로 작동함
profile
장비를 정지합니다.

0개의 댓글