컴퓨터공학/운영체제

멀티 어쩌구 구분하기

황태건 2023. 11. 8. 23:26

프로세스, 스레드 챕터를 공부하다보면 멀티프로그래밍, 멀티태스킹, 멀티코어, 멀티스레딩, ... 멀티즈도 아니고 비슷한 이름의 개념이 자꾸 등장해 우리(사실 나만)를 헷갈리게 한다. 무슨 뜻인지 간단히 알아보자.

 

1. 멀티코어

코어는 CPU에서 실제로 명령어를 처리하는 장치다. 하나의 CPU 안에 여러 개의 코어를 집어넣으면 동시에 여러 개 명령어를 처리할 수 있고 이런 CPU를 멀티코어라고 부른다. 반면 코어가 하나였던 이전 CPU는 싱글 코어라고 한다.

 

2. 멀티프로그래밍

프로그램을 실행하려면 이를 메모리에 올려 프로세스를 생성해야 하고, CPU는 한 번에 하나의 프로세스만 처리할 수 있다.

 

수행할 프로그램이 여러 개인데 CPU가 하나씩만 메모리에 올려서 처리한다면 어떻게 될까? 만약 그 프로세스가 I/O 작업을 수행하게 된다면, I/O는 주변 장치가 처리하는 작업이므로 CPU는 당장에 할 일이 없게 된다. CPU는 처리를 기다리는 다른 프로그램을 찾아보지만, 메모리에는 이 프로그램 뿐이므로 I/O가 끝날 때까지 대기할 수밖에 없다.

 

멀티프로그래밍은 말 그대로 메모리에 여러 프로그램을 적재해, 위와 같은 상황에서 마냥 기다리는 대신 CPU 자원을 다른 프로세스에 할당하는 방법이다. 이를 통해 CPU가 노는 시간이 거의 없어져 활용률(utilization)이 향상된다.

3. 멀티태스킹(시분할)

우리는 빠르게 회전하는 선풍기를 볼 때 잔상 때문에 날개가 정지돼있다고 느낀다. 마찬가지로 멀티태스킹여러 프로세스가 빠른 속도로 전환되어 사용자로 하여금 여러 프로그램이 동시에 진행되고 있다고 착각하게 하는 방법이다.

 

사람이 식사와 게임으로 멀티태스킹을 한다고 해서 실제로 숟가락을 들면서 마우스를 움직이는가? 그건 아니다. 사실 마우스를 움직일 수 있는 건 밥을 입에 넣고 우물우물 씹을 때뿐이다. 다시 컴퓨터에 비유해보면 프로세스 P1이 숟가락을 입에 넣으면 (CPU 작업을 마침) 밥을 씹는 동안 (CPU 아닌 다른 작업 수행 중)에는 프로세스 P2에서 마우스를 움직일(P2의 CPU 작업) 수 있다. P1이 숟가락을 들고 있을 때는 P2에서 마우스를 움직일 수 없다.

 

멀티태스킹이 시분할이라고도 불리는 이유는 여러 프로세스를 빠르게 전환하는 모양새가 시간을 얇게 분할한 것처럼 보이기 때문이다. 멀티태스킹의 핵심은 '빠른 전환', '동시 진행이라는 착각'이다.

 

4. 멀티스레딩

한 CPU는 하나의 프로세스를 처리할 수 있다. 나아가 한 코어는 하나의 스레드를 처리할 수 있다. 이게 멀티스레딩의 핵심이다. 위에서 말한 멀티코어 시스템에서는 코어가 여러 개 있으므로 각각의 코어가 서로 다른 스레드를 처리할 수 있다. 멀티태스킹과 다르게 이번에는 실제로 동시 실행된다. 이를 parallelism이라고 부른다.

 

반면 싱글코어 시스템에서는 코어가 한 개 뿐이므로 아무리 스레드를 열심히 생성해도 동시 실행은 불가능하다. 할 수 있는 최선의 선택은 멀티테스킹처럼 스레드를 열심히 전환해가며 동시에 진행되고 있다고 착각하게 만드는 것 뿐이다. 이를 concurrency라고 부른다. 다만 프로세스는 전환할 때 코드와 데이터 영역까지 전환해야 하는데 스레드는 그럴 필요가 없다. 즉 스레드는 전환 비용이 프로세스에 비해 적다. 따라서 싱글코어 시스템에서도 멀티스레딩을 사용하는 편이 더 유리하다.

 

멀티 코어 시스템에서는 하나의 프로세스를 여러 스레드로 쪼개 동시 처리함으로써 성능을 대폭 향상시킬 수 있다. 대신 쪼갤 때 의존관계(dependency)에 유의해야 한다. 한 프로세스를 A와 B 스레드로 쪼갰는데 B가 A의 계산 결과를 필요로 한다면 두 개의 코어가 있어도 A와 B를 같이 실행할 수는 없을 것이다.

 

주의사항

위 4개의 멀티즈들은 상호 배타적인 개념이 아니다. 즉 멀티스레딩이라고 멀티태스킹이 아닌 것이 아니다. 어떤 CPU가 메모리에 프로그램을 여러 개 적재하고, 프로세스를 쉴새없이 빠르게 전환하고, CPU 내 여러 코어에서 서로 다른 스레드를 동시에 처리하면 그 컴퓨터는 멀티 4관왕에 등극했다고 할 수 있다.

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

CPU scheduling 헷갈리기 쉬운 부분  (0) 2023.11.16
IPC blocking/non-blocking  (0) 2023.11.06
프로세스 ready&waiting state  (0) 2023.11.03