CS/OS

[OS] 멀티태스킹, 멀티프로세싱, 멀티스레드

Deveun 2021. 8. 7. 19:12

멀티태스킹, 멀티프로세싱, 멀티스레드 각각의 특징과 차이에 대해 알아보자.

이를 이해하기 위해서는 먼저 프로세스, 스레드 그리고 병렬처리에 대한 개념을 알고 있어야한다.

 

 

프로세스(Process)란,

저장장치의 프로그램을 실행하어 메모리에 load 되어진 상태이다.

프로세스 = 프로그램 + 프로세스제어블록(PCB)

 

 

스레드(Thread)란,

프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다.

즉, 작은 단위의 일(Operation)이 모여 하나의 작업(Task)이 될 때, 이 작은 단위의 일을 수행하는 것을 스레드라고 할 수 있다.

JOB > TASK > OPERATION
== 작업 > 프로세스 > 스레드

 

 

병렬처리(Parallel Processing)

동시에 여러 명령을 수행하여 CPU의 성능을 향상시키는 것을 말한다. 

 

(1) 파이프라인 기법

: core 1개, thread N개로, 프로세스를 여러개의 명령어 단계로 분할 후에 각 단계가 쉬지 않고 명령어를 수행할 수 있도록 하는 방식.

(2) 슈퍼스칼라 기법

: core N개에서 파이프라인 기법을 처리할 수 있도록 하는 방식

(3) 슈퍼파이프라인 기법

: 파이프라인 기법이 강화된 버전으로, 한 클록 내에 여러 명령어를 처리할 수 있도록 하는 방식

 


(1) 멀티태스킹(Multitasking)

먼저 멀티태스크란 서로 독립적인 여러개의 프로세스를 말하는데, CPU에서 잘게 시간을 나누어(Time Slicing) 이 여러 프로세스들을 마치 동시에 실행되는 것처럼 보이게 하는것을 말한다.

 

 

(2) 멀티프로세싱(Multiprocessing)

여러 CPU 또는 하나의 CPU내 여러 core에서 동시에 여러 프로세스를 처리하는 것을 말한다. 병렬 처리의 슈퍼스칼라 기법과 같다.

 

 

(3) 멀티스레드(Multithread)

동시에 여러 스레드를 처리하는 것으로, CPU에서 파이프라인 기법을 이용하여 하드웨어적으로 여러 스레드를 동시에 처리하는 기법(CPU 멀티스레드)와 운영체제가 소프트웨어적으로 프로세스를 작은 단위로 분할하여 운영하는 기법으로 구분된다.

 

출처: Operating System Concepts, 10th Ed. Abraham Silberschatz

 

[장점]

1개 프로세스의 여러 작업을 동시에 처리하기 위해서 여러 프로세스를 띄어놓는다면 (fork()) 메모리에는 중복데이터들이 존재하게 되면서 낭비가 발생한다. 대신 프로세스 내부에 여러개의 스레드를 두어 코드/데이터 등을 공유하면 더 효율적이고 응답성이 높은 작업이 가능하다.

 

[단점]

서로 독립적인 프로세스와 다르게 스레드는 서로 강하게 연결되어있기 때문에, 하나의 스레드에서 문제가 발생하면 다른쪽에도 영향을 끼친다.