스레드와 동시성

이지수·2022년 10월 31일
0

Backend Loadmap

목록 보기
18/22
post-thumbnail

스레드(Thread)

스레드는 프로세스 내에서 실행되는 단위, CPU의 기본 단위를 말합니다.

단일 스레드

프로세스가 시작되면 메모리와 리소스가 할당됩니다. 프로세스의 각 스레드는 해당 메모리와 리소스를 공유합니다.

단일 스레드 프로세스에서 프로세스는 하나의 스레드를 포함합니다. 프로세스와 스레드는 동일하며 한 가지만 발생합니다.

다중 스레드

하나의 프로세스에서도 여러 개의 스레드를 통해 병렬적으로 작업을 처리할 수 있습니다.

  • Responsiveness : 응답성의 향상
  • Resource Sharing : 프로세스가 리소스를 공유하는 비용보다 훨씬 적은 비용으로 스레드 간의 리소스 공유가 가능
  • Economy : 프로세스 생성 비용보다 더 저렴한 비용으로 스레드 생성 가능 + context switching 또한 스레드 간의 스위칭이 더 저렴함
  • Scalability : multiprocessor 아키텍쳐에서 높은 성능

스레드 vs 프로세스

프로세스스레드
프로세스는 무거운 작업입니다.스레드는 더 가벼운 작업입니다.
각 프로세스에는 고유한 메모리 공간이 있습니다.스레드는 자신이 속한 프로세스의 메모리를 사용합니다.
프로세스 간의 메모리 주소가 다르기 때문에 프로세스 간 통신이 느립니다.스레드 간 통신은 동일한 프로세스의 스레드가 자신이 속한 프로세스와 메모리를 공유하기 때문에 프로세스 간 통신보다 빠를 수 있습니다.
프로세스 간의 컨텍스트 전환은 더 어렵습니다.동일한 프로세스의 스레드 간 컨텍스트 전환이 더 쉽습니다.
프로세스는 다른 프로세스와 메모리를 공유하지 않습니다.스레드는 동일한 프로세스의 다른 스레드와 메모리를 공유합니다.

동시성과 병렬성

동시성(Concurrency)

  • 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식
  • 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질
  • 동시에 실행되는 것처럼 보이는 것
  • 싱글 코어에서 멀티 스레드를 이용해 동시성을 구현하는 일부 케이스에 대한 내용, 멀티 코어에서 멀티 스레드를 이용하여 멀티 스레드를 이용하여 동시성을 만족할 경우에는 실제 물리적 시간으로 동시에 실행된다.

병렬성(Parallelism)

  • 멀티 코어에서 멀티 스레드를 동작시키는 방식
  • 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질
  • 병렬성의 핵심은 물리적인 시간에 동시에 수행되는 것, 멀티 코어에 포커스가 맞춰져서는 안 된다.
  • 네트워크 상의 여러 컴퓨터에게 분산 작업을 요청하는 분산 컴퓨팅

참고
What’s the Diff: Programs, Processes, and Threads
동시성(Concurrency) vs 병렬성(Parallelism)

0개의 댓글