프로세스

하드 디스크에 저장된 프로그램이 처리 혹은 실행되기 위해서는 주기억장치로 적재되어 운영체제하의 로더의 도움으로 관리 개체로 등록되어야 하는데, 이 상태를 프로세스라 부른다.


프로세스 속성

  • 프로세스 고유번호(PID)
  • 프로세스 메모리 정보

    메모리 정보가 관리되지 않는다면 프로세스들 사이의 상호 침범을 탐지할 수 없을 것이다.

  • 프로세스 상태

    운영체제가 CPU를 어느 프로세스에게 배정할 것인가 탐색하기 위해서는 프로세스들이 입출력이 완료되기를 기다리고 있는지 아니면 CPU할당을 기다리고 있는지 등의 프로세스 현재 상태가 필요하다.

  • 프로세스 진행지점

    CPU는 운영체제가 설정해 둔 타이머 인터럽트에 의해 언젠가는 그 프로세스를 떠나게 되는데, 이 때 다음 실행할 기계 명령어에 대한 주소를 기록해 두어야만 다음 기회에 연속된 처리가 가능하다.

  • 프로세스 문맥

    time sharing에서 프로세스를 옮겨갈때 그 문맥을 저장한다. 다시 옮겨 올때는 저장한 문맥을 복구한다.

  • 프로세스 우선순위

    CPU를 점프시켜 줄 프로세스를 선택하는데 필요한 요소로서 유닉스,리눅스 명령어에는 nice, renice가 있다.

  • 프로세스 자원목록
  • 회계 정보

    프로세스가 최초로 생성되어 지금까지 머무른 시간. 슈퍼컴퓨터 사용료 청구시 사용된다.


프로세스 관리 블록(Process Control Block : PCB)

운영체제가 프로세스 관리를 위해 필요한 모든 정보를 기록하는 표를 PCB라 한다. PCB에는 주로 위에서 언급한 전형적인 프로세스 속성들이 저장된다. file descriptor 역시 PCB정보의 일부가 된다.


프로세스 상태

  • 준비 상태(Ready)

    운영체제 외부로부터의 요청에 의해 최초로 프로세스가 생성되었거나, CPU를 배정받아 실행 도중 주어진 시간이 만료되어 다음 CPU 배정 차례를 기다리고 있는 상태로서, 여러개의 프로세스가 이 상태에 있을 수 있다.

  • 실행 상태(Running)

    운영체제에 의해 준비 상태에 있던 프로세스에게 CPU가 배정되면 그 프로세스는 실행 상태가 된다. CPU배정이란 CPU의 제어 흐름이 해당 프로세스로 점프함을 의미하는데, 이 과정을 디스패치(Dispatch)라고도 한다. 또한, 준비 상태의 프로세스가 여러 개 있을 경우 운영체제는 프로세스 우선 순위 등 다양한 기준 설정 방법에 의거 CPU를 배정할 프로세스를 선택하는데, 운영체제의 이런 활동을 CPU스케줄링이라 부른다.

  • 대기 상태(Blocked)

    프로세스가 입출력을 하기 위해서는 시스템 호출을 이용하여 운영체제의 도움을 받아야 한다. 입출력이 끝날때까지 CPU를 받을 자격이 없다.

  • 보류 상태(Suspended)

    CPU만 주면 실행 가능한데 디스크로 쫒겨나 있다. 메모리 부족시 프로세스는 디스크로 쫒겨나는데 그 디스크 공간을 swap space 라고 한다. swap space는 어느 운영체제에나 다 있다.

  • 대기 보류 상태(Block-Suspended)

    입출력 대기 중인데 상당히 대기 중 일때 디스크로 쫒아낸다.

  • 종료 상태(Terminated)

    프로세스가 모든 처리를 마치고 시스템 호출을 통하여 운영체제에게 완료 요청을 하면 운영체제는 해당 프로세스를 종료 상태로 전환하고 제거 준비를 한다. 이 상태의 프로세스를 좀비(Zombie)라고 하는데, 유닉스의 경우 좀비는 그의 부모 프로세스가 운영체제에게 보내는 제거 요청에 의해 완전히 사라진다.