프로세스(Process) 란?

Lee Jun Hyeong·2023년 3월 23일

일단, 프로그램과 프로세스의 차이점을 간단하게 살펴보자.

프로그램(Program) vs 프로세스(Process)

  • 프로그램(Program): 어떤 작업을 위해 실행할 수 있는 파일
  • 프로세스(Process): 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 또는 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적 개체)
    간단히 말해, 실행중이냐 아니느냐 차이

프로그램 -> 프로세스가 되는 과정

  1. 하드디스크에 있는 프로그램을 실행한다.
  2. 실행을 위해 메모리 할당이 이루어진다.
  3. 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다.
    이 때부터 프로세스라고 불린다.

바이너리 코드란?
컴퓨터가 인식할 수 있는 01로 구성된 이진코드 를 의미한다.

프로세스(Process) 란?

하나 혹은 그 이상의 Thread로 실행되고 있는 컴퓨터 프로그램의 instance (독립적 개체)이다.
즉, 프로세스는 실행되고 있는 프로그램

프로세스 메모리 구조

Code 영역

Text 영역이라고도 한다.

  • 사용자가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 공간
  • 프로그램을 시작할 때, 컴파일한 프로그램(기계어)이 저장된다. 읽기 전용(Read-Only) 이기 때문에 프로세스에서 변경할 수 없고 변경시 오류를 발생 시킨다.
  • 코드 자체를 구성하는 메모리 영역으로 Hex 파일이나 Bin 파일 메모리이다. (이진 정보 형식이라는 얘기이다.)

Data 영역

  • 필요에 의해 메모리를 동적으로 할당할 때 사용하는 메모리 영역으로 동적 메모리 영역이라고 부른다.
  • 전역 변수 또는 static 변수 등 프로그램이 사용하는 데이터를 저장하는 공간이다. 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸된다.
  • 전역 변수또는static 값을 참조한 코드는 컴파일이 완료되면 data 영역의 주소값을 가르키도록 바뀐다. 전역변수가 변경 될 수도 있어 Read-Write로 되어있다.

    +) 더 자세히 들어가면 BSS(Block Stated Symbol) 영역이 있다. 이 영역에는 초기화 되지 않은 전역변수가 저장됩니다. 초기화 된 전역변수는 Data 영역에 저장되어 비휘발성 메모리인 ROM에 저장되는데 이 부분은 비용이 많이 들어 RAM에 저장될 것과 ROM에 저장될 것을 구분하기 위해 영역을 구분해 사용한다.

Stack 영역

  • 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터(지역변수, 매개변수, 리턴값 등)를 임시로 저장하는 공간이다.
  • 이 영역은 함수 호출시 기록하고 함수의 수행이 완료되면 사라진다.
  • 컴파일 시 stack 영역의 크기가 결정되기 때문에 무한정 할당 할 수 없다. 따라서 재귀함수가 반복해서 호출되거나 함수가 지역변수를 메모리를 초과할 정도로 너무 많이 가지고 있다면stack overflow가 발생한다.

Heap 영역

  • 프로그래머가 필요할 때마다 사용하는 메모리 영역이다.
  • 동적 데이터 영역이라고도 할 수 있따. 메모리 주소 값에 의해서만 참조되고 사용되는 영역이기 떄문에 프로그램 동작 시(런타임)에 크기가 결정된다.
  • heap 영역은 런타임에 결정되지만, 자바에서는 객체가 heap영역에 생성되고 GC에 의해 정리된다.

프로세스 특징

프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)구조를 할당받게 되며, 프로세스당 최소 1개의 메인스레드를 가진다.
각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
만약, 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스간의 통신(IPC, inter-process communication)을 사용해야한다.(예를 들어 pipe, file, socket)


참고
https://blockdmask.tistory.com/22
https://zangzangs.tistory.com/107
profile
"왜" 사용하며, "어떻게" 사용하는지에 대해

0개의 댓글