아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • Linux
  • mysql
  • 전라도
  • C
  • Python
  • 정읍
  • 자바
  • Dungeons & Dragons
  • Android
  • jsp
  • 해킨토시
  • javascript
  • 아이폰
  • Ruby on Rails
  • 던젼 앤 드래곤즈
  • CSS
  • 여행
  • Java
  • TRPG
  • 안드로이드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Devlopment/Reactive, Concurrency

동시성(Concurrency) vs 병렬성(Parallelism)

2016. 11. 17. 18:10
반응형

동시성(Concurrency)


  • 논리적인 용어
  • 동시에 실행되는 것처럼 보이는 것
  • 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식
    • 하지만 멀티 코어에서도 동시성은 사용 가능함
    • 코어 수에 따른 방식보다는 작업 방식에 대한 부분인데 굳이 이해하기 좋고 좁게 보자면 이렇게 이해할 수 있을꺼 같음
  • 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질
  • 동시성을 이용한 싱글 코어의 멀티 태스킹은 각 스레드들이 병렬적으로 실행되는 것처럼 보이지만 사실은 번갈아가면서 조금씩 실행되고 있는 것



병렬성(Parallelism)


  • 물리적인 용어

  • 실제로 작업이 동시에 처리되는 것

  • 멀티 코어에서 멀티 스레드를 동작시키는 방식
  • 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질
  • 병렬성은 데이터 병렬성(Data parallelism)과 작업 병렬성(Task parallelism)으로 구분


데이터 병렬성

  • 같은 작업을 병렬 처리하는 것
  • 전체 데이터를 나누어 서브 데이터들로 만든 뒤, 서브 데이터들을 병렬 처리하여 작업을 빠르게 수행하는 것
  • 자바 8에서 지원하는 병렬 스트림이 데이터 병렬성을 구현한 것
  • 서브 데이터는 멀티 코어의 수만큼 쪼개어 각각의 데이터들을 분리된 스레드에서 병렬 처리함

 

작업 병렬성

  • 서로 다른 작업을 병렬 처리하는 것
  • Example) 웹 서버 (각각의 브라우저에서 요청한 내용을 개별 스레드에서 병렬로 처리함)




동시성(Concurrency) vs 병렬성(Parallelism)



Concurrency in golang



이미지 출처 (http://www.javaworld.com/article/2076774/java-concurrency/programming-java-threads-in-the-real-world--part-1.html)


사실 동시성과 병렬성을 단순한 설명으로만 들으면 잘 이해가 되지 않는다. 비슷한 말 같은데 무슨 차이가 있는지 말이다.

위의 정리해놓은 글을 보면 간단해보이는데 잘 이해가 되지 않는다면 아래 표를 통해 다시 정리하고 이해해보면 좋을꺼같다.


 

 동시성(Concurrency)

 병렬성(Parallelism)

 용어 차이

 논리적

 물리적

 뜻

 동시에 실행되는 것처럼 보이는 것

 실제로 작업이 동시에 처리되는 것

 코어 환경

 싱글 코어, 멀티 코어에서 가능

 멀티 코어에서만 가능






Reference

[1] 동시성과 병렬성 (http://sunphiz.me/wp/archives/1716)

[2] 동시성과 병렬성 (http://yolojeb.tistory.com/10)


반응형
저작자표시 비영리 변경금지 (새창열림)

'Devlopment > Reactive, Concurrency' 카테고리의 다른 글

리액티브란 무엇인가? (What's in a Name : Reactive)  (0) 2017.01.10
리액티브 프로그래밍 대 리액티브 시스템 (Reactive Programming vs Reactive Systems)  (0) 2017.01.09
리액티브 스트림(Reactive Streams)  (0) 2017.01.04
데이터 스트림  (0) 2016.12.29
동시성 관련 분류  (0) 2016.12.27
vert.x VS Akka  (0) 2016.11.22
리액티브 프로그래밍이란 무엇입니까? What is reactive programming?  (0) 2016.11.21
1. 소프트웨어 패러다임 - 성능 그리고 동시성  (0) 2016.11.17
synchronous, asynchronous, blocking, non-blocking  (0) 2016.10.31
Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)  (0) 2016.10.31
    'Devlopment/Reactive, Concurrency' 카테고리의 다른 글
    • 리액티브 프로그래밍이란 무엇입니까? What is reactive programming?
    • 1. 소프트웨어 패러다임 - 성능 그리고 동시성
    • synchronous, asynchronous, blocking, non-blocking
    • Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)
    아틴
    아틴

    티스토리툴바