728x90

스레드

컴퓨터 프로그램의 실행 단위로, 하나의 프로세스 내에서 독립적으로 실행되는 경량의 실행 흐름을 말합니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이들 스레드는 같은 주소 공간을 공유합니다. 이것은 프로세스 안에서 데이터를 고유하는 것이 상대적으로 쉽고 빠르게 이루어지게 하며, 다중 스레드를 사용함으로써 병렬 처리가 가능해집니다.

프로세스의 실행 단위이기 때문에 스레드 간의 전환은 프로세스 간의 전환보다 훨씬 빠릅니다. 이로 인해 멀티 스레드 프로그래밍은 일반적으로 멀티 프로세스 프로그래밍보다 더 높은 성능과 효율성을 제공할 수 있습니다.

스레드 활용

  • 병렬 처리 : 여러 작업을 동시에 처리하여 시간을 절약하거나 성능을 향상시킵니다. 특히 멀티 코어 프로세서에서 각 스레드는 독립적으로 실행되어 병렬 처리가 가능합니다.
  • 응답성 향상 : 일부 스레드가 블로킹되거나 작업이 지연될 경운에도 다른 스레드가 동작하면서 프로그램의 응답성을 향상시킬 수 있습니다.
  • 동시성 : 다수의 사용자 또는 작업이 동시에 실행되어야 하는 경우, 멀티 스레드를 활용하여 동시성을 구현합니다.

스레드 프로그래밍은 동시성 관련 문제를 해결해야 하는 어려움이 있습니다. 여러 스레드가 동시에 공유 자원에 접근할 경우, 레이스 컨디션과 같은 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 동기화 기법과 락을 사용하여 스레드 간의 상호 작용을 조율해야 합니다.

[ 출처] andrew.cmu.edu/course/14-712-s20/applications/ln/14712-l5.pdf

동시성

컴퓨터 프로그램에서 여러 작업이 동시에 실행되는 것을 의미합니다. 동시성은 실제로 여러 작업이 동시에 동작하는 것처럼 보이게 하지만, 하나의 프로세서에게 번갈아가며 작업들을 실행하는 것일 수도 있습니다. 동시성은 프로그램의 성능과 응답성을 향상시키는 데 도움이 됩니다.

동시성이 사용될 때

  • I/O 바운드 작업 : 입출력이 많이 발생하는 작업에서는 작업의 대부분 시간이 I/O 연산에 소요됩니다. 이런 경우에 다른 작업들을 실행하면서 I/O 대기 시간을 줄여 전체적인 성능을 향상시킬 수 있습니다.
  • 사용자 인터페이스 응답성 : 사용자와의 상호작용이 필요한 프로그램에서는 사용자 입력을 처리하는 동안 다른 작업들을 동시에 실행하여 응답성을 향상시킵니다. 이를 통해 프로그램이 더 빠르게 반응하는 것처럼 느껴집니다.
  • 병렬 처리의 제약 : 하드웨어적인 제약으로 인해 모든 작업을 병렬 처리할 수 없는 경우가 있습니다. 이러한 경우에 동시성을 이용하여 여러 작업을 조율하고 실행 시간을 최대한 줄일 수 있습니다.

병렬성

여러 작업이 동시에 실제로 동시에 실행되는 것을 의미합니다. 즉 여러 개의 프로세서 또는 코어가 사용되어 각 작업이 별도의 실행 단위로 동시에 처리되는 것을 말합니다. 병렬성은 동시성과 비슷해 보이지만, 실제로 작업들이 동시에 병렬적으로 실행되는 차이점이 있습니다. 병렬성은 다중 코어 프로세서 시스템에서 주로 이용됩니다. 각 코어는 독립적으로 작업을 수행할 수 있으므로 병렬 처리를 통해 여러 작업을 통시에 실행하고 처리 시간을 줄일 수 있습니다. 이러한 접근 방식은 특히 대규모 계산, 데이터베이스 처리, 그래픽 렌더링 등에 유용합니다.

멀티 스레드 : 하나의 프로세스 내에서 여러 개의 스레드를 생성하여 각 스레드가 독립적으로 작업을 수행하게 합니다. 멀티 스레드는 병렬 처리를 가능하게 합니다.

분산 처리 : 여러 대의 컴퓨터 또는 서버를 사용하여 작업을 분산 처리합니다. 각 컴퓨터는 독립적인 계산을 수행하며, 결과를 통합하여 전체 작업을 완료합니다.

SIMD : 하나의 명령어로 여러 개의 데이터를 동시에 처리하는 방식으로, 벡터 연산 등에서 사용됩니다.

GPU 가속화 : 그래픽 처리 장치를 활용하여 병렬 처리를 수행하는 기술로, 병렬 처리에 특화된 GPU를 사용하여 계산 집약적인 작업을 가속화할 수 있습니다.

728x90

'BackEnd > OS에 대한 전반적인 지식' 카테고리의 다른 글

입출력 I/O관리  (0) 2023.08.16
프로세스 간 통신  (0) 2023.08.16
메모리 관리  (0) 2023.08.16