본문 바로가기
개발

동시성과 병렬성

by 사과넹 2024. 4. 21.
반응형
  • 두 개념의 차이는 시간의 관점에서 봐야 한다.
    • Concurrent computing : 여러 계산이 동시에 실행되는 컴퓨팅의 한 형태
    • Parallel computing : 많은 계산 또는 프로세스 실행이 동시에 수행되는 계산 유형
  • 사전적으로는 동의어로 취급한다고 한다.
  • 쉽게 말하면 병렬성은 태스크들이 물리적으로 같은 시간에 진행되고 있다는 말이고, 동시성은 태스크들이 물리적으로 같은 시간에 진행되는 것은 아니나 논리적으로는 같은 시간에 진행되고 있다는 말이다.
    • 병렬성은 동시성의 상위 집합이며, 병렬성을 만족하면 동시성이 만족되지만 역은 성립하지 않는다.
  • 동시성: 싱글 코어에서 멀티 쓰레드를 동작
  • 병렬성: 멀티 코어에서 멀티 쓰레드를 동작

  • 위의 그림을 보면 싱글 코어에서는 Context Switch가 일어난다.
    • 이는 작업이 바뀔 때마다 발생되는 것이고, 이런 교환때문에 어떤 작업 요청 후 기다리는 시간동안 다른 작업을 처리할 수 있다.

 

프로세스와 스레드의 차이

  • 프로세스?
    • OS로부터 할당 받은 작업의 단위
    • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
    • 연속적으로 실행된다?
      • 프로세스가 종료되기 전까지 어떤 작업을 계속 실행할 수 있는 상태이다.
    • 실행 코드로 된 프로그램이 하드디스크에 저장되어 있고, 이것을 실행하면 메모리 공간을 할당받아 프로세스로 실행되는 것이다.
    • 멀티 프로세스 환경에서 각 프로세스는 독립적이다. 각자의 메모리를 할당받아 사용하고 있기 때문!
      • 프로세스 간의 자원 공유는 쉽지 않다..
  • 스레드?
    • 프로세스 내에서 실행되는 하나의 실행 단위
    • 멀티 스레드는 프로세스 내의 메모리를 공유해 사용한다. 즉, 스레드끼리 자원 공유가 쉬워진다.
      • 스레드 간의 통신이 쉽고, Context Switching 시간이 짧다.
    • 단점은?
      • 하나의 메모리 공간을 공유하기 때문에 각 스레드끼리 자원을 점유하려고 경쟁하는 현상이 발생한다. 따라서 스레드끼리 무한정 대기하게되는 교착상태에 빠질 수 있어 동기화처리가 중요하다.
      • 스레드끼리 공유되는 상황이 쉽기 때문에 하나의 스레드가 오류로 죽게되면 다른 스레드에 영향을 미칠 수 있다.

 

코어

  • CPU 내부의 부품 중 하나
  • 프로세서가 하는 일을 분담한다.
    • 프로세서: CPU를 보조하며 연산, 제어의 핵심부분을 담당한다.
    • 프로세스라는 용어가 점차적으로 CPU 용어를 대체해왔다고 한다.
  • 일반적으로 프로세스에는 4개의 코어가 있다. → 4명이서 분담하여 일한다.

멀티 프로세스라던가, 멀티 스레드는 처리 방식의 일종이고, 싱글 코어라던가 멀티 코어는 하드웨어 측면에서 말하는 개념이다.

728x90
반응형