Link Search Menu Expand Document

Process

프로세스(Process)

프로세스를 한마디로 표현하면 실행중인 프로그램이다. 디스크로 부터 메모리에 적제되어 CPU의 할당을 받을 수 있는 작업의 단위이다.

  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
  • 운영체제로부터 시스템 자원을 할당 받는 작업의 단위
  • 동적인 개념으로는 실행된 프로그램을 의미

Process는 어떻게 구성 되어있을까?

Code, Data, Staack, Heap의 구조로 독립된 메모리 영역을 가진다.

  • Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
  • Data : 전역 변수, 정적 변수, 배열 등(초기화 된 데이터)
  • Stack : 지역변수, 매개변수, 리턴 값(임시 메모리 영역)
  • Heap : 동적 할당 시 사용(new(), mallock()등)

  • 프로세스는 각각 독립된 메모리 영억을 할당 받는다.
  • 프로세스는 최소 1개의 스레드(main Thread)를 가지고 있다.
  • 각 프로세스는 별도의 주소 공간에서 실행된다.
  • 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC,inter-process communication)을 사용해야 한다.
    • ex) pipe, file, socket 등을 이용한 통신 방법 이용

Process가 여러개라면 어떻게 관리 할까?

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

PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다. 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성한다. 프로세스는 CPU를 할당받아 작업을 처리하다가도 프로세스의 전환이 발생하면, 진행하던 작업을 저장하고 CPU를 반환해야 하는데, 이때 작업했던 진행상황을 모두 PCB에 저장하게 된다. 그리고 다시 CPU를 할당 받게 되면 PCB에 저장되어있던 내용을 불러와 이전에 종료됐던 시점부터 다시 작업을 수행한다.

PCB에 저장되는 정보

  • 프로세스 식별자(ProcessId, PID) : 프로세스 식별 번호
  • 프로세스 상태: new, ready, runnning, waiting, terminated 등의 상태를 저장
    • 생성(create) : 프로세스가 생성되는 중이다.
    • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
    • 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
    • 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
    • 종료(terminated) : 프로세스의 실행이 종료되었다.
  • 프로그램 카운터: 프로세스가 다음에 실행할 명령어의 주소
  • CPU 레지스터
  • CPU 스케줄링 정보: 프로세스 우선순위, 스케줄 큐에 대한 포인터 등
  • 메모리 관리 정보: 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
  • 입출력 상태 정보: 프로세스에 할당된 입출력 장치들과 연린 파일 목록
  • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등