Process 란 무엇인가?

CHOI·2022년 9월 14일
1

📋프로세스란?

정의

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.
종종 스케줄링의 대상이 되는 작업(task)라는 용어와 거의 같은 의미로 사용. (위키백과)

  • 프로그램이 실행되면 프로세스 인스턴스가 생성된다.
  • 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 컴퓨터 메모리(ram)에 적재된다는 뜻
  • 일반적으로 프로세스와 프로그램을 같은 개념으로 얘기할때가 많은데 엄밀히 따지면 둘은 다른 개념이다.

프로그램과 프로세스는 뭐가 다를까??

  • 프로그램
    • 어떠한 작업을 위해 실행할 수 있는 파일
    • 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음
    • 예를 들어 내 pc에 깔려있는 크롬,줌,한글 등의 파일을 프로그램이라고 한다
  • 프로세스
    • 내 pc에 깔려있는 프로그램을 더블 클릭해서 실행하게 되면 CPU를 차지하면서 수행하는 수행 주체를 프로세스라고 한다
    • 즉, 프로그램 한 개의 인스턴스가 프로세스이다
    • 프로그램은 하나지만 이 프로그램을 실행하는 프로세스는 여러개일 수 있다
      • 예를 들어 크롬을 더블클릭해서 실행하면 이 크롬 실행창이 뜰 것인데 여기서 크롬창을 여러개 만들 수 있다. 크롬 실행파일 자체는 프로그램이고 그 실행파일을 클릭해서 만든 여러 개의 창은 프로그램을 실행하는 인스턴스, 즉 프로세스라고 볼 수 있다.

둘의 차이는 프로세스와 프로그램의 차이는 정말 명확하다. 프로그램 자체는 생명이 없습니다. 프로그램은 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음이다. 이 프로그램의 명령어와 정적 데이터가 메모리에 적재되면 생명이 있는 프로세스가 된다.즉 프로세스란 실행 중인 프로그램이다.

프로세서란??

그렇다면 프로세서란 무엇일까? 프로세서란 말 그대로 프로세스를 처리하는 주체인 CPU를 말한다.

여러 개의 프로세스가 동시에 실행될 수 있는 이유?

사실 하나의 프로세서(CPU)는 한 순간에 하나의 일만 처리할 수 있다.

프로세스가 동시에 여러 개가 실행될 수 있는 이유는 운영체제가 엄청나게 빠른 속도로 프로세서(CPU)가 실행할 프로세스를 교체하기 때문이다.

그래서 운영체제는 마치 사용자가 이렇게 동시에 여러 개의 프로세스를 실행하고 있다는 “환상”을 준다.

프로세스의 구성

프로세스에 대한 정보는 프로세스 제어블록(PCB, Process Control Block)또는 프로세스 기술자(process descriptor)라고 부르는 자료구조에 저장된다. 대부분 PCB 라고 부른다.

추가적인 내용은 링크를 참고

프로세스의 관리

운영체제는 프로세스들의 실행 사이에 프로세스를 교체하고 재시작할 때 오류가 발생하지 않도록 관리해야한다. 이를 위해 운영체제는 프로세스의 상태를 실행(running), 준비 (ready), 블록 (block) 상태로 분류하고 프로세스들을 상태전이(state transition)를 통해 체계적으로 관리한다.

사용자가 프로그램을 실행하면 프로세스가 생성되고 준비 리스트에 추가가 된다. 프로세스는 프로세서(CPU)가 사용가능한 상태가 되면 CPU를 할당 받는다. 이를 준비 상태에서 실행 상태로 상태전이된다고 한다.

이 과정을 디스패칭(dispatching)이라고 하고, 디스패처(dispatcher)가 이 일을 수행한다.

이제 프로세스는 실행상태에서 CPU를 이용하면서 연산한 후 CPU 를 자발적으로 반납하고 작업이 끝나지 않았으면 다시 준비상태에 들어가게 된다. 그리고 이러한 과정을 반복하게 된다.

만약 프로세스가 다시 사용하기 전에 입출력을 받아야 하는 상황이라면 입출력이 완료될때 까지 자신을 블록한다. 입출력이 완료되면 운영체제가 프로세스를 준비상태로 다시 전이시키게 된다.

📋프로세스 제어 블록 (Process Control Block, PCB)

정의

특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다.

  • 운영체제는 프로세스 생성과 동시에 고유한 PCB를 생성한다.
  • 프로세스는 CPU를 할당 받아 작업을 처리하다가 중간에 프로세스 전환이 발생하면 진행하던 작업의 진행사항을 전부 PCB 에 저장한다.
  • 다시 CPU를 할당받으면 PCB에 저장되어있던 내용들을 불러와서 이전에 종료된 시점부터 다시 작업을 수행한다.

PCB 에 저장되는 정보들

  • 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
  • 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
  • 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소 (context switching 이후 다시 실행할 명령어의 주소)
  • CPU 레지스터
  • CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
  • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
  • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
  • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등

🌐Reference

Difference between Process and Program - javatpoint

Process와 Thread 이야기

프로세스 - 위키백과, 우리 모두의 백과사전

[운영체제] 프로세스가 뭐지?

profile
벨로그보단 티스토리를 사용합니다! https://flight-developer-stroy.tistory.com/

0개의 댓글