개발일지

병렬프로그래밍이란

윤승임 2023. 4. 6. 14:03

하나의 작업을 여러 개의 작은 작업으로 분할하고,
이 작은 작업들을 동시에 실행하여
전체적으로 더 빠른 처리를 가능하게 하는 프로그래밍 기법

 

병렬프로그램은 멀티코어 프로세서가 등장하면서 매우 중요해졌다.

 

병렬 프로그래밍은 다양한 방법으로 구현할 수 있다.
그 중 가장 기본적인 방법은 프로세스(Process)와 스레드(Thread)를 사용하는 것입니다.
프로세스는 독립적인 메모리 공간을 갖고 실행되는 프로그램 단위이며,
스레드는 프로세스 내에서 실행되는 실행 단위이다.
스레드는 프로세스 내에서 메모리 공간을 공유하기 때문에, 스레드 간의 통신이 더욱 효율적으로 이루어진다.

 

데이터를 분할하여 병렬로 처리하기 때문에 큰 데이터를 처리할 때 빠른 속도를 보인다.
이 방식을 사용하면 대량의 데이터를 더 빠르게 처리할 수 있기 때문에, 빅데이터 분야에서 매우 중요한 기술이다.

 

그러나..

병렬로 실행되는 작업 간에는 상호작용과 동기화 문제가 발생할 수 있다.

병렬 실행이 복잡성을 증가시키기 때문에 디버깅이 어려울 수 있다.

메모리 공유 문제가 발생할 수 있으며, 이는 데드락(Deadlock)과 같은 문제를 발생시킬 수 있다.

 

따라서 병렬 프로그래밍을 구현할 때에는 이러한 문제점을 고려하여 적절한 방법을 선택하고,
병렬화의 장단점을 고려하여 최적화된 알고리즘을 설계해야 한다.

 

context switching

코루틴