본문 바로가기
java/개념

멀티태스킹

by unhyepnhj 2024. 11. 19.

멀티태스킹 프로그램

- 큰 규모의 응용 프로그램은 여러 작업(task)을 동시에 실행하는 경우 多

- 응용프로그램의 여러 task가 동시에 진행되도록 하는 멀티태스킹 기법 사용


스레드(thread): OS 혹은 JVM(Java Virtual Machine)에서 task 실행의 단위

- thread of control

- 프로그램 코드를 실행하는 하나의 실 혹은 제어의 개념

- task마다 하나의 스레드가 생성되며, 하나의 스레드로 하나의 task만 처리 可

- 스레드들은 상호 독립적

- OS나 JVM에 의해 관리됨


멀티태스킹과 멀티스레딩

 

멀티프로세싱(multi-processing)

- 하나의 응용 프로그램을 여러 개의 프로세스(process)로 구성, 각 프로세스가 하나의 task를 처리하도록 하는 기법

- 각 프로세스는 고유한 메모리 영역을 보유, 독립적으로 실행

→ 문제 발생

1. 하나의 응용 프로그램에 속하는 프로세스들은 변수를 공유할 수 없으므로 프로세스 간 통신(IPC, Inter Process Communication)이 어려움

2. 프로세스 간 문맥 교환(context switch)에 따른 작업량과 시간 소모 up

 

멀티스레딩(multi-threading)

- 멀티프로세싱의 문제점 해결을 위해 고안

- 하나의 응용 프로그램을 동시 처리가 가능한 여러 작업(=코드)으로 분할, 작업의 개수만큼 스레드를 생성하여 각 스레드가 하나의 작업을 처리하게끔 하는 기법

- 모든 스레드는 응용프로그램 내의 자원과 메모리를 공유 통신 오버헤드 및 문맥 교환 작업량 ↓

- 윈도우, 리눅스 등 많은 OS들이 멀티스레딩을 기본으로 함(멀티프로세싱 지원 O)


멀티스레딩 활용 분야 예시: 웹 서버 S/W

- n명의 클라이언트가 서버에 동시 접속했을 때, 서버는 각 클라이언트마다 스레드 생성 클라이언트 각각의 요청 서비스

'java > 개념' 카테고리의 다른 글

스레드 만들기  (0) 2024.11.19
자바의 멀티스레딩  (0) 2024.11.19
배치관리자  (0) 2024.06.28
컨테이너와 배치  (0) 2024.06.28
스윙 GUI 프로그램 만들기  (0) 2024.06.27