ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스레드 정리
    추가 지식 2022. 5. 2. 00:33

    쓰레드를 공부하면서 함께 알아가야될 용어가 프로세스입니다.

    프로세스

    현재 CPU의 실행권을 가지고 있는 인스턴스를 의미합니다. 풀어서 설명하면 메모리에 적제되어 CPU 자원을 할당 받아서 실행되고 있는 상태를 말합니다. (자원을 공유하지 않는다)

    스레드

    프로세스가 할당받은 자원을 이용하는 실행의 단위이자 흐름, 개체라고 할 수 있습니다.
    프로세스에 하나의 제어 모델이 있으면 단일(싱글) 스레드이며, 다수의 제어 스레드를 가진다면 다중(멀티) 스레드라고 합니다. (멀티스레드의 경우 자원을 공유한다)

    단일 스레드

    프로세스가 동작하는 방식으로 자바스크립트가 대표적인 언어 입니다. (런타임은 싱글 스레드가 아님)

    장점

    1. 자원 접근에 대한 동기화
      1. 멀티 스레드의 경우 자원을 공유합니다. 그래서 자원의 동기화를 항상 고려해야 하지만 단일 스레드는 자원의 동기화를 신경쓰지 않아도 괜찮다.
    2. 문맥 교환 작업을 하지 않는다
      1. 단일 스레드로 동작하기 때문에 문맥을 교환할 필요가 없다.

    단점

    1. CPU 코어를 모두 활용하지 못한다.
      1. 싱글 스레드는 하나의 물리적 코어밖에 사용하지 못해서 멀티 코어 머신에서 CPU 사용을 최적화 할 수 없습니다. 최적화를 위해선 Cluster 모듈을 이용하여 여러 프로세스를 사용할수 있지만 앞서 프로세스의 자원 공유는 어렵습니다.

     

    멀티 스레드

    두개 이상의 스레드가 프로세스 내부에서 자원을 공유하여 작업을 수행합니다.

    장점

    1. 문맥 교환이 빠르다
      1. 프로세스에 비해 레지스터와 스택만 교환하고 공유 자원은 교환하지 않아도 돼서 더 빠르게 문맥 교환을 할 수 있습니다.
    2. CPU 활용
      1. 싱글스레드와 달리 다중 CPU 구조에서 각각의 스레드가 다른 프로세스에서 병렬로 수행될 수 있습니다.

    단점

    1. 임계 영역
      1. 둘 이상의 스레드가 동시에 실행하며 문제를 일으키는 영역이 생길 수 있다.
    2. 동기화 문제
      1. 둘 이상의 스레드에서 공유 자원에 접근할 때 다른 스레드에서 사용 중인 경우 값을 읽어 올 때 동기화 문제가 발생할 수 있습니다. ex) 한 프로세스 안에서 실행되는 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어 오거나 수정,삭제 할수도 있다.
    3. 하나의 스레드만 실행 중일때는 실행시간이 오히려 지연될 수 있다.
    4. 스레드 스케줄링을 신경 써야 합니다.
    5. 디버깅이 어렵습니다.

    '추가 지식' 카테고리의 다른 글

    일론 머스크의 생산성을 위한 법칙  (0) 2023.06.18
    2진법 계산  (0) 2022.05.16
    대칭키, 비대칭키, 공개키, 개인키 개념 정리  (0) 2022.03.20
    REST, REST API, RESTful 개념 정리  (0) 2022.03.13
    맥 단축키 모음  (0) 2022.02.28

    댓글

Designed by Tistory.