프로세스(process)와 스레드(thread), 멀티 스레드

개념

2020. 11. 23.

프로세스 : 운영체제에서 실행 중인 하나의 애플리케이션.

사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는 데, 이것이 프로세스이다.

하나의 애플리케이션은 다중 프로세스를 만들기도 한다.

예를 들어 크롬 브라우저를 두 개 실행했다면 두 개의 크롬 프로세스가 생성 된 것이다.

 

스레드 : 사전적 의미로 한 가닥의 실.

한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어놓은 데에서 유래한 이름.

하나의 스레드는 하나의 코드 실행 흐름이다.

즉, 두 개의 스레드는 한 프로세스 내에 코드 실행 흐름이 두 개라는 의미이다.

 

멀티 태스킹 : 두 가지 이상의 작업을 동시에 처리하는 것.

운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다.

한 프로세스 내에서도 멀티 태스킹을 할 수 있다.

예를 들어 카카오톡은 채팅 기능을 제공하면서 동시에 파일 전송 기능을 수행하기도 한다.

이렇게 한 프로세스 내에서 멀티 태스킹을 할 수 있는 방법이 멀티 스레드이다.

-멀티 프로세스 : 애플리케이션 단위의 멀티 태스킹. 운영체제에서 할당받은 고유의 메모리가 있어서, 한 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않는다.

-멀티 스레드 : 애플리케이션 내부의 멀티 태스킹. 하나의 프로세스를 공유하기 때문에, 하나의 스레드에서 예외가 발생하면 다른 스레드에 영향을 미칠 수도 있다.

 

멀티 스레드를 사용하는 이유

- 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할하여 병렬 처리

- UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해

- 다수 클라이언트의 요청을 처리하는 서버를 개발

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

시스템(System)  (0) 2021.02.20
OSI 7계층 모델  (0) 2020.11.23
프레임워크  (0) 2020.11.18
AOP (관점지향 프로그래밍)  (0) 2020.11.18
정규 표현식  (0) 2020.11.16