프로세스 관리

이지수·2022년 10월 27일
0

Backend Loadmap

목록 보기
16/22
post-thumbnail

프로세스

프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램 입니다. 여기에는 실행 중인 프로그램의 모든 정보가 포함됩니다.

  • 현재 프로그램 카운터
  • 누적 실행 시간
  • 해당 프로그램에서 현재 열려 있는 파일 목록
  • 페이지 테이블(프로세스의 페이지 정보를 저장하고 있는 테이블)

프로세스 제어 블록(PCB)

모든 프로세스는 프로세스 제어 블록(PCB) 이라는 데이터 구조로 표현됩니다 . PCB는 프로세스의 모든 중요한 정보를 보관합니다.

  • Pointer : 부모 프로세스에 대한 포인터입니다.
  • Process ID : 프로세스를 나타내는 고유 ID 번호입니다.
  • Process State : 현재 프로세스가 있는 상태(Ready, Wait, Exit 등).
  • Process Priority : 프로세스가 얼마나 긴급한지를 나타내는 숫자 값입니다. 우선 순위가 가장 높은 프로세스가 CPU에 먼저 할당됩니다.
  • Program Counter : 프로세스 라인에서 다음 명령어의 주소입니다.
  • Accounting Information : CPU 사용량, 시간 제한, 작업 또는 프로세스 번호 등 입니다.
  • CPU Register : 누산기, 인덱스 레지스터, 범용 레지스터 등 입니다,
  • I/O Information : 프로세스에 할당된 열린 파일 및 I/O 장치의 배열입니다.

프로세스 수명 주기

모든 프로세스에는 수명 주기가 있습니다.

  • Start: 프로그램이 메인 메모리에 할당된다.
  • Ready: 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 마친다.
  • Running: CPU가 해당 프로세스를 실행한다.
  • Waiting: 프로세스가 끝나지 않은 시점에서 I/O로 인해 CPU를 사용하지 않고 다른 작업을 한다. (해당 작업이 끝나면 다시 CPU에 의해 실행되기 위해 ready 상태로 돌아가야 한다.)
  • Terminated: 프로세스가 완전히 종료된다.

프로세스 생성

운영 체제에서 프로세스는 자식 프로세스를 만들 수 있습니다. 따라서 모든 프로세스는 생성 프로세스가 상위 프로세스이고 생성된 프로세스가 해당 프로세스의 하위 프로세스인 단일 루트에서 나옵니다.

초기 부팅 프로세스가 완료되고 운영 체제가 로드되면 일부 초기 프로세스가 생성됩니다. 사용자가 시스템에 로그인하면 사용자 셸 프로세스가 생성되고 사용자가 명령(emacs, nano 등)을 입력하면 해당 셸 부모 프로세스에서 새 프로세스가 생성됩니다. 따라서 최종 관계는 나무처럼 보입니다.

생성 매커니즘

대부분의 운영 체제는 프로세스 생성을 위한 두 가지 기본 메커니즘을 지원합니다.

  • fork: 이 메커니즘을 사용하면 운영 체제가 PCB를 사용하여 새 자식 프로세스를 만든 다음 부모 PCB의 모든 값을 자식 PCB에 복사합니다. 그 후, 두 프로세스 모두 프로그램 카운터를 포함하는 PCB에 정확히 동일한 값이 포함되어 있기 때문에 자식과 부모는 모두 분기 호출 직후 명령에서 실행을 계속합니다.
  • Exec: 자식의 이미지를 대체하고 새 프로그램을 로드합니다. Child's PCB는 초기화된 새로운 값을 담고 있으며 프로그램은 처음부터 실행됩니다.

새 프로그램을 만드는 메커니즘은 부모의 것과 똑같은 PCB로 자식 프로세스를 만드는 fork 를 호출한 다음 자식의 이미지를 새 프로그램의 이미지로 바꾸는 exec 를 호출하는 것과 같습니다.

참고
프로세스 관리(PCB)
프로세스 및 프로세스 관리(생성)

0개의 댓글