스레드(Thread)

GamzaTori·2024년 2월 26일
0

Operating System

목록 보기
5/7

스레드(Thread)

  • 스레드는 프로세스 내부에서 실행되는 작업의 단위
  • 하나의 프로세스에는 반드시 하나 이상의 스레드가 존재

스레드의 특징

  1. 프로세스의 Code, Data, Heap 영역을 공유하며 각각의 스레드는 별도의 Stack 영역을 갖는다.
  2. 스레드간 데이터 접근이 가능하다

스레드의 장점

  1. 응답성
    • 다른 스레드의 실행 시간이 길거나 입출력 요청 및 인터럽트 등으로 Blocking 되더라도 프로그램을 계속해서 실행할 수 있다
  2. 자원의 효율적인 사용
    • 프로세스 내의 리소스(Code, Data, Heap)의 공유로 인해 공유를 위한 메모리 공간, IPC 통신 등 추가적인 비용이 발생하지 않는다.
    • 또한 프로세스는 프로세스 생성을 위한 메모리와 자원, 프로세스 간 문맥교환(Context Switching) 비용이 발생하는 반면 스레드는 자원을 공유하기 때문에 자원 공유의 효율이 좋다
  3. 동시성(병렬성)
    • 여러 개의 스레드가 동시에 실행될 수 있어서 작업을 병렬적으로 처리할 수 있다.

스레드의 단점

  1. 데이터의 무결성 및 신뢰성
    • 여러 스레드에서 공유 자원에 대해 동시에 접근 및 수정할 경우 데이터의 무결성과 신뢰성을 보장할 수 없다.
    • 따라서 데이터의 수정 시 Lock, Atomic 등 조치가 필요하다.
    • 하지만 무분별하게 Lock을 사용할 시 오히려 성능 저하 및 데드락(Dead Lock)이 발생하여 프로그램이 종료될 수 있다
  2. 성능 저하
    • 무분별한 다수의 스레드 생성은 오히려 빈번한 문맥 교환으로 인해 성능이 저하될 수 있다
  3. 동기화
    • 여러 스레드가 공유 자원에 동시에 접근할 경우 경쟁 상태(Race Condition) 문제로 인해 결과값이 달라질 수 있다

멀티 스레드와 멀티 프로세스

멀티 스레드: 하나의 프로세스 내부에서 여러 개의 스레드가 동시에 실행되는 것

  • 스레드끼리는 서로의 메모리 공간(Thread Stack)을 공유하고 접근할 수 있으며 IPC 통신이 아닌 메모리 기반 통신을 사용하기 때문에 통신 속도가 빠르다

멀티 프로세스: 여러개의 독립적인 프로세스가 동시에 실행되는 것

  • 각 프로세스는 독립된 메모리 공간을 가지며 서로에게 접근하려면 IPC 통신을 사용해야 한다

IPC(Inter Process Communication): 프로세스간 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다

프로세스와 스레드의 차이

프로세스

  • 운영체제에게 자원을 할당받은 작업의 단위
  • 프로세스는 운영체제에게 각각의 독립된 메모리 공간(Code, Data, Stack, Heap)을 할당받는다.

스레드

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  • 스레드는 프로세스 내의 자원(Code, Data, Heap)을 공유하며 접근 할 수 있다
  • 스레드마다 별도의 Stack 공간을 갖는다.

프로세스란

profile
게임 개발 공부중입니다.

0개의 댓글