gloryyam 님의 블로그
멀티태스킹과 멀티프로세싱 본문
이 글은 김영한의 실전 자바 - 고급 1편을보고 정리한 글입니다.
https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B3%A0%EA%B8%89-1/dashboard
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런
김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?
www.inflearn.com
단일 프로그램 실행
프로그램을 2개 이상 동시에 실행한다고 가정해보겠습니다.
예를 들어 어떤 파일을 다운로드 받으면서 동시에 웹 브라우저를 열어 인터넷 서핑을 하고 있다고 가정해보겠습니다.
- 프로그램 실행이란 프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)하는 일입니다.
- 여기서 CPU 코어가 하나이므로 한 번에 하나의 프로그램 코드만 실행 시킬 수 있습니다.
- 위에 그림과 같이 프로그램 A가 모두 실행한 뒤 프로그램 B가 실행된다면 예를들어 파일 다운로드를 완료를 해야 인터넷 서핑이 가능하다면 사용자는 매우 답답해 할 것입니다.
- 실제로 초창기 컴퓨터는 한 번에 하나의 프로그램만 실행했다고 합니다.
- 이를 해결하기 위해 하나의 CPU 코어로 여러 프로그램을 동시에 실행하는 "멀티태스킹" 기술이 등장했습니다.
멀티 태스킹
우리가 애니메이션을 볼 때, 화면에서 캐릭터가 마치 살아 움직이는 것처럼 보이는 이유는, 사실 수많은 이미지가 순식간에 교차되기 때문입니다.
한 장의 사진이 다음 사진으로 빠르게 바뀌면서, 우리 뇌는 이를 자연스러운 움직임으로 받아드리죠.
예를 들어 애니메이션에서는 1초에 30에서 60장의 이미지가 지나가는데, 이 정도 속도라면 우리는 가각의 사진을 인식하기보다는, 마치 실제로 움직이는 영상을 보는 것처럼 느낍니다.
만약 CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행한다면, 사람이 느낄 때 두 프로그램이 동시에 실행되는 것처럼 느껴질 것입니다. ( 대략 0.01초(10 ms) 단위로 돌아가며 실행한다. )
단일 프로그램 실행은 프로그램 A가 전부 처리되고 나서 프로그램 B가 실행이 됐습니다. 하지만 멀티태스킹은 프로그램A의 코드를 0.01초 정도 수행하다가 잠시 멈추고, 프로그램B의 코드를 0.01초 정도 수행합니다. 그리고 다시 프로그램A의 이전에 실행중인 코드로 돌아가서 0.01초 정도 코드를 수행하는 방식으로 반복 동작합니다.
이렇게 각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할(Time Sharing, 시간 공유) 기법이라고 합니다. 이런 방식을 사용하면 CPU 코어가 하나만 있어도 우리가 여러 프로그램이 애니메이션처럼 동시에 실행되는 것 처럼 느낄 수 있습니다.
이렇게 하나의 컴퓨터 시스템이 동시에 여러 작업을 수행하는 능력을 멀티태스킹( Multitasking )이라 합니다.!!
멀티프로세싱
CPU 코어가 둘 이상이면 어떻게 될까요?
멀티프로세싱 (Multiprocessing)은 컴퓨터 시스템에서 둘 이상의 프로세서(CPU 코어)를 사용하여 여러 작업을 동시에 처리하는 기술을 의미합니다. 멀티프로세싱 시스템은 하나의 CPU 코어만을 사용하는 시스템보다 동시에 더 많은 작업 을 처리할 수 있습니다.
멀티프로세싱 vs. 멀티태스킹
멀티프로세싱은 하드웨어 장비의 관점이고, 멀티태스킹은 운영체제 소프트웨어의 관점입니다.
멀티프로세싱
- 여러 CPU(여러 CPU 코어)를 사용하여 동시에 여러 작업을 수행하는 것을 의미한다.
- 하드웨어 기반으로 성능을 향상시킨다.
- 예: 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템
멀티태스킹
- 단일 CPU(단일 CPU 코어)가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것을 의미한다.
- 소프트웨어 기반으로 CPU 시간을 분할하여 각 작업에 할당한다.
- 예: 현대 운영 체제에서 여러 애플리케이션이 동시에 실행되는 환경
참고로 이 예는 여러 CPU 코어를 사용하기 때문에 멀티프로세싱입니다. 동시에 각각의 단일 CPU 코어에 여러 작업을 분 할해서 수행하기 때문에 멀티태스킹입니다.
'Backend > Java' 카테고리의 다른 글
프로세스와 스레드 (0) | 2024.08.29 |
---|---|
[Thread] run() vs start() (0) | 2024.08.27 |