땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • ㅗ
  • 이것이 리눅스다 with Rocky Linux9
  • D
  • E
  • I

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

동시성(Concurrency)와 병렬성(Parallelism)
CS

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

2021. 12. 28. 19:28

프로그램을 구현했는데 성능이 부족한 경우가 종종 발생한다.

 

이런 경우 알고리즘 개선을 통해서 성능을 개선할 수도 있지만 더이상 알고리즘 개선이 어려운 경우

동시성과 병렬성을 통해 성능 향상을 시킬 수 있다.

 

동시성(Concurrency)

흔히 말하는 멀티태스킹이다

멀티태스킹에서 여러분은 한 순간에 하나의 일을 하고 있지만 이를 아주 빨리 번갈아 할 수 있지만 마치

동시에 처리하는 것처럼 보임

A,B,C,D가 있을 때 일을 잘게 분할한 후 이를 조금씩 번갈아 가면서 처리하는 방식을 의미

병렬성(Parallelism)

동시성이 사실 한 순간에 하나의 일만을 처리한 것과 달리 병렬성은 진짜로 동시에 여러 개의 일을 처리

예를 들어 CPU에 멀티코어가 달려서 여러개의 테스크(일)을 처리할 수 있는 것이다.

지금까지 설명을 들어보면 병렬성을 사용하는 것이 좋아보인다. 하지만 항상 그런것은 아니다.

 

일단 병렬성은 물리적인 코어의 개수에 제한이 있다. 보통 일반 사용자라면 쿼트 코어(4개 코어) CPU를 주로 사용하고 있으며 많아야 8개 정도다. 즉, 한 순간에 처리할 수 있는 일의 양이 제한적

만약 어떤 작업이 I/O 위주의 작업이라면 실제로 CPU가 처리해야하는 시간은 상대적으로 적으며 대부분은 대기하는데 소모한다. 따라서 I/O 위주의 작업이 많다면 이때에는 동시성을 사용하는 편이 더 유리

'CS' 카테고리의 다른 글

리눅스 Git 설치 밎 사용법  (1) 2022.01.21
.gitignore을 이용하여 commit하기  (0) 2022.01.11
호스팅이란 무엇인가  (0) 2021.12.28
DNS와 작동 원리  (0) 2021.12.28
브라우저의 작동 원리  (0) 2021.12.27
    'CS' 카테고리의 다른 글
    • 리눅스 Git 설치 밎 사용법
    • .gitignore을 이용하여 commit하기
    • 호스팅이란 무엇인가
    • DNS와 작동 원리
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바