Operating System

[OS] 프로세스 (Process)

DH_0518 2024. 7. 9. 22:08
프로세스(Process)

 

 

프로세스란 "실행"중인 프로그램 또는 작업으로, 관리의 단위를 의미한다. 즉 PC에 설치된 프로그램이 실행중이라면 그것이 곧 프로세스다. 프로세스에서의 연산은 CPU와 RAM을 사용하여 이루어진다. 프로세스의 구조, PCB, 동작과정을 통해 더 자세히 알아보자

 

 

 

프로세스의 구조

 

프로세스는 크게 stack, heap, data, code 영역으로 구성되어 있다.

  • stack
    • 임시 데이터가 저장되는 영역으로, 함수 및 지역변수 등이 선언되면 stack 영역에 저장된다
    • 함수 호출 시 생성되며, 함수가 끝나면 반환된다
    • 프로세스가 메모리에 로드될 때 stack 사이즈가 고정되므로, 동적으로 사이즈를 변경할 수 없다
    • 명령 실행 시 자동으로 증가/감소 하기 때문에, 보통 메모리의 마지막 번지를 지정한다
  • heap
    • 코드에서 동적으로 만들어지는 데이터가 저장되는 영역으로, 유저가 직접 공간을 할당/해제하는 메모리 공간이다
    • 실제로는 stack 영역과 같은 공간을 공유하며 주소가 할당되는 방식이 다르다
    • heap이 메모리의 낮은 주소부터 할당되고(FIFO 방식), stack이 높은 주소부터 할당된다(LIFO 방식)
    • stack과 heap이 상대 공간을 침범하는 일이 발생할 수 있는데, 이를 각각 stack overflow와 heap overflow라고 한다
  • data
    • 전역 변수나 초기화된 데이터가 저장되는 영역으로, 전역변수, 정적변수, 배열, 구조체 등이 저장된다
    • 프로그램 실행 시 생성되며, 프로그램이 종료될 때 반환된다
    • BSS영역과 Data(GVAR) 영역으로 나누어진다
    • 초기화되지 않은 데이터는 BSS 영역에, 초기화된 데이터는 GVAR 영역에 저장된다
  • code(text)
    • 기계어로 컴파일된 소스 코드가 저장되는 영역으로, 실행 명령을 포함하는 코드들이 들어간다
    • 읽기 전용 영역이기에 프로세스가 함부로 변경할 수 없고, 변경 시 오류를 발생시킨다

 

 

 

Heap은 위에서부터 쌓이고(FIFO), 스택은 밑에서부터 쌓인다(LIFO)

 

 

 

PCB(Process Control Block)

 

프로세스가 원활하게 동작하기 위해 다양한 정보가 필요한데, 이런 정보(Meta data)를 가지고 있는 데이터베이스를 PCB라고 한다.

      • Process의 모든 정보를 가지고 있는 데이터베이스이다
      • OS에서 Process는 PCB로 나타내어진다
      • 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다
      • PCB가 가지고 있는 정보
        • PID: 32bit 양의 정수로 이루어진 고유한 값
        • 메모리 관련 정보: stack, heap, code, text(기계어), static(read-only, read-write)

 

 

프로세스의 동작

 

프로세스의 생명 주기는 생성,준비,실행,(대기),완료 순서로 흘러간다

이때 실제로 작업을 수행하는 CPU Core는 한정적인데 Process는 수백개 이상이 될 수 있으므로, Process는 CPU Core를 시분할해서 사용한다. 즉, cpu에서 처리할 프로세스 순서를 정해놓는데 이를 '스케줄링(Scheduling)' 이라고 한다

 

  1. 생성: PCB가 생성되는 단계이다. 설치된 Program이 Memory에 할당되어 Instance화 되면 프로세스가 된다
  2. 준비: 대기열 queue에서 실행을 기다리는 단계이다
  3. 실행: Dispatch(스케줄링된 프로세스를 순서에 맞게 선택해서 메모리로 보내는 작업)가 일어난다
  4. 대기: '실행'단계에서 I/O request가 들어왔을 때, Non-blocking이면 계속 실행하고, Blocking이면 '대기'상태가 된다
  5. 완료: 프로세스가 종료되고 PCB가 삭제된다

 

 

 

프로세스의 RAM

 

프로세스 연산에서 CPU가 참조하는 RAM 주소는, H/W에 존재하는 실제 메모리(Physical Memory)가 아니라 OS가 지정해준 가상 메모리(Virtual Memory)이다.

  • 프로세스에게 전체 공간이 아닌, 제한된 공간을 할당해주기 위해서 사용(보안적인 측면)
  • 가상 메모리를 따라가면 물리 메모리가 나올 수도, hdd가 나올 수도 있다
  • Window는 Thread 기준으로, Linux/Mac/Docker는 Process 기준으로 가상 메모리를 할당한다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reference

 

[운영체제] 프로세스 구조

제일 중요하다고 생각해요!

velog.io

 

[운영체제]CPU 스케줄링(feat. PCB, Context Switching)

CPU는 각 프로세스가 누군지 알아야 관리 및 실행을 할 수 있다. 이때 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata이다.🫧Process MetadataProcess ID : 프로세스의 고유 IDProcess State : 준비(Read

velog.io

 

OS - 프로세스 메모리 구조 - kwon | kwon's Blog

프로세스란? 프로세스란 운영체제 입장에서 하나의 작업 단위이며, 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 프로그램과 프로세스 프로그램은 일반적으로 하드 디스크

kyu9341.github.io