[운영체제] 스레드 - (1)

Yeongsan Son·2021년 7월 1일
0

개발 학습을 하다 보면 스레드라는 말을 많이 듣지만

스레드가 정확히 어떤 개념인지 알지 못하기 때문에 스레드에 대해서 알아보겠다.

스레드란?

  • Light Weight Process: 프로세스처럼 동작하지만 프로세스보다 작은 규모
  • 프로세스
    • 프로세스 간에는 각 프로세스의 데이터 접근이 불가 => IPC 사용
  • 스레드
    • 하나의 프로세스에 여러개의 스레드 생성 가능
    • 스레드들은 동시에 실행 가능
    • 프로세스 안에 있어서 프로세스의 데이터를 변수처럼 접근 가능

  • 스레드는 각기 실행이 가능한 stack이 존재
  • 스레드는 코드와 데이터를 공유

Multi Thread(멀티 스레드)


이미지출처

  • 소프트웨어 병행 작업 처리를 위해 Multi Thread를 사용

멀티 프로세싱과 Thread

  • 멀티 태스킹과 멀티 프로세싱

    • 멀티 태스킹: 1CPU/다중 프로세스
    • 멀티 프로세싱: 다중CPU/1프로세스 or 다중 프로세스
    • 멀티 프로세싱의 작업을 나누는 기술은 Thread를 여러 개 만들면 가능
  • 최근 CPU는 멀티 코어를 가지므로, Thread를 여러개 만들어, 멀티 코어 활용도를 높임

  • 현재의 운영체제는 multiple process와 multiple threads per process를 지원

PThread

  • POISX 스레드 (POSIX Threads)
    • Thread 관련 표준 API

Thread의 장점

  • 사용자에 대한 응답성 향상
    • 스레드를 나누어 실행하면 멀티태스킹이나 멀티프로세싱처럼 처리될 수 있음

  • 자원 공유 효율
    • IPC 기법과 같이 프로세스 간 자원 공유를 위해서 번거론 작업이 필요 없음
    • 프로세스 안에 있어서 프로세스의 데이터에 모두 접근 가능
    • 프로세스는 할당된 메모리 공간 안에 스레드가 들어감
  • 작업이 분리되어 코드가 간결
    • Case By Case 작성하기 나름

Thread의 단점

  • 스레드 중 한 스레드만 문제가 있어도 전체 프로세스에 영향을 끼침

    • 멀티 프로세스
    • 멀티 스레드
  • 스레드를 많이 생성하면, Context Switching이 많이 일어나 성능이 저하

  • 리눅스 OS에서는 Thread를 Process와 같이 다룸

    • 스레드를 많이 생성하면, 모든 스레드를 스케쥴링해야 하므로, Context Switching이 빈번히 발생

Thread와 Process 비교

  • 프로세스는 독립적이고 스레드는 프로세스의 서브셋
  • 프로세스는 각각 독립적인 자원을 가지고 스레드는 프로세스 자원 공유
  • 프로세스는 자신만의 주소 영역을 가지고 스레드는 주소 영역을 공유
  • 프로세스간에는 IPC 기법으로 통신하고 스레드는 변수처럼 데이터 사용 가능

이미지출처

profile
매몰되지 않는 개발자가 되자

0개의 댓글