동시성 프로그래밍과 병렬성 프로그래밍

MyeonghoonNam·2021년 2월 10일
0
post-custom-banner
  1. 프로세서, 코어, 프로그램, 프로세스, 스레드의 개념 파악
  2. 동시성과 병렬성의 차이 이해

프로세서

컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리회로이다.
대표적으로 CPU(중앙처리장치)를 말하며 컴퓨터의 기억, 연산, 제어의 3대 기능을 종합하는 역할이다. 이러한 CPU의 기능을 보조하는 프로세서는 보조프로세서라고 한다.

코어

코어는 각종 연산을 담당하는 연산회로이며 CPU의 핵심요소이다. 싱글코어는 연산회로가 하나인 것을 말하고 듀얼코어는 연산회로가 2개가 내장되어있음을 뜻한다. 마찬가지로 멀티코어는 여러개의 연산회로를 내장함(일반적을 3개 이상의 코어)을 말한다.

프로그램과 프로세스, 스레드

  • 프로그램 : 일반적으로 보조기억장치에 저장된 실행코드를 말한다. 즉, 생명이 없는 상태.
  • 프로세스 : 운영체제 위에서 연속적으로 실행되고 있는 프로그램 혹은 프로그램의 상태가 실행되는 작업의 단위.
  • 스레드 : 하나의 프로세스 내에서 실행되는 작업흐름의 단위. 부수적인 프로세스

동시에 여러개의 프로세스를 운용하는 것을 멀티태스킹이라 하며 이는 운영체제에서 담당하게된다. 반면에 하나의 프로세스에서 다수의 스레드를 운용하는 것을 멀티스레딩이라 한다.

멀티태스킹 vs 멀티스레딩

멀티태스킹 : 하나의 프로세서 상에서 운영체제가 여러 개의 프로세스를 번갈아가며 하나의 프로그램의 기능들을 수행해나가는 개념. 여기서 프로세서가 여러 프로세스를 돌아가며 작업을 처리하는 과정을 Context Switching이라 한다.

// Context Switching : 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다

멀티스레딩 : 하나의 프로세스를 다수의 스레드로 구분하여 프로세스의 자원을 공유하며 기능수행 능력을 향상시키는 개념

공통점 : 아주 짧은 시간 간격을 두고 여러 개의 작업 흐름들을 번갈아 실행하므로 동시에 여러 개의 작업들이 실행되어지는 것처럼 보인다.(동시성 프로그래밍)

차이점
1. 멀티태스킹은 동시에 여러 개의 프로그램을 실행시키는 것처럼 보이고, 멀티스레딩은 하나의 프로그램을 여러 개의 기능으로 나누어 이를 동시에 실행시시는 것처럼 보인다는 점이 다르다.
2. 멀티태스킹은 운영체제가 알아서 관리해주지만, 멀티스레딩은 프로그래머가 프로그램 설계시에 직접 구현을 해야한다.
3. 멀티태스킹은 각각의 프로세스가 독립적인 메모리와 공간을 가지지만 멀티스레딩은 각각의 스레드가 공통된 프로세스의 자원들을 공유한다.


비동기 프로그래밍

프로그램의 주 실행 흐름을 멈추어서 기다리는 부분 없이 바로 다음 작업을 실행할 수 있게 하는 방식이다.
즉, 코드의 실행 결과처리를 별도의 공간에 맡겨둔 뒤 결과를 기다리지 않고 바로 다음 코드를 실행하는 병렬처리 방식.

동시성 프로그래밍

논리적인 용어이며 싱글코어 환경에서 멀티태스킹을 위해 시간을 분할해서 여러 프로세스와 스레드를 번갈아가며 실행한다. 이 과정이 너무 빠르다 보니 동시에 실행되는 것처럼 보이는 것을 말한다. 싱글 코어(멀티 코어에서도 가능)에서 멀티스레드를 동작시키키 위한 방식이다.

병렬성 프로그래밍

물리적으로 정확히 동시에 실행이 되는 것을 말한다. 멀티 코어에서 멀티 스레드를 실행시키는 방식이다.

동시성과 병렬성의 차이

동시성 프로그래밍과 병렬성 프로그래밍 모두 비동기로 동작을 구현할 수 있지만, 그 동작 원리가 다릅니다.

profile
꾸준히 성장하는 개발자를 목표로 합니다.
post-custom-banner

0개의 댓글