동시성/병행성(Concurrency)와 병렬성(Parallelism)의 차이

hodu·2022년 10월 7일
0

python

목록 보기
12/17
post-thumbnail

이번에는 동시성(병행성)과 병렬성에 대해 정리해보도록 하겠다. 이해하면 쉽지만 이름이 비슷해서 헷갈릴 수 있으니 자주보자.

동시성/병행성(Concurrency)

  • 여러가지의 작업을 일부분만 수행하고 다음 작업에 넘어간다 → 또 다시 일부분만 수행하고 다음 작업 → 또 일부분 작업 다음 작업 → ….
  • 다른 작업으로 넘어가야 하기 때문에 context switching이 필요하다. context switching이란 현재 진행하고 있는 작업의 상태를 적용하고 다음 진행할 작업의 상태값을 읽어 적용하는 과정!
  • 이 context swiching에는 다양한 알고리즘이 있는데 매우 빠르기 때문에 사람이 느낄 때는 여러가지 작업을 동시에 수행하는 것 같은 느낌이 듦.
    하지만 “동시성”은 여러가지 일을 “동시에”하는 것이 아니라 한가지 일을 조금씩 나눠서 하는 것.
  • 1코어 N쓰레드

병렬성(Parallelism)

  • 프로세서 하나에 코어 여러개가 있어 각각 동시에 작업들을 수행함.
  • 물리적으로 구현이 되어있는 것
  • N코어 N개의 쓰레드가 동시에 작업

  • 여기서 위에있는게 병렬성(동시성), 아래에 있는게 병렬성

  • 위 : 자판기 1개를 가지고 2가지 큐를 가지고 나눠서 먹음(?)
    아래 : 자판개 2개를 가지고 각각의 큐를 나눠서 먹음

  • 즉, 병렬성은 정말 물리적인 이야기.

다음 게시글에는 프로세스와 쓰레드의 차이에 대한 내용을 정리하도록 하겠다.
(다음게시글 : https://velog.io/@heyoni/process-and-thread)

profile
안녕 세계!

0개의 댓글