[백엔드] 동기화/동시성 문제(한 작업에 대한 병렬처리) 해결을 위한 개념1 - 프로세스와 스레드

Hyo Kyun Lee·3일 전
0

백엔드

목록 보기
12/16

1. 개요

동시성 문제를 해결하기 위해 필요한 개념인 프로세스와 스레드에 대해 공부하고 정리한 내용을 기록한다.

2. 프로세스와 스레드

프로세스와 스레드는 운영체제에서 작업 효율성을 극대화하기 위한 병렬처리 과정에서 사용하는 개념으로, 이 개념은 웹개발 및 백엔드에서도 활용한다.

  • 프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위, 실행 중인 프로그램을 의미한다.
  • 스레드 : 프로세스가 할당받은 자원을 이용하는 실행단위, 프로세스 안에서 이용하는 작업의 단위를 의미한다.

3-1. 프로세스 구조(OS)

운영체제가 프로그램 실행을 위해 프로세스를 할당할때, 프로세스의 프로그램 코드나 데이터, 메모리 영역(Heap, Stack)을 함께 할당(제공)한다.

  • 코드 : java main과 같은 메소드를 저장 (* 바이트코드(.class )가 클래스로더를 통해 로드)
  • 데이터 : 프로그램 실행 중 전역변수, static 변수, 배열 등 초기화한 데이터를 저장
  • 메모리 : 지역변수, 매개변수 -> Stack / 참조변수(new, 객체 등) -> Heap

3-2. 스레드 구조(OS)

프로세스 안에서 동작하는 실행의 단위로, 프로그램 실행 요청이 들어올 경우 프로세스를 할당하면서 내부적으로 스레드를 만들어 명령을 처리한다.

즉, 프로세스 요청이 있을때 스레드가 만들어지며 프로세스의 주소공간 및 메모리 공간(Heap)을 공유받고 자신만의 메모리 공간(Stack)을 할당받기도 한다.

4-1. 스레드 구조(Java)

OS에서 동작하는 구조는 동일하며, 다만 JVM에서 동작한다.

최초로 동작하는 스레드는 java의 main 스레드이다.

0개의 댓글

관련 채용 정보