[Backend] OS의 프로세스 관리

Updated:

🖥 프로세스 VS 프로그램

우리가 흔히 사용하는 프로세스, 프로그램 이라는 단어는 서로 어떤 차이가 있을까 ?

메인 메모리에 올라가 실행 중인 상태를 프로세스 라고 하고 HDD 에 있는 경우 프로그램 이라고 한다.

그래도 프로세스라 하든 프로그램이라 하든 의미는 다 같게 통용 될 것 같다..

프로세스는 Program Code, Data, Stack, PCB 를 가지고 있다.

Program Code 는 프로세스가 실행 될 때 사용 할 코드이다.

Data 는 프로세스의 Static, 전역 변수를 저장 하는 곳 이다.

Stack 은 프로세스의 지역 변수를 저장 하는 곳 이다.

이들을 통틀어 Process Image 라고 한다.

🛠 PCB (Process Control Block)

프로세스 안에 있는 PCB 는 어떻게 구성되어 있을까 ?

  1. 프로세스 ID, 부모 프로세스 ID, 유저 ID 를 저장하고 있는 PID
  2. 프로세스가 스위칭 되는 경우 중단 지점 등 의 정보를 저장하고 있는 PSI
  3. 자원, 우선순위, 스케줄링 등 프로세스를 제어 하기 위한 정보를 저장하고 있는 PCI

여기서 PSI 는 Processor State Information 의 줄임말이다. Process 가 아니라 Processor 임을 주의하자.

Processor 는 CPU 라고 생각하면 된다.

📕 Process Switching

[Backend] OS의 일반적인 동작 방식 에서 말했듯이 OS 는 CPU 를 쉬지 않고 일하게 하기 위해 프로세스를 계속 스위칭 한다.

그렇다면 어떤 경우에 실행 하던 프로세스를 바꿀까 ?

  1. Interrupt
    • Timer 에 따른 Clock Interrupt
    • I/O Interrupt
    • 잘못 된 메모리 접근으로 인한 Memory Fault
  2. Trap : 프로세스에 오류가 발생 할 때
  3. System Call : OS 가 제공하는 서비스를 이용하기 위해

이러한 경우에 OS 는 다른 프로세스에게 CPU 사용 권한을 준다. 덕분에 CPU 는 쉬지 않고 계속 일하게 된다.

👓 Process Status

프로세스는 총 7 가지의 상태를 가진다.

  1. New : 프로세스가 Ready 상태로 진입하기 직전 상태
  2. Ready : 실행 할 준비가 완료 된 프로세스
  3. Running : 프로세스가 실행 중 인 상태
  4. Blocked : I/O 작업으로 인해 프로세스가 멈춰있는 상태
  5. Exit : 프로세스의 실행이 완료 되어 종료 된 상태
  6. Blocked / Suspend : Blocked 상태인 프로세스가 HDD 의 Swapped Area 로 옮겨진 상태
  7. Ready / Suspend : Swapped Area 에 있는 프로세스가 I/O 작업이 끝났지만 여전히 Swapped Area 에 있는 상태

🔑 언제 Suspension 이 발생할까 ?

어떤 상태에서 Suspend 상태로 바뀌는 것을 Suspension 이라고 한다. 그렇다면 어떤 상황일때 Suspension 이 발생할까 ?

  1. Swapping : 메모리에 있는 프로세스가 모두 I/O 작업을 하고있는 경우 새로운 프로세스를 실행 시키기 위해

    메모리에 있는 프로세스를 전부 Swapped Area 로 보내 Blocked → Blocked / Suspend 로 바꾼다.

    우리는 이렇게 Ready Queue 에 프로세스를 담아 관리한다.

    메모리를 무한으로 가지고 있는 컴퓨터는 없고 레디 큐의 공간도 한정적이기 때문에 프로세스가 모두

    Blocked 상태 인 경우 Swapped Area 로 보낸다.

  2. OS 의 이유 : 문제가 있는 프로세스 이거나 백그라운드 프로세스인 경우 Running → Ready / Suspend 로 바뀐다.

  3. 대화식 사용자의 요청 : 사용자가 디버깅을 요청하는 경우 Running → Ready / Suspend 로 바뀐다.

  4. 타이밍 : 주기적으로 실행되는 프로세스가 다음 주기가 될 때 까지 Running → Ready / Suspend 로 바뀐다.

  5. 부모 프로세스의 요청 : 부모 프로세스가 자식 프로세스를 조정하기 위해 Ready → Ready / Suspend 로 바꾼다.

📕 참조, 출처

  • 3-1 운영체제 수업 자료

Categories:

Updated:

Leave a comment