프로그램과 프로세스


프로그램 vs 프로세스

  1. 프로그램
    1. 저장장치에 저장되어 있는 정적인 상태
    2. 어떤 데이터를 사용하여 어떤 작업을 할지 그 절차를 적은 것
  2. 프로세스
    1. 실행을 위해 메모리에 올라온 동적인 상태
    2. 프로그램으로 작성된 작업 절차를 실제로 실행에 옮기는 것

→ 누군가 작성한 프로그램이 실행되면 프로세스가 된다.

프로그램에서 프로세스로의 전환

  1. 운영체제는 프로그램을 메모리의 적당한 위치로 가져온다.
  2. 그와 동시에 작업 지시서인 프로세스 제어 블록(Process Control Block) 만든다.
  3. 이 프로세스 제어 블록에는 프로세스를 처리하는 데 필요한 다양한 정보가 들어있다.

✅ 즉, 프로그램이 프로세스로 전환되었다는 것은 운영체제로부터 프로세스 제어 블록을 받았다는 의미

프로세스 제어 블록에 담겨 있는 정보

  1. 프로세스 구분자 : 프로세스 구분을 위함
  2. 메모리 관련 정보 : 실행하려는 프로세스가 메모리의 어디에 저장되어 있는지에 대한 위치 정보
  3. 각종 중간값


프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태


준비 상태

그 전에, 생성 상태부터 확인

생성 상태 : 프로그램이 메모리에 올라오고 운영체제로부터 프로세스 제어 블록을 할당받은 상태

→ 이렇게 생성된 프로세스가 바로 실행되는 것이 아니라 준비 상태에서 자기 순서를 기다림

준비 상태

  • 실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태
  • 프로세스 제어 블록은 준비 큐에서 기다리다가 CPU 스케줄러의 dispatch(PID) 명령에 의해 실행 상태로 바뀌어 작업 진행됨

    ❓ PID? : 프로세스 구분자


프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태


대기 상태

기존 생성, 준비, 실행, 완료의 4가지 상태만으로도 작업 진행에 무리가 없었으나 오늘날 운영체제의 효율성을 고려하여 추가된 상태

  • 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태

    → CPU 스케줄러는 준비 상태에 있는 프로세스 중 하나를 가져다 실행 상태로 만듬

  • wait status
  • 대기 상태의 프로세스는 입출력장치별로 마련된 큐에서 대기
  • 입출력이 완료되면 인터럽트 발생, 대기 상태에 있는 여러 프로세스 중 wakeup(PID)를 통해 해당 인터럽트로 깨어날 프로세스를 찾음
  • 찾게 되면 해당 프로세스의 프로세스 제어 블록이 준비 상태로 이동

‼️즉, 어떤 프로세스가 대기 → 준비 상태로 이동하는 것은 인터럽트 때문이다.

🚨 만약, 대기 상태가 없다면…

  • 프로세스가 입출력을 요구하면 CPU가 직접 데이터를 가져오지 않고 입출력 관리자에게 명령함
  • 이 상태에서 요청한 작업이 끝날 때까지 다음 작업 수행 불가
  • CPU도 아무 작업을 하지 않고 기다리게 되는 비효율성


CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업


디스패치(dispatch)

준비 상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정하는 일은 CPU 스케줄러가 담당한다.

CPU 스케줄러준비 상태의 있는 맨 앞에 있는 프로세스 제어 블록을 CPU에 전달한다.

이 때, 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 작업을 디스패치라 한다.

‼️즉, 어떤 프로세스가 대기 → 준비 상태로 이동하는 것은 인터럽트 때문이다.는


유닉스에서 Ctrl + Z 키를 눌러 프로세스가 중단되면 프로세스의 상태


휴식 상태

  1. 활성 상태 : 생성, 준비, 실행, 대기, 완료
  2. 휴식, 보류 대기 상태, 보류 준비 상태

휴식 상태

  • 프로세스가 작업을 일시적으로 쉬고 있는 형태
  • 종료된 것이 아니라 실행을 잠시 멈춘 상태
  • 사용하던 데이터가 메모리에 그대로 존재하고, 프로세스 제어 블록도 유지된다.
  • 멈춘 지점에서부터 재시작할 수 있다.
  • fg, bg 를 입력하면 다시 시작

Ctrl + C 를 누르면 프로세스 종료

Tags:

Categories:

Date:

Leave a comment