728x90
프로세스(Process)
- 실행중인 프로그램을 의미 (a program in execution)
- 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다.
- 프로세스는 자원과 쓰레드로 구성된다.
- 모든 프로세스는 최소 1개이상의 쓰레드가 존재한다.
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구저에 접근이 불가능.
쓰레드(Thread)
- 프로세스 내에서 실행되는 여러 흐름의 단위.
- 프로세스의 자원을 이용해 실제로 작업을 수행하는 것.
- 쓰레드는 프로세스 내에서 각각 stack만 따로 할당받고 Code,Data,Heap영역은 공유한다..
- 한 번 종료된 쓰레드는 다시 실행할 수 없다.
- 모든 쓰레드는 독립적인 작업을 수행하기 위한 자신만의 호출스택을 필요로 한다.
- JAVA에는 프로세스가 존재하지 않고 쓰레드만 존재
- JAVA에서는 운영체제의 역할을 JVM이 한다.
싱글쓰레드 = 자원(메모리) + 쓰레드
멀티쓰레드 = 자원(메모리) + 쓰레드 + 쓰레드 + ...
멀티 프로세스
- 하나의 응용프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하게 한다.
- 여러 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽고 다른 영향이 확산되지 않는다.
- 각각 독립된 메모리 영역을 가지고 있어 작업량이 많을 수록 오버헤드가 발생.
- Context Swiching으로 인한 성능 저하.
멀티 쓰레드
- 하나의 프로세스을 여러개의 쓰레드로 구성하고 각 쓰레드로 하여금 하나의 작업을 처리하게 한다.
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
- 쓰레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어든다.
- 쓰레드는 프로세스 내의 stack을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.
- 하나의 쓰레드가 데이터 공간을 망가뜨리면 모든 쓰레드가 작동 불능 상태가 된다.
- 대표적 멀테쓰레드 응용프로그램은 웹 서버이다.
728x90
'Java & Spring' 카테고리의 다른 글
[JAVA] Interface, Abstract Class 인터페이스, 추상클래스 정리 (0) | 2022.03.31 |
---|---|
[JAVA] Primitive type, Reference type 기본형, 참조형 정리 (0) | 2022.03.30 |
[JAVA] OOP(Object-Oriented Programming) 객체 지향 프로그래밍 (0) | 2022.03.28 |
[JAVA] 클래스, 객체, 인스턴스 차이점 (0) | 2022.03.27 |
[JAVA] Access Modifier 접근 제어자 (0) | 2022.03.25 |