○ 프로세스, 스레드
OS에서 실행되는 하나의 어플리케이션을 기본적으로 프로세스(process)로 칭합니다. OS로부터 메모리를 할당 받고, 코드를 실행하는 단위죠. 하나의 프로세스가 중복으로 실행되어 다중 프로세스를 이루기도 합니다. 간단하게, 크롬을 두 번 실행시키면 크롬이 두 개가 뜨죠? chrome.exe가 두 개가 양립하는 상황입니다.
○ 멀티 태스킹 - 멀티 프로세스, 멀티 스레드
흔히 얘기하는 멀티 태스킹(multi tasking)은 두 가지 이상의 작업을 동시에 처리한다는 아주 친숙한 개념입니다. 위에서 말한 다중(멀티) 프로세스가 이에 해당하겠죠? 하지만 멀티 태스킹은 멀티 프로세스에 한정되지 않는 개념입니다. 즉, 하나의 프로세스인 한 개의 어플리케이션 내에서 다중 작업이 가능하기 때문입니다. 예를 들어 메신저 앱에서 채팅을 하면서 동시에 파일을 전송하는 기능이 실행 되는 것은 "하나의 프로세스에서 두 개 이상의 작업이 처리"되는 상황입니다. 이는 멀티 스레드(multi thread)로 인해서 가능한 상황입니다.
○ 스레드(thread)
스레드는 문자 그대로 한 가닥의 실, 즉 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드가 늘어진 단위입니다. 그래서 한 프로세스에 스레드가 두 개 이상이라면, 두 개 이상의 코드 실행 흐름이 생기는 것입니다.
멀티 프로세스는 어플리케이션 단위의 멀티 태스킹이고, 멀티 스레드는 하나의 어플리케이션 내부에서의 멀티 태스킹입니다. 결과적으로 엑셀, 워드, 카카오톡, 크롬이 하나의 PC에서 동시에 실행되는 상황은 멀티 프로세싱이며, 이 와중에 다중 작업을 실행하는 카카오톡 안에서는 멀티 스레드가 이루어지는 상황인 것이죠.
참고로 멀티 프로세스로 실행되는 각각의 어플리케이션은 독립적으로 메모리를 할당해 사용합니다. 그래서 하나의 프로세스 오류가 발생해도 다른 어플리케이션에 영향이 가지 않습니다. 카카오톡이 에러가 났다고 엑셀이 종료되지 않듯이 말이죠. 하지만 카카오톡에서 채팅을 하며 파일을 전송하다 파일 전송에 에러가 발생하면 카카오톡 자체가 종료될 수 있습니다. 그래서 멀티 스레드에서는 예외처리에 신경써야 합니다.
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(2) - 작업 스레드 개념 : Thread 클래스로부터 생성 1 (1) | 2024.10.24 |
---|---|
멀티 스레드(1) - 멀티 스레드 개념 : 프로세스와 스레드 2 (0) | 2024.10.22 |
컬렉션 프레임워크(5) - 검색 강화 컬렉션 2 : TreeSet (0) | 2024.01.12 |
컬렉션 프레임워크(5) - 검색 강화 컬렉션 1 : 이진트리 구조 (0) | 2024.01.04 |
컬렉션 프레임워크(4) - Map 컬렉션 4 : Properties (0) | 2023.12.23 |