프로세스 Process
프로그램이 메모리에 적재되고 CPU 자원을 할당받아 실행되고 있는 상태를 의미한다.
CPU가 스케줄러에 의해 여러 프로세스를 번갈아 실행하는 것을 Context Switching(문맥 교환)이라고 한다. Context Switching이 빈번하게 발생할 경우 오버헤드가 발생하여 프로그램 성능에 문제를 일으킬 수 있다.
각 프로세스는 독립된 메모리 영역을 할당받기 때문에 한 프로세스에서 다른 프로세스의 메모리 영역에 접근할 수 없다. 그러기 위해서는 파이프나 소켓 같은 IPC(Inter-Process Communication)를 사용해야 한다.
스레드 Thread
프로세스 내에서 실행되는 흐름의 단위. 하나의 프로그램은 하나 이상의 프로세스를 가지고 하나의 프로세스는 하나 이상의 스레드를 가진다.
하나의 프로세스 내에 존재하는 스레드들은 부모의 Code, Data, Heap 영역을 공유하고 Stack 영역만 별도로 할당받는다.
✔ 자바 스레드 Java Thread
자바 스레드는 JVM의 스케줄링에 따라 실행된다. 자바에는 프로세스가 존재하지 않고 스레드만 존재한다.
- References
Process와 Thread 이야기
프로세스(Process)
charlezz.medium.com
[OS] 프로세스와 스레드의 차이 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io