개요
- 김영한 강사님의 자바 고급 멀티스레드와 동시성 강의를 듣고 내 생각과 간단하게 작성한다.
자세한 내용은 강의를 들어주세요.
본론
멀티태스킹과 멀티 프로세싱이란?
멀티태스킹
위키피디아에 따르면 멀티태스킹이란 다수의 작업이 중앙 처리 장치(CPU)와 같은 공용자원을 나누어 사용하는 것을 말한다.
즉, 우리가 여러 프로그램들을 실행할 때, CPU라는 자원을 나누어서 사용하여 처리한다는 것을 의미한다.
하지만, CPU(코어 1개)는 한 순간에 하나의 코드(프로그램)을 실행한다.
그렇다면 어떻게 나누어서 사용한다는 것일까?
위키피디아의 설명을 더 읽어보면 멀티태스킹은 스케줄링이라는 방식을 사용하여 컴퓨터 사용자에게 병렬 연산이 이루어지는 것과 같은 환경을 제공한다.
여기서 중요한 점은 병렬 연산이 이루어지는 것 처럼 환경을 제공한다는 것이다.
멀티태스킹은 문맥교환을 통해 여러 프로그램 (코드)들을 번갈아가면서 수행함으로써 사람이 느끼기에 동시에 실행되는 것 처럼 느끼게 만든다.
- 쉽게 상상하자면 비디오 프레임 혹은 애니메이션 또는 게임에서 프레임이 높아질 수록 부드럽게 느끼는 것과 동일하다.
😀 한 문장으로 정의하자면 멀티 태스킹이란 여러 프로그램을 스케줄링이라는 기법으로 분할해서 실행함으로써 사람이 느끼기에 여러 작업을 동시에 처리하는 것 처럼보이는 기법이라고 할 수 있다.
- 중요한 점은 여러 프로그램을 실제로 동시에 처리하는 것이 아닌 동시에 처리하는 것 처럼 보이게 한다는 것이다.
멀티 프로세싱
위키피디아에 따르면 멀티프로세싱이란 컴퓨터 시스템 한 대에 둘 이상의 중앙 처리 장치(CPU)를 이용하여 병렬로 처리하는 것을 가리킨다.
즉, 우리가 여러 프로그램을 실행할 때, 여러 개의 CPU(혹은 코어)를 사용하여 실제로 동시에 처리하는 것을 말한다.
앞에서 멀티 태스킹은 여러 작업을 하나의 CPU가 빠르게 돌아가면서 처리함으로써 동시에 처리되는 것 처럼 보이게 해준다고 했다.
😀 멀티 프로세싱은 동시에 처리되는 것 처럼 보이게 하는 것
이 아닌 실제로 동시에 처리하는 것
을 말한다.
흔히 우리가 CPU를 구입할 때, 코어라는 것을 볼 수 있다.
- 이 코어가 바로 실제 우리가 실행하는 프로그램(코드)를 실행할 수 있는 하드웨어라고 보면된다.!
멀티 태스킹-프로세싱 정리
따라서 정리하자면 멀티 태스킹은 소프트웨어 관점에서 어떻게 CPU를 효율적으로 사용할 것인가를 생각한 것이라고 할 수 있고 프로세싱은 하드웨어 관점에서 CPU 코어를 이용하여 효율적으로 여러 프로그램을 실행하는 것을 생각한 것이다.
만약 두 기법을 모두 사용한다면 다음과 같은 문장으로 정리할 수 있다.
우리는 여러 CPU 코어를 사용하여 프로그램을 실행하기 때문에 멀티 프로세싱 기법을 사용하고 있고, 이 CPU 코어들은 여러 프로그램들의 작업을 돌아가면서 실행하기 때문에 멀티 태스킹 기법을 사용한다고 볼 수 있다.
- CPU의 코어가 8개라고 하더라도 우리는 프로그램을 9개 이상 실행할 수 있는 이유가 그 이유이다.!
결론
멀티 태스킹과 멀티 프로세싱에 대해서 알아보았다.
두 단어는 다른 용어이며 멀티태스킹은 운영체제가 어떻게 프로그램들에게 할당하는지에 대한 기법이고 멀티 프로세싱은 여러 CPU 코어를 사용하여 여러 작업을 동시에 처리하는 지에 대한 용어이다.
두 용어를 잘 구분해서 사용해야 할 것이다.
운영체제 강의를 들을때 배웠던 내용이지만 더 쉽게 이해되도록 설명해주신 것 같다.
가장 중요한 포인트는 동시에 처리되는 것 처럼과 실제로 동시에 처리되는 것
이라는 키워드라고 생각한다.
'개발 관련' 카테고리의 다른 글
[CS] 프로세스와 스레드 (1) | 2024.08.28 |
---|---|
[JAVA] 자바 Reflection API (0) | 2024.05.08 |
[Spring Boot] 스프링 부트 HTTPS 적용기 (0) | 2024.01.26 |