[자바개념] 스레드와 프로세스

유호경·2022년 10월 5일

스레드(thread)란?

쓰레드란 프로세스 내에서 실제로 작업을 수행하는 주체이다.
모든 프로세스에는 한개 이상의 스레드가 존재하고 이 스레드가 코드를 실행하여 작업을 수행한다.
사전적 의미로는 '한 가닥의 실' 이라는 뜻인데 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어놨다고 해서 유래된 이름이다.
하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두 개라면 두 개의 코드 실행 흐름이 생긴다는 의미이다.

프로세스(process)란?

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

멀티 프로세스와 멀티 스레드

멀티프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 미치지 않고 정상적으로 수행되는 안정성 확보라는 장점이 있다. 하지만 멀티 스레드보다 많은 메모리 공간과 CPU를 차지하고 Context Switching(문맥교환)시 여러 무거운 작업들을 동반하며 비용이 많이 소요되어 응답속도가 느려지는 단점이 있다.

멀티스레드는 멀티프로세스보다 적은 메모리 공간을 차지하고 Context Switching(문맥교환)시 비용이 덜 들어 응답시간이 그만큼 빠르다. 하지만 오류로 인해 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 미칠 수 있다는 단점과 프로세스의 스택을 제외한 다른 지원들을 공유하는 만큼 이로 인한 동기화 문제라는 단점이 존재한다.

[참고1]
https://wookkingkim.tistory.com/entry/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-vs-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C
[참고2]
https://www.hanbit.co.kr/store/books/look.php?p_code=B1460673937

profile
하면된다.

0개의 댓글