[개념 콕] 동시성과 병렬성

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
May 29, 2024
[개념 콕] 동시성과 병렬성
✍🏼
개발을 시작하시는 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 

동시성 (Concurrency)

동시성이란?

동시성은 하나의 시스템이 여러 작업을 동시에 처리하는 것처럼 보이지만, 실제로는 한 번에 하나의 작업만을 처리하는 방식을 의미합니다.
하나의 작업 내에서 여러 개의 서브 태스크(subtask)를 동시에 처리하거나 여러 개의 스레드를 생성하여 하나의 작업을 분할하여 처리 혹은 비동기적으로 여러 개의 작업을 처리합니다. 따라서 동시성은 작업이 독립적이지 않고 서로 의존성을 가지는 경우에 적합합니다.
 

동시성의 특징

  • 여러 작업을 동시에 처리한다고 느끼게 합니다.
  • 실제로는 한 번에 하나의 작업만을 처리합니다.
  • 대개 스레드, 비동기 프로그래밍 등을 사용하여 구현됩니다.
  • 작업이 빠르게 완료될 수 있습니다.
 

동시성의 활용

  • 동시성은 주로 사용자 인터페이스, 네트워크 서버, 데이터베이스 시스템 등에서 사용됩니다.
  • 사용자는 여러 작업을 동시에 처리하면서 효율적으로 시스템을 사용할 수 있습니다.
  • 예를 들어, 웹 브라우저는 여러 탭을 열어서 동시에 여러 웹페이지를 로드하면서 사용자가 다양한 작업을 수행할 수 있도록 합니다.
 

동시성의 예시

  • 고객 서비스 센터에서 전화 상담사가 여러 명의 고객과 동시에 대화하면서 한 명씩 문제를 해결합니다.
  • 요리사가 여러 요리를 동시에 조리하면서 한 번에 한 요리를 완성합니다.
 
 

멀티태스킹 (Multitasking)

멀티태스킹이란?

멀티태스킹은 운영 체제에서 하나의 컴퓨터에서 여러 개의 프로그램이 동시에 실행될 수 있는 기능을 의미합니다.
이는 CPU 시간을 분할하여 여러 프로그램이 동시에 실행되는 것처럼 보이도록 합니다. 멀티태스킹은 주로 운영 체제에서 제공되며, 여러 개의 프로세스나 스레드를 동시에 실행하고 관리하는 방법으로 구현됩니다.
 

멀티태스킹의 특징

  • 여러 개의 프로세스 또는 스레드를 동시에 실행하고 관리합니다.
  • CPU 시간을 조절하여 여러 작업이 동시에 실행될 수 있도록 합니다.
  • 운영 체제에서 제공되는 기능입니다.
 

멀티태스킹의 활용

  • 멀티태스킹은 주로 운영 체제에서 제공되며, 여러 프로그램이 동시에 실행될 수 있는 환경을 제공합니다.
  • 사용자는 여러 작업을 동시에 처리하면서 효율적으로 시스템을 사용할 수 있습니다.
 

멀티태스킹의 예시

  • 한 명의 사람이 동시에 여러 애플리케이션을 실행하면서 작업을 수행합니다.
  • 문서 작성 프로그램을 사용하면서 음악을 듣거나, 이메일을 확인합니다.
 
 

병렬성(Parallelism)

병렬성이란?

병렬성은 실제로 여러 작업을 동시에 처리하는 것을 의미합니다.
여러 CPU 또는 코어를 사용하여 여러 작업을 병렬로 처리할 수 있습니다. 병렬처리기는 여러 개의 CPU 또는 CPU 코어가 있어서, 각각의 작업이 서로 다른 CPU 또는 CPU 코어에서 병렬적으로 실행됩니다. 실행 시간을 줄이거나 처리량을 늘리는 데에 사용됩니다.
 

병렬성의 특징

  • 여러 개의 CPU 또는 코어를 사용하여 작업을 병렬로 처리합니다.
  • 작업이 독립적으로 실행되며 서로 영향을 주지 않습니다.
  • 주로 병렬처리기에서 실행됩니다.
 

병렬성의 활용

  • 병렬성은 대규모 데이터 처리나 과학 계산과 같이 병렬로 처리할 수 있는 작업에 활용됩니다.
  • 멀티코어 컴퓨터에서 병렬처리를 사용하여 실행 시간을 줄이거나 처리량을 늘릴 수 있습니다.
 

병렬성의 예시

  • 공장의 생산 라인에서 여러 대의 기계가 제품을 동시에 가공하고 조립하는 것과 비슷합니다.
  • 영화를 한 장면씩 다른 스튜디오에서 병렬적으로 촬영하는 것과 비슷합니다.
 

동시성 vs 멀티태스킹 vs 병렬성

동시성
멀티태스킹
병렬성
개념
하나의 작업 내에서 여러 개의 서브 태스크를 동시에 처리하는 방식
운영 체제에서 하나의 컴퓨터에서 여러 개의 프로그램이 동시에 실행될 수 있는 기능
실제로 여러 작업을 동시에 처리하는 방식
독립성
독립 X, 작업이 서로 의존성을 가짐
프로세스 또는 스레드 간의 독립성을 가짐
독립적으로 작업 실행
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 개발 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 이지선 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
Share article
Subscribe to our newsletter
RSSPowered by inblog