본문 바로가기

기술면접

프로세스와 스레드의 개념 및 차이점

오늘은 프로세스와 스레드의 개념과 둘의 차이점에 대해 알아보겠습니다.

1.프로세스

  • 프로세스란 프로그램이 메모리상에 적재되어 OS로부터 시스템 자원을 할당받는 작업의 단위
    또는 실행 중인 프로그램 인스턴스입니다.
  • 각 프로세스는 별도의 주소 공간에서 실행되어 자원을 공유하지 않습니다.
  • 다른 프로세스의 자원에 접근하려면 IPC(Inter-Process Communication)이 필요합니다.(메일 슬롯, 파이프, 소켓 등)
  • 할당받는 시스템 자원의 종류로는 Code, Data, Stack, Heap 등의 구조로 된 메모리 영역과 주소 공간, CPU 시간 등이 있습니다.
    • Code : 프로그래머가 작성한 프로그램이 위치합니다.
    • Date : 코드가 실행되면서 사용한 변수나 파일 등이 위치합니다.
    • Stack : 호출한 함수가 종료되면 돌아올 메모리의 주소를 저장하는 영역입니다.
    • Heap : 동적으로 할당되는 데이터들을 위한 영역입니다.
      이 중 Code와 Data 영역은 크기가 변하지 않는 정적 영역이고 Stack과 Heap은 크기가 변하는 동적 영역입니다.

2.스레드

  • 프로세스 내에서 실행되는 흐름의 단위입니다.
  • 한 프로세스는 반드시 하나 이상의 스레드를 가집니다.
  • 각 스레드는 Stack 영역만 따로 할당받고 Code, Data, Heap 영역은 공유합니다.
  • 어떤 스레드가 프로세스 자원을 변경하면 다른 스레드도 변경 결과를 볼 수 있습니다.

3.프로세스와 스레드의 차이점

  • 프로세스는 다른 프로세스와 자원을 공유하지 않는 반면에
    스레드는 같은 프로세스 내의 다른 스레드와 자원을 공유하는 차이가 있습니다.

'기술면접' 카테고리의 다른 글

트랜잭션이란?  (0) 2023.04.03
TCP와 UDP의 공통점과 차이점  (0) 2023.03.31
Filter, Interceptor, AOP 정의  (0) 2023.03.30
DI 구현 방법 비교해보기  (0) 2023.03.30
Parameter와 Argument  (0) 2023.03.30