-
동시성(concurrentcy) vs 병렬성(parallelism)컴퓨터 과학/운영체제 2021. 8. 11. 15:41
동시성
동시성은 동시에 작동하는 것처럼 보이는 것에 가깝습니다. 하나의 코어에서 멀티스레드로 여러 프로그램이 돌아갈 때 CPU는 인간이 인지할 때 동시에 작동하는 것처럼 느껴질 만큼 빠르게 여러 프로그램들을 다녀가면서 태스크를 수행합니다. 가벼운 프로그램이라면 크게 상관 없을지도 모르지만 프로그램이 크고 무겁다면 이야기가 다릅니다.
메모리가 무한대가 아니며 메모리 하나당 하나의 프로그램만 돌릴 수 있다고 했을 때 CPU가 할당된 프로그램(혹은 프로세스)이 바뀔 때마다 메모리와 레지스터에 올라와 있는 데이터를 지금 실행 중인 프로그램의 것으로 변경해야 하고 그 전에 있던 내용은 보조 메모리 등으로 옮겨야 하기 때문입니다. 이를 컨텍스트 스위칭이라고 합니다. 멀티프로세서의 컨텍스트 스위칭보다는 멀티스레드의 컨텍스트 스위칭이 오버헤드가 적긴 하지만 성능 저하의 원인입니다.
병렬성
병렬성은 실제로 동시에 동작하는 것을 말합니다. 멀티 코어 환경에서 동작합니다. 멀티스레드가 병렬 처리된다는 것은 보장할 수 없습니다. 이는 OS의 스케줄러가 결정하기 때문입니다. 병렬성은 데이터 병렬성과 작업 병렬성으로 나눌 수 있습니다.
데이터 병렬 처리
배열에 들어 있는 연속적인 100개의 데이터를 처리해야 한다면 루프를 100번 돌아야 하지만, 1회당 4개의 데이터를 병렬처리할 수 있다면 루프를 25번 돌면 됩니다.
태스크 병렬 처리
데이터 한 묶음을 나눠처리하는 데이터 병렬 처리와 달리, 태스크 병렬 처리는 여러가지 태스크를 병렬적으로 처리하는 것을 말합니다.
>> 출처
'컴퓨터 과학 > 운영체제' 카테고리의 다른 글
컨텍스트 스위칭 (0) 2022.01.09 스케줄링 알고리즘 (0) 2021.08.18 페이징 정리 - 2 (0) 2021.08.08 페이징 정리 - 1 (0) 2021.08.08