5-process-관리

5.2 프로세스 상태

  • 실행

  • 준비

  • 봉쇄

실행

프로세스가 CPU 를 보유하고 기계어 명령을 실행하고 있는 상태

  • 시스템 내에 CPU 는 1 개임. 여러 프로세스가 동시에 실행되더라도 실제 실행 상태에 있는 프로세스는 1 개

준비

프로세스가 CPU 만 보유하면 당장 명령 실행 가능하지만, CPU 를 할당 받지 못한 상태

봉쇄

프로세스에게 CPU 를 주어도 명령 실행 불가능 상태.

컨텍스트 스위치

  • 실행시킬 프로세스 변경하기 위해 원래 수행중이던 프로세스의 문맥을 저장하고

  • 새로운 프로세스의 문맥을 세팅하는 과정

...

5.5 프로세스를 스케줄링하기 위한 큐

프로세스를 스케줄링할

  • 작업큐

    • 시스템 내의 모든 프록세스 관리

  • 준비큐

    • CPU 를 할당받고 실행되기 위해 기다리는 프로세스 집합

  • 장치큐

    • 봉쇄상태에 있는 프로세스

5.6 스케줄러

어떤 프로세스에게 자원을 할당할지 결정하는 OS 커널 모듈

  • 장기 스케줄러(작업 스케줄러)

    • 어떤 프로세스를 준비큐에 삽입할지 결정

    • CPU 만 얻으면 당장 실행될 얘들이라, 프로세스가 메모리를 보유해야 하므로 장기 스케줄러는 프로세스에게 메모리 할당하는 문제에 관여

    • 처음 프로세스 생성시 시작->준비 상태로 변하는데 장기 스케줄러는 시작 상태의 프로세스들 중 어떤 프로세스를 준비 큐에 삽입할지 결정

    • 현대의 시분할 시스템에서는 사용 ㄴㄴ.

    • 과거 자원이 빈약했던 시절에 적응 야의 메모리를 효율적으로 할당해주는 역할이 필요했음

  • 단기 스케줄러

    • CPU 스케줄러

    • 준비 상태의 프로세스 중 어떤 프로세스를 다음 번에 실행상태로 만들 것인지 결정

    • *예컨대, 시분할 시스템에서는 타이머 인터럽트 발생시 단기 스케줄러 호출

  • 중기 스케줄러(현대 시분할 system OS에서 사용)

    • 너무 많은 프로세스에게 메모리를 할당해 시스템 성능 저하.

      • 프로세스당 보유하고 있는 메모리량이 극도로 적어지면 CPU 수행에 필요한 프로세스의 주소 공간조차도 메모리에 올리기 어려움

      • 이렇게 되면 디스크입출력이 수시로 발생하여 시스템의 성능이 심각하게 저하됨

      • 그래서 메모리에 올라온 프로세스 중 일부를 swap out 시킴

    • 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적 조절

    • swap out 대상 0순위: 봉쇄상태 프로세스

      • 당장 CPU를 획득할 가능성이 없기 때문에 메모리 보유 의미가 없기 때문

      • 봉쇄 상태인 프로세스 스왑아웃 후에도 메모리가 모자란 경우

      • 스케줄러는 타이머 인터럽트가 발생하여 준비큐로 이동하는 프로세스를 추가적으로 스왑아웃

    • 중기 스케줄러 등장으로 프로세스 상태 추가됨: 중지상태

      • 중지 준비

        • 준비상태에 있던 프로세스가 스왑아웃될 경우

      • 중지 봉쇄

        • 봉쇄상태에 있던 프로세스가 스왑아웃될 경우

        • 봉쇄되었던 조건 만족시 준비 상태로 이동

Last updated

Was this helpful?