본문 바로가기

CS/운영체제(OS)

OS - 프로세스 관리

728x90
  • 프로그램과 프로세스
    • 프로그램: 하드디스크에 설치된 정적인 개체
    • 메인 메모리에 적재되어 메모리 구조를 이루고 카운터나 레지스터 처럼 자원을 사용하며 사용자가 사용하는 개체

  • 프로세스 생명주기

    • New: 하드디스크에 있다가 인터럽트에 의해 메인 메모리에 적재된 상태를 말한다.
    • Ready: 메모리에 적재된 후 변수 초기화 같은 초기화를 마치고 cpu가 할당되면 바로 실행될 수 있는 상태이다.
    • Running: cpu를 할당받고 작동중인 상태이다.
    • wait: 프로그램이 실행 중 인터럽트가 발생해 잠시 유저 모드에서 커널 모드로 변경되어 프로그램이 대기중인 상태를 말한다.
    • Terminated: 프로그램 종료프로세스 생명주기는 위 처럼 5가지 상태를 지닌다.
  • 위 처럼 실행,대기,초기화를 계속 반복하다가 결국 종료된다.
  • Ready Queue
    • 레디 상태의 프로세스는 위의 레디 큐로 들어간다. 그리고 운영체제는 cpu가 적절하게 레디큐에서 작업을 실행 할 수 있도록 돕는다.그러므로 운영체제는 프로세스의 상태를 계속 주시하고 관리해야한다. 이를 위한 것이 프로세스 제어 블록 (Process Control Block) 줄여서 PCB이다.
      • PCB는 프로세스의 상태를 저장하기 위한 구조체이다.
        • 프로세스 식별자
        • 프로세스 상태
        • 프로그램 카운터
        • 레지스터 저장 영역 - 인덱스 레지스터, 조건 코드 등 정보로 인터럽트가 발생하면 프로그램 카운터와 함께 저장하여 재실행때 복구할 수 있도록 한다.
        • 프로세스 스케줄링 정보
        • 계정 정보
        • 입출력 상태 정보
        • 메모리 관리 정보 등등

스케줄링

  • 컴퓨터는 아주 많은 프로그램들이 계속 메모리에 적재되고 종료되고 cpu는 계속 할당되고 인터럽드가 발생하고 유저모드와 커널모드가 반복되며 작업을 수행한다. 당연히 이러한 작업은 체계적이고 효율적으로 동작해야할 것이다.
  • 장기 스케줄러
    • 작업 스케줄러라고도 하며, 디스크에서 메모리로 작업을 가져와 처리할 순서를 결정한다. job큐에서 어떤 것을 적재할지 결정한다.
  • 단기 스케줄러
    • 단기 스케줄러는 레디큐에서 어떤 작업을 먼저 cpu에 할당할지 결정한다.
  • 중기 스케줄러
    • 적재되어 있는 작업 중 사용 빈도가 적다고 판단되면 하드디스크에 잠시 내리고 다른 작업을 가져오게 되는데, 내렸던 프로그램이 다시 적재될 때 큐에 들어가게 된다. 이 때 중기 스케줄러가 작동한다.
  • long, short 스케줄러의 차이
    • 사용 빈도: 단기 스케줄러는 실행할 프로세스를 수시로 선택한다. 반면 장기 스케줄러는 시스템에 새로운 작업이 minute단위로 들어오므로 단기 스케줄러에 비해 상대적으로 드물게 수행된다.