1. 프로세스(Process)란?

  • 하나, 또는 여러개의 스레드(thread)로 실행되는 작업의 단위
  • 컴퓨터 프로그램의 인스턴스(instance)
  • 효율적인 실행을 위해 운영체제의 커널(kernal)에 의해 관리
  • 운영체제로부터 PCB(Process Control Block)를 할당받고 이를 통해 운영체제의 관리를 받게된다.
  • 프로세스의 작업은 필요한 프로세서(CPU), 메모리, 주변기기 등의 자원을 운영체제에 요청, 할당받아 실행된다. 

 

 

2. 프로세스 제어 블록(Process Control Block)

  • 운영체제가 프로세스를 제어하기 위해 프로세스에게 할당하는 데이터 블록
  • PCB의 정보를 어떻게 참조하고 갱신하냐에 따라 OS의 성능이 크게 갈린다.

 

  • 프로세스 실행에 필요한 데이터를 보관
    • PID(Process IDentifider)
      • 프로세스의 고유 식별자

    • 프로세스의 상태(Process State)
      • 생성, 실행, 준비, 대기, 종료 등 프로세스의 상태 정보

    • PC(Program Counter)
      • 다음에 실행될 명령어의 위치를 나타내는 포인터

    • 레지스터 정보(Register Inforamation)
      • 프로세스가 실행중이었을 때의 CPU의 레지스터 정보를 저장해두는 영역

    • 스케줄링 정보(Scheduling Information)
      • 프로세스의 우선순위 등 스케줄링에 필요한 정보

    • 메모리 관리 정보(Memory Management Information)
      • 페이지 테이블, 세그먼트 테이블, 메모리 제한 등의 메모리 관리를 위한 정보

    • 입출력 정보(I/O Information)
      • 프로세스가 할당받은 주변장치나 파일에 대한 정보

    • 계정 정보(Accounting Information)
      • CPU 사용시간, 시간제한, 실행 ID 등의 정보

 

  • 모든 프로세스는 생성시에 고유의 PCB를 할당받고 이는 프로세스의 종료시 반환된다.
    PCB의 일부 정보는 프로세스가 종료된 후에도 잠시동안 소멸되지 않고 남아있다.

 

  • Context Switching
    • 인터럽트가 발생할 경우 실행중인 프로세스의 처리를 중단하고 PCB에 프로세스의
      상태를 저장(Context Saving)하고 다음으로 실행될 프로세스의 정보를 레지스터에
      적재(Context Restoring)하는 과정

    • 인터럽트의 발생 요인
      • 기계적 고장, 전원부족 등 프로그램 외적인 결함(External Interrupt)
      • CPU 사용시간 만료(Timeout), 입출력 요청의 완료 등 외부로부터의 인터럽트 요청
      • 입출력 요청(I/O Request)이나 자식 프로세스 생성(Fork Child) 등의 커널 서비스 요청(System Call)
      • 프로그램의 내부적 결함, 즉 예외(Exception)
    • Context Switching의 오버헤드
      • Context Switching 이 발생하는 동안 CPU는 아무 작업도 실행하지 않음
      • 자주 발생할 수록 오버헤드로 인해 성능 저하를 가져올 수 있음

 

 

3. 프로세스의 상태(Process State)와 전이

 ① 프로세스의 상태

  • 생성(New / Create) : 프로세스가 생성되어 PCB를 할당받은 상태
  • 준비(Ready) : 프로세스가 실행 준비를 마치고 CPU만 할당받으면 언제든 실행 가능한 상태
  • 실행(Run) : 프로세스가 CPU를 할당받아 실행되고있는 상태
  • 대기(Block / Wait) : 프로세스가 인터럽트의 처리가 완료되길 대기하고있는 상태
  • 종료(Terminated) : 프로세스의 실행이 종료된 상태

 

 ② 프로세스의 상태 전이(Process State Transition)

출처: https://www.d.umn.edu/~gshute/os/processes-and-threads.xhtml

  • Creation
    • 생성(New)된 프로세스가 준비 상태(Ready)가 되어 대기열에 들어감

  • Dispatch
    • 준비상태(Ready)의 프로세스가 CPU를 할당받아 실행상태(Run)에 들어감

  • Timeout
    • 실행(Run)중이던 프로세스가 운영체제로부터 할당받은 CPU 사용시간을 모두 소진하여
      준비상태(Ready)로 되돌아감

  • Blocking
    • 실행(Run)중이던 프로세스가 입출력 요청, 시그널 대기 등으로 인해 발생한 인터럽트의 처리가
      완료될 때 까지 대기상태(Block)에 들어감

  • Unblocking / Wake up
    • 인터럽트의 처리가 완료되어 대기상태(Block)였던 프로세스가 다시 준비상태(Ready)가 되어
      대기열에 들어감

  • Termination
    • 실행(Run)중이던 프로세스가 작업을 마치고 종료상태(Terminated)에 들어감

+ Recent posts