1. Process, Thread
프로세스란 간단히 말해서 실행중인 프로그램을 의미한다. 프로그램을 실행하면 OS 로부터 실행에 필요한 자원, 메모리를 할당받아 프로세스가 된다.
프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원, 그리고 쓰레드로 구성되어 있다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다.
모든 프로세스는 하나 이상의 쓰레드를 가지고 있으며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스, multi-threaded process 라고 한다.
하나의 프로세스가 가질 수 있는 쓰레드의 개수는 제한되어 있지 않으나, 쓰레드가 작업을 수행하는데 필요한 메모리가 한계에 다다르면 더이상 쓰레드를 만들 수 없다.
- 멀티태스킹과 멀티쓰레딩
현재 사용되는 OS 는 대부분 멀티태스킹을 지원하기 때문에 한번에 여러개의 프로세스가 실행될 수 있다. 이와 마찬가지로 멀티쓰레딩은 하나의 프로세스 안에서 여러개의 쓰레드가 동시에 작업을 하는 것이다. CPU 의 코어는 한번에 하나의 작업밖에 할 수 없다. 그렇기 때문에 코어의 개수보다 쓰레드의 수가 많아지게 되면, 여러 작업을 번갈아 가며 작업을 수행함으로써 여러 작업들이 동시에 수행되는 것처럼 보이게 한다.
이와같은 이유로 무조건 멀티쓰레딩의 성능이 좋지는 않다. 때로는 하나의 쓰레드를 가진 프로세스가 멀티쓰레딩의 프로세스보다 빠를 수 있다.
- 멀티쓰레딩의 장점
1) CPU 의 사용률을 향상시킨다.
2) 자원을 보다 효율적으로 사용할 수 있다.
3) 사용자에 대한 응답성이 향상된다.
4) 작업이 분리되어 코드가 간결해진다.
- 멀티쓰레딩의 단점
여러 쓰레드가 같은 프로세스 내에서 자원을 공유하기 때문에 deadlock, synchronization 과 같은 이슈들이 발생할 수 있다.
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] 쓰레드 실행제어 (0) | 2022.03.11 |
---|---|
[JAVA] 쓰레드 구현 및 실행 (Thread, Runnable, start(), run()) (0) | 2022.03.10 |
[JAVA] Annotation (0) | 2022.02.23 |
[JAVA] Enums (0) | 2022.02.21 |
[JAVA] Generics (0) | 2022.02.16 |