프로세스 스케줄링

sun202x·2023년 1월 18일
0

운영체제

목록 보기
10/23
post-thumbnail

해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다.

리눅스 안의 프로세스

  • c 언어의 구조체로 프로세스가 구현된다.
  • 부모 프로세스와 자식 프로세스가 트리 구조 형태로 이루어져 있다.

Process Scheduling

  • 메모리 안에 올라온 여러 프로세스 중 cpu에 할당하기 위한 기능을 제공 하는 것을 Process Scheduling이라고 한다.
    • 커널 안에 이러한 기능을 하는 것을 Process Scheduler라고 한다.
  • cpu에 올라올 수 있는 프로세스의 상태는 ready이며,
  • 이러한 상태에 해당되는 프로세스들을 담아두는 자료구조를 ready queue라고 한다.
    • 모든 프로세스가 한 줄로 연결된 것을 job queue라고 한다.
    • 한 프로세스가 I/O 처리를 위해 대기 상태에 들어가면, 대상 device의 queue에 들어가게 되는데, 이것을 device queue라고 한다.
  • 보통의 프로세스 처리는 이러한 ready queue에 등록된 순서대로 처리가 된다.
    • 그러나 서버 같은 경우, 때에 따라 빨리 끝나는 것을 먼저 처리하는데, SCSI(I/O 컨트롤러)의 특성 때문이다.

Scheduler 종류

  • Short-term scheduler(CPU scheduler)
    • 지금까지 봤던 스케줄러가 속한다.
    • cpu가 프로세스를 실행하는 시간이 굉장히 짧다
      • 약 2ms 정도
    • 그렇기 때문에 ready queue에서 프로세스를 선정하는 알고리즘이 빨라야 한다.
  • Long-term scheduler
    • 서버에서 추가적으로 사용하는 스케줄러
    • process들의 상태를 모두 waiting 상태로 큐에 두고 있다가
    • 필요할 때 대기중인 프로세스를 가지고 와서 실행하는 스케줄러를 말한다.
    • 사용자 요청에 의해 쿼리가 실행되는 동안 프로세스가 살아 있기 때문에
    • 프로세스가 실행되는 시간이 몇 초 정도 된다.
      • 경우에 따라서는 더 많은 시간이 걸릴 수 있다.
      • WolframAlpha 같은 것들
        • 아이폰 시리가 요청을 분석하고 모두 이 서버로 답을 요청한다.
    • 이 경우 속도가 오래 걸려도 되기 때문에 어떤 프로세스를 실행할지 심사숙고 해도 된다.
      1. 프로세스 타입에 따라 실행할 프로세스를 선정하는 방식
      • 프로세스는 크게 두가지로 나눌 수 있는데,
        • I/O bound process: 주로 I/O를 처리하는 프로세스
        • CPU bound process: cpu 계산을 주로 처리하는 프로세스
      • 자원을 균형있게 사용하려면 두 타입의 프로세스가 적절하게 실행되어야 한다.
      • new 상태에 있는 프로세스 중에서 현재 컴퓨터가 어떤 타입의 프로세스가 많은지 판단해서 적은 타입의 프로세스를 꺼내서 실행한다.
      1. 현재 시스템이 커버할 수 있는 프로세스의 개수와 자원을 비교하여 프로세스 개수를 조정하는 방식
      • 현재 메모리에 올라온 프로세스 개수를 degree of multiprogramming이라고 한다.
      • 이 것과 bound된 비율의 조정을 진행한다.
  • Medium-term scheduler
    • 현재 실행중인 프로세스들이 계속 메모리를 요구할 때, 메모리 공간이 부족하다고 판단되면,
    • 실행중인 프로세스 하나를 하드디스크로 dump 시키고, dump 시킨 프로세스의 메모리 영역을 빈공간으로 만들어 버린다.
    • 그렇게 하여 아직 dump되지 않은 프로세스가 메모리를 계속하여 사용할 수 있고
    • 프로세스가 종료되면, 다시 dump 시킨 프로세스를 메모리에 올려 충분한 메모리 공간을 제공할 수 있다.
    • PCB 상에서는 dump된 프로세스는 swap 된 상태라고 기록이 되고, 응답 대기 상태가 된다.
      • 하드디스크에 dump 시키는 것을 swap-out이라고 하고
      • 다시 메모리에 올리는 것을 swap-in이라고 한다.
    • 이러한 swap-out 대상이 될 프로세스를 선정 하는 것을 Medium-term scheduler라고 한다.

Multitasking in Mobile Systems

  • IOS는 하나의 foreground 프로세스에게만 대부분의 권한을 준다.
    • 대신 몇개의 backgound 프로세스를 제공한다.
    • 음악재생, notification 같은 것들
  • 안드로이드는 몇 개의 background 프로세스 들은 foreground 프로세스 같은 우선권을 주기도 한다.
    • 화면 분할 같은 것들
    • 좀 더 데스크탑 같은 기능들을 제공한다.

Context switch

  • 프로세스를 swap하는 것을 context switching이라고 한다.
  • 레지스터에 있는 내용을 PCB에 저장하고 PCB에 있는 내용을 레지스터에 복구 한다.
  • 이것을 context switching overhead라고 한다.
    • overhead라고 불리는 이유는 실질적으로 사용자가 요청한 일이 아니기 때문이다.
    • 단지 멀티프로그래밍이 처리되기 위함이다.

Operations on Process

  • 전통적인 운영체제는 항상 어떤 프로세스가 새로운 프로세스를 만들 수 있게 한다.
  • 그렇게 Parent process와 Child Process 관계로 관리가 되는데, 이 것을 트리 형태로 관리한다.
  • 새로 생겨난 프로세스는 PID를 부여받는다.
  • 프로세스를 새로 생성시 3가지 정도 옵션을 가진다.
    • resource share 옵션
      • 부모 프로세스와 자식 프로세스 사이 간 리소스 접근 옵션
      • 해당 옵션은 아래 3가지 값을 가진다.
        • 모두 허용
        • 일부만 허용
        • 모두 허용하지 않음
    • concurrent 옵션
      • 프로세스 실행에 있어서 자식 프로세스와 부모 프로세스 동시에 수행할지,
      • 자식 프로세스가 모두 수행하고 나서 부모 프로세스를 수행할지 결정하는 것도 필요하다.
    • 현재 프로세스를 fork 할지 다른 프로세스를 생성할지 결정하는 옵션
profile
긍정적으로 살고 싶은 개발자

0개의 댓글