멀티태스킹(1) - 동시성, 병렬성(Concurrency, Parallelism)

미남로그·2021년 8월 23일
0
post-custom-banner

25-2. 멀티태스킹(1)

동시성, 병렬성

관련 자료 출처: Concurrency vs. Parallelism

| Concurrency(동시성)


하나의 processor가 여러 가지 task를 동시에 수행하는 개념

| Parallel Execution


유사한 task를 여러 processor가 동시에 수행하는 것
병렬성의 효율을 극대화하는 것은 동시성이 요구될 때

| Parallel Concurrent Execution


여러 개의 프로세스가 1개의 task를 여러 개의 subtask로 쪼개어 동시에 병렬적으로 수행할 수 있기 때문

| Parallelism(병렬성)

응용 프로그램이 작업을 병렬로 처리할 수 있는 더 작은 하위 작업을 분할한다. 예를 들어, 동시에 여러 CPU에서 처리할 수 있다. 표면적으로는 유사해 보이더라도, Parallel Concurrent Execution과는 차이가 있다.

진정한 병렬 처리를 하려면 어플리케이션에 두 개 이상의 스레드가 실행되고 있어야 하며, 각 스레드는 별도의 CPU에서 실행되어야 한다.

위의 다이어그램은 4개의 하위 작업으로 분할되고, 하위의 4개 작업은 2개의 다른 CPU에서 실행되는 4개의 다른 스레드에 의해 실행된다. 즉, 이러한 하위 작업의 일부는 동시에 실행되고 (동일한 CPU에서 실행) 일부는 병렬로 실행된다. (다른 CPU에서 실행)

※ 중간 정리: 동시성은 단일 CPU가 동시에 여러 작업을 진행하는 방법을 나타내고, 단일 또는 여러 가지 작업을 다른 CPU에서 실행하는 것을 병렬이라고 하는 것 같다. 노드에서는 단순히 Concurrency와 Parallelism를 설명하고, 두 개를 동시에 적용하면 효율적이다 라고만 설명하고 있다.

그런데 위의 자료에서는 병렬을 둘 이상의 CPU가 둘 이상의 작업을 진행하는 경우와 둘 이상의 CPU가 같은 작업을 시행하는 경우를 나눠서 설명 중이다. 전자의 경우를 단순 병렬 동시 실행이라 그러고, 후자의 경우를 동시성과 병렬성을 모두 가진 경우를 설명한다. 단점으로는 컴퓨터의 CPU가 동시성, 병렬성으로만 충분히 바쁘게 유지되기 때문에 일부 이점이 손실될 수 있다.

| Concurrency and Parallelism Combinations

  1. 병렬이 아니면서 동시적일 수 있는가?
    어플리케이션은 동시적일 수는 있지만 병렬일 수는 없다. 겉보기엔 둘 이상의 작업을 진행하지만 이거는 task를 전환하는 것을 의미한다.

  2. 동시적이지 않으면서 병렬일 수 있는가?
    어플리케이션은 병렬일 수는 있지만 동시적이진 않다. 한 번의 하나의 작업에서만 작동하는 경우를 의미한다. 이 작업은 병렬로 처리될 수 있는 하위 작업으로 나뉜다.

  3. 동시성, 병렬성도 아닌 경우
    한 번에 하나의 작업만 작동하고 작업이 병렬 실행을 위해 하위 작업으로 분해되지 않는 다는 것을 의미한다. 이런 경우는 소규모 단일 작업의 경우.

| 근데 Thread(스레드)가 정확히 뭔지?

스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.

출처: 스레드(컴퓨팅)

profile
미남이 귀엽죠
post-custom-banner

0개의 댓글