멀티태스킹(Multitasking)
멀티(Multi) + 태스킹(tasking)의 합성어로서, 다수의 작업을 동시에 처리하는 것
- 하나의 프로그램이 하나의 작업(태스크)만 하는 경우가 대부분이지만, 하나의 프로그램이 여러 작업(태스크)를 동시에 실행하는 경우가 많다.
스레드(Thread)
스레드(Thread)
- 운영 체제에 의해 관리되는 하나의 작업 혹은 테스크(task)
- 다수의 스레드를 동시에 실행시키도록 응용프로그램을 작성하는 기법 => 멀티스레딩
스레드의 구성요소
- 스레드 코드 : 작업을 실해하기 위해 사용자가 작성한 프로그램 코드
- 스레드 정보 : 스레드 명, 스레드 ID, 스레드 소요시간, 스레드 우선순위 등 운영체제가 관리하는 정보
멀티태스킹(Multitasking)과 운영체제(OS)
운영체제(OS)와 스레드와의 관계
- 프로그램 코드를 스레드로 관리하고 작동시키는 것은 운영체제가 담당한다.
- 개발자는 작성한 코드를 하나의 스레드로 만들어 줄 것을 운영체제에게 요청해야 한다.
멀티태스킹(Multitasking)의 종류
- 멀티프로세싱(Multi-Processing)
- 멀티스레딩(Multi-threading)
멀티프로세싱(Multi-Processing)
하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 기법
- 각 프로세스는 고유한 메모리 영역을 보유하고 독립적을 실행된다.
멀티프로세싱(Multi-Processiong)의 단점
- 하나의 응용프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없기 때문에
프로세스들 사이에 사용하는 통신 기법(IPC, Inter Process Communication)이 어렵고 오버헤드가 크다.
- 프로세스 사이의 문맥 교환(Context switch)에 따른 과도한 작업량과 시간 소모의 문제점이 있다.
멀티스레딩(Multi-threading)
하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 기법
멀티스레딩(Multi-threading)의 장점
- 모든 스레드가 응용프로그램 내 자원과 메모리를 공유하므로 통신에 따른 오버헤드가 비교적 크지 않고, 스레드 사이의 문맥 교환 시 작업량이 작아 문맥 교환이 빠른 장점을 지닌다.
- 응용프로그램이 다수의 스레드를 가지고 다수의 작업이나 요청을 동시에 처리함으로써, 여러 작업을 순차적으로 진행하는 경우 시간 지연과 자원의 비효율적 사용을 개선한다.
참조📜
- 명품 JAVA ESSENTIAL - 황기태 지음-