위키디피아
컴퓨팅 분야에서 멀티태스킹(영어: multitasking) 또는 다중작업(이하 멀티태스킹)은 다수의 작업(혹은 프로세스, 이하 태스크[1])이 중앙 처리 장치(이하 CPU)와 같은 공용자원을 나누어 사용하는 것을 말한다. 엄밀히 말해 한 개의 CPU를 가진 개인용 컴퓨터가 특정 순간에 수행할 수 있는 태스크의 개수는 하나뿐이다. 따라서 멀티태스킹은 스케줄링이라는 방식을 사용하여 컴퓨터 사용자에게 병렬 연산이 이루어지는 것과 같은 환경을 제공한다
https://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91%EC%9E%91%EC%97%85
나의정의
하나의 CPU (코어)는 하나의 일밖에 처리 하지 못하지만, 교차적으로 이리저리 옮겨다니며, 작업을 수행하여 마치 여러개의 일을 한번에 처리하고 있는 듯 하게 하는 능력을 말한다.
A1
의 일을 처리하다가, 0.0001초 뒤 A2
의 작업을 처리하고, 다시 다른 작업을 처리하고, 다시 A1
의 일을 처리하고... 반복 작업
을 진행하게 된다.실제로 0.0001초만에 컨텍스트 스위칭이 이뤄진다는 것은 아니다
.다중 처리(多重處理)는 컴퓨터 시스템 한 대에 둘 이상의 중앙 처리 장치(CPU)를 이용하여 병렬로 처리하는 것을 가리킨다. 또, 이 용어는 하나 이상의 프로세서를 지원하는 시스템의 능력, 또는 이들 사이의 태스크를 할당하는 능력을 가리키기도 한다.[1] 다중 처리 시스템(Multiprocessing System)은 다중 처리가 적용된 시스템을 뜻한다.
https://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC
CPU가 여러개라 여러가지 일을 동시에 처리 하는 것.
앞서 살펴본 멀티테스킹 예시와 다르게 CPU가 2개 있다면 이러한 모습일 될 것이다.
멀티테스킹과 다르게, 물리적인 CPU 갯수가 늘어, 실제로 병렬처리를 진행 한다.
프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 프로그램이다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
실제 동작하는 프로그램의 인스턴스
이다.코드(프로그램)
을 개발 하였다고 한다. 이 프로그램을 실행시켜 메모장을 켰다면, 실행되고 있는 메모장 프로그램(인스턴스)는 프로세스 라고 한다.코드영역
: 실행 중인 프로그램의 코드가 저장되는 메모리 영역.데이터 영역
: 프로그램이 실행 중에 사용하는 전역 변수와 정적 변수들이 저장되는 메모리 영역힙 영역
: 프로그램 실행 중 동적으로 메모리를 할당받는 영역. (JVM의 Heap과 유사)기타 영역
: 메모리 매핑 영역, 환경 변수와 인자 등을 합쳐서 정의.스택 영역
: 함수 호출과 관련된 정보가 저장되는 메모리 영역입니다.스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.
https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
프로세스 안에서 실행되는 작업의 단위.
문서 작업
을 하며, 자동완성
이 되고, 맞춤법 검사
가 되고 있는 것을 확인 할 수 있다. 하나의 Excel (프로세스)
에서 여러가지 기능이 동작하고 있는 것이다.프로세스안
에 여러개의 쓰레드
가 있다는 것을 의미한다.멀티 쓰레드 환경
이라고 한다.public class Test {
private static final int ONLY_ONE = 1;
public static void main(){
int a = 0;
int b = 1;
System.out.println("main 함수 실행 완료!");
System.out.println("ONLY_ONE = " + ONLY_ONE);
}
}
main()
메서드로 진행한다.int a = 0;
등의 코드를 하나씩 실행하며 main을 완성하게 된다.private static final int ONLY_ONE = 1;
는 데이터 영역에 저장되게 되어 쓰레드 별로 공유되게 되는데, 공유하는 이유를 확인 할 수있다.1
을 가지고 있으므로, 각 쓰레드 별로 관리를 할 필요가 없다. (메모리 사용 ↓
, 메모리 효율 ↑
)