240419 프로세스

이수진·2024년 4월 19일

프로세스

프로세스 != 프로그램
프로세스(process)는 현재 실행되고 있는 프로그램의 인스턴스이다.
프로그램(program)은 컴퓨터 메모리에 저장되어 있는 코드 파일이다. 이 프로그램을 실행하면 그때 프로세스가 생성된다.

프로세스 메모리 구조

프로세스 메모리는 Text, Data, Heap, Stack 4개의 영역으로 구분할 수 있다.

1. Text (= Code) 영역

  • 실행될 프로그램의 코드가 들어있다.

2.Data 영역

  • 초기화된 전역변수와 정적변수를 저장한다.
  • 위 변수들은 프로그램이 시작될때 할당되어 종료할 때 소멸된다.

3.Heap 영역

  • 런타임시 크기가 결정되는 동적 메모리 영역이다.
  • 메모리 주소 값에 의해서만 참조되고 사용된다.

4.Stack 영역

  • 호출된 함수가 수행을 끝내고 돌아올 주소와 데이터를 임시로 저장하는 공간이다.
  • 컴파일시 크기가 결정된다. 따라서 재귀함수가 반복되거나 지역변수를 너무 많이 가지고 있어 메모리를 초과하게 되면 stack overflow가 발생한다.
  • LIFO(Last In First Out) 방식으로 함수 호출 시 저장하고 수행이 끝나면 반환된다.

프로세스 제어 블록(PCB)

PCB(Process Control Block)는 운영체제가 프로세스를 제어하기 위해 프로세스의 속성을 저장하는 자료구조이다.

프로세스 생명 주기

프로세스가 실행되고 종료되기 까지 여러 단계를 거치게 된다. 이때 겪는 프로세스의 상태 변화를 프로세스 생명 주기라고도 한다.

1. 신규(New)

  • 프로세스가 방금 생성되어 메인메모리에 올라온 상태.
  • 아직 실행 할 수는 없는 상태.
  • 수용(Admit) 동작을 통해 준비(Ready)상태로 넘어간다.

2. 준비(Ready)

  • 변수 초기화 같은 기초 준비작업이 끝나고 실행 가능한 상태.
  • 스케줄러를 통해 발송(Dispatch)되어야 수행(Running)상태가 된다.

3. 수행(Running)

  • CPU에서 프로세스를 실행하고 있는 상태.
  • 선점 스케줄링에 의해 중단(Pause)되면 준비상태가 된다.
  • I/O 이벤트가 필요하면 대기(Waiting)상태가 된다.
  • 수행이 완료되면 종료(Termination)상태가 된다.

4. 대기(Waiting)

  • 프로세스 실행 도중 I/O 작업이 필요하여 I/O 작업을 수행하는 상태.
  • I/O 작업이 끝나면 준비 상태가 되고 이후 수행 상태로 돌아간다.

5. 종료(Termination)

  • 프로세스가 종료된 상태
  • 사용하던 메모리 영역이 해제된다.

출처 : https://www.baeldung.com/cs/process-lifecycle

0개의 댓글