겉바속촉

프로세스와 스레드의 차이 본문

IT 일기 (상반기)/JAVA

프로세스와 스레드의 차이

겉바속촉 2022. 6. 2. 16:54
728x90
반응형

 

정의

👉 프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위

👉 스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

 

 

원리

👉 프로그램 -> 프로세스 -> 스레드

 

1. 프로그램 -> 프로세스

✔ 프로그램 : 파일이 저장장치에 있으나 메모리에는 없는(아직 운영체제가 독립적인 메모리 공간을 할당해주지 않은 상태) 정적인 상태(아직 실행되지 않은 상태)

✔ 프로세스 : 프로그램을 실행하는 순간 해당 파일이 메모리에 올라간 상태의 프로그램

 

2. 프로세스 -> 스레드

프로세스와 다른 더 작은 실행 단위 개념이 필요해지면서 스레드가 탄생

✔ 스레드 : 프로세스와는 달리 스레드 간 메모리를 공유하며 작동, 스레드끼리 프로세스 자원을 공유

 

3. 비유

✔ 프로그램 : 코드 덩어리

✔ 포르세스 : 코드 덩어리가 실행되고 있는 상태

✔스레드 : 코드 내에 선언된 함수

 

 

 

 

작동 방식

👉 운영체제는 프로세스마다 각각 독립된 메모리 영역을 Code, Data, Stack, Heap 형식으로 할당해줌

👉 각각 독립된 메모리 영역이 할당되기 때문에 어떠한 프로세스가 다른 프로세스의 변수나 자료에 접근불가

 

 

아래 그림처럼 운영체제로부터 프로세스들이 메모리 영역을 할당받음

여기서 프로세스들은 서로 공유하지 않음

 

 

하지만 스레드는 메모리를 서로 공유하기 때문에 프로세스가 할당받은 메모리 영역 내에서

Stack 형식으로 할당된 메모리 영역만 따로 할당받고 나머지는 공유함

각각의 thread는 stack만 별도로 가지고 서로 읽고 쓰는 것이 가능

 

 

728x90
반응형

'IT 일기 (상반기) > JAVA' 카테고리의 다른 글

connection pool, datasource  (0) 2022.06.03
JNDI  (0) 2022.06.03
XML 파싱 - 마샬, 언마샬  (0) 2022.06.02
클래스와 객체 - 인스턴스  (0) 2022.05.27
WEB 서버 & WAS  (0) 2022.05.27