보안 전공생의 공부

프로세스(process) vs 스레드(thread) 본문

Language/JAVA

프로세스(process) vs 스레드(thread)

수잉 2021. 2. 26. 03:12

(참조 : allhpy35.tistory.com/34 m.blog.naver.com/seban21/70103183454 gmlwjd9405.github.io/2018/09/14/process-vs-thread.html )

 

□ 프로그램(program) : 어떤 작업을 위해 실행시키는 파일

 

◆ 프로세스(process) : 프로그램을 실행하고 있는 상태

 - 구성 : 프로그램 수행에 필요한 데이터, 메모리 등의 자원 + 스레드

 - 프로세스는 각각 독립된 메모리 영역(code, data, stack, heap 구조)을 할당받음

 - 자바의 runtime 환경과 밀접한 관계를 지님

   ∵ 자바의 runtime 환경은 프로세스가 실행될 수 있는 기반 환경을 제공해 줌

 - 다른 프로세스 생성 가능 -> 부모 프로세스 - 자식 프로세스

   ☞ 하나의 자바 프로그램에서 다른 프로그램을 실행시키고자 할 때 사용됨

 

▶ 멀티 프로세스 : 하나의 응용프로그램을 여러 개의 프로세스로 구성해 각 프로세스가 하나의 작업을 처리하도록 하는 것

- 장점 : 여러 개의 자식 프로세스 中 하나에 문제 발생 -> 그 자식 프로세스만 죽는 것 이상으로 다른 영향 확산 X

- 단점 : 프로세스 사이의 어렵고 복잡한 통신기법

           context switching에서 오버헤드 

           ( context switching : CPU에서 여러 프로세스를 돌아가며 작업을 처리하는 과정 )

 

 

◆ 스레드(thread) : 프로세스 내에서 실행되는 여러 흐름의 단위

                          프로세스의 자원을 이용해 실제로 자업을 수행하는 역할

 - 프로세스 내에서 각각 stack만 따로 할당받고 code, data, heap영역은 공유

 - 모든 프로세스에는 최소 하나 이상의 thread가 존재 !

 

▶ 멀티 스레드 :  하나의 응용프로그램을 여러 개의 스레드로 구성해 각 스레드가 하나의 작업을 처리하도록 하는 것

 - 장점 : 자원의 효율성 증대, 시스템 처리량 증가

 - 단점 : 자원 공유 문제 발생 (동기화 문제)

           프로세스 밖에서 스레드 각각을 제어 불가

 

 

'Language > JAVA' 카테고리의 다른 글

인터페이스  (0) 2021.02.23
문제풀이  (0) 2021.02.15
상속, 다형성, 추상 클래스  (0) 2021.02.14
클래스 관련 문제풀이  (0) 2021.01.31
클래스(2) | 접근 제어자, 정적변수·메소드  (0) 2021.01.31
Comments