인디언식 기우제

프로세스와 스레드 본문

Java

프로세스와 스레드

밍주키니어 2023. 6. 16. 16:51
프로세스(process)

운영체제에서 실행중인 하나의 애플리케이션을 프로세스(process)라고 부른다. 간단히 말하면 실행중인 프로그램이다.

프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다.

ctrl + shift + esc 누르면 작업관리자가 열린다

내가 사용하고있는 프로세스의 목록이다. chrome, 카카오톡, 탐색기 등을 사용하고 있는게 보인다. 애플리케이션 마다 할당된 CPU와 메모리가 보인다. 크롬을 실행시켰을 때 저만큼의 메모리를 할당받고 프로세스가 된것이다.

 

멀티 태스킹(multi tasking)과 스레드(thread)

멀티 태스킹은 두 가지 이상의 작업을 동시에 처리하는 것이다. 위의 사진처럼 카카오톡을 하면서, 크롬으로 웹서핑을하고, 탐색기로 파일을 찾는 것이 멀티 태스킹이다. 그래서 운영체제는 멀티 태스킹을 할 수 있도록 CPU와 메모리 자원을 프로세스마다 적절히 할당해주고 병렬로 실행시킨다.

멀티 태스킹은 프로세스에 국한되지 않는다. 한 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 애플리케이션도 있다. 위에 있는 카카오톡만 해도 그렇다. 채팅을 하면서 통화도 되고, 사진도 보내지고, 동영상 다운도 된다. 이 때 사용되는 개념이 스레드이다. 스레드는 프로세스 내에서 코드의 실행 흐름이다. 한가지 작업을 실행하는 것이 스레드이다. 카카오톡은 채팅, 보이스톡, 사진 전송, 동영상 다운 만 해도 4가지 작업이다. 만약 스레드가 하나라면, 채팅이 끝나면 통화를 하고, 통화가 끝나면 사진을 전송하고, 전송이 끝나면 동영상을 다운할 것이다. 하지만 우리는 동시에 사용하고 있는데 이는 멀티 스레드(multi thread)라서 가능한것이다. 스레드가 여러개이기 때문에 여러 작업이 동시에 진행될 수 있는 것이다.

반대로 스레드가 하나인 경우는 싱글 스레드 하고 한다.

 

 

프로세스 = 자원 + 스레드 (+ 스레드 + 스레드 +...)

'Java' 카테고리의 다른 글

Spring 프레임워크 Maven vs Gradle  (0) 2023.05.30