• First-Come, First-Served (FCFS) Scheduling

  • 간트차트 : 프로젝트 관리에 사용하는 가로축(시간축)에 따른 일의 진행을 표시한 것
    1. ex)프로젝트(캡스턴)의 진행상황 기록 - 몇 개월간의 계획(시간 순)
    2. 한 프로젝트에 대한 전체 일들이 시간순으로 연결될 수도 있음 - 팀장들이 체크할 것들을 확인 할 수 있음
  • 선입선출의 방식으로 먼저 들어온 것이 먼저 실행되는 스케줄링 기법
  • 대기시간을 구해보자
    1. P1은 오자마자 실행 되었으므로 0초를 기다림
    2. P2는 P1의 실행시간동안 기다림 - 24초
    3. P3는 P1과 P2의 실행시간을 모두 기다림 - 27초
  • 만약 순서를 달리한다면?
    1. P2 -> P3 -> P1순으로 처리한다면 평균 대기시간이 줄어듦
    2. 여기서 알 수 있는 사실은 실행시간이 짧은 프로세스를 먼저 처리한다면 더 효율적이라는 것을 알 수 있음
  • 비선점 방식의 스케줄링이 발생하는 경우
    1. 한 프로세스가 모두 실행되어 종료 됐을 때(termination)
    2. I/O 입출력을 기다릴 때 -> waiting으로 갈 때
  • Shortest-Jop-First(SJF) Scheduling
  • CPU가 비어있을 경우 가장 서비스 시간이 짧은 프로세스를 할당
  • 비선점형방식과 선점형방식의 차이가 있음
  • 비선점형

  1. 가장 짧은 수행시간을 가진 P4가 가장먼저 실행
  2. P4가 모두 실행되고 termination되고 스케줄링이 발생
  3. P1이 수행 -> termination -> P3 -> termination -> P2
  4. 총 24초가 걸리고 평균 대기시간은 (0 + 3 + 9 + 16)/4 = 7초
  • 선점형

  1. 선점형에서 스케줄링이 발생하는 경우 - ready queue에 상태가 변했을 경우
    • 프로세스가 running상태에서 ready상태로 전환 - 할당된 시간이 끝났을 경우, 다른 시스템 콜(interrupt)이 발생했을 경우, 더 우선순위의 프로세스가 ready queue에 들어왔을 경우 ready상태로 들어가 스케줄링이 발생
    • 프로세스가 waiting상태에서 ready로 전환 - waiting에서 I/O를 끝내고 ready로 가서 스케줄링이 발생
  2. 도착시간이 각기 다른 4개의 프로세스를 보았을 때 P1은 0초에서 먼저 실행되기 시작
  3. 2초가 지난 후 P2가 들어오게 되고 P2는 4초의 시간이 걸리므로 우선순위가 더 높음 -> P1이 멈추고 ready queue로 들어오고 다시 스케줄링이 발생(SJF - 짧은 시간의 작업이 먼저 실행)
  4. P2가 실행되는 중 2초가 흐른 후 P3가 ready queue에 들어오고 스케줄링이 다시 발생
  5. P3가 가장 짧은 작업시간을 가지므로 P3가 실행됨
  6. P4가 들어왔을 때, P3가 종료되고 CPU가 비어서 자연스럽게 스케줄링이 발생 - 선점형, 비선점형 둘 다 해당
  7. P2 -> P4 -> P1의 순서로 종료됨
  8. P1의 waiting time : 9, P2 의 waiting time : 1, P3 waiting time : 0, P4 waiting time : 2
  • Determining Length of Next CPU Burst

  1. 실제로 진행한, 방금 지나간 실제 길이 tn
  2. 예측하는 다음 시간(타우 n+1), 예측된 이전 시간(타우 n)
  3. 0에서 1사이의 값 - 보통 0.5
  4. 공식
  • 그래프

 

  • Shortest-remaining-time-first(SRTF) - 선점형 방식

  • 남은시간이 가장 짧은 작업부터 실행 - SJF 방식에서 발전
  • P1이 수행중에 1초 후 P2가 들어와서 P1의 남은시간 7초와 P2의 4초를 비교 후 스케줄링
  • P2를 실행, 2초째에 P3가 도착하지만 스케줄링 결과 여전히 P2가 1위이기 때문에 P2계속 진행
  • P4가 도착해도 마찬가지이고 P2가 모두 실행된 후 스케줄링에 의해 P4 -> P1 -> P3순으로 진행
  • 대기시간은 P1 : 9, P2 : 0, P3 : 15, P4 : 2
  • 평균 대기시간은 26/4 = 6.5
  • Priority Scheduling - 우선순위 스케줄링
  • 우선순위가 프로세스들에게 할당됨 -> 우선순위를 비교하여 스케줄링
  • ready queue에 도착한 순간 실행중인 프로세스와 우선순위를 비교, 더 높으면 실행중인 프로세스를 빼내는 선점형, 기다려주는 비선점형의 두 가지가 있음
  • 문제 : 우선순위가 높은 프로세스가 계속 들어오게 되면 우선순위가 낮은 프로세스는 계속 기다리게 되는 무한정지(Starvation) 발생
  • Aging : 스케줄링이 생길때마다 우선순위를 한단계씩 높여줌

  1. 우선순위의 숫자가 낮을수록 우선순위가 높다고 생각하자
  2. P2 -> P5 -> P1 -> P3 -> P4
  • Round Robin(RR)
  • 어느정도의 적당한 시간 크기를 가지는 할당량을 줌
  • 이 시간동안 프로세스를 실행한 후 끝나지 않으면 ready queue의 가장 뒤로 보냄
  • 원형 큐의 형태로 구현
  • CPU 스케줄러는 돌아가면서 시간을 할당
  • (n-1)*q이상은 기다리지 않는다.

  1. 20초가 Time Quantum이라고 했을 때의 간트 차트이다.
  2. P1이 20실행 후 P2가 17초, P3 20초, P4 20초.... 이렇게 순서대로 수행한다.
  3. 평균적으로 SJF방식보다 평균 소요시간은 높지만 응답은 높다.
  4. Quantum을 너무 길게하면 FCFS와 같아지고 너무 짧게하면 지연시간이 많이 발생한다.

  • Priority Scheduling w/ Round-Robin

  • RR과 우선순위 스케줄링을 묶은 방식
  • 우선순위가 같은 경우 RR형식으로 수행, 그 외에는 그냥 우선순위가 높은 것을 먼저 처리

'운영체제' 카테고리의 다른 글

[10주차]System Call의 이해 - 어세블리어 (PC버전)  (0) 2019.05.10
Chapter 5 - CPU Scheduling(9주차)  (0) 2019.04.30
Chapter 5 - CPU Scheduling  (0) 2019.04.09
Chapter 4 - Threads(6주차)  (0) 2019.04.09
Chapter 4 - Threads  (0) 2019.04.06

Network layer

  • IP(Internet protocol)가 제일 중요
  • 세그먼트를 데이터그램으로 캡슐화
  • Router 동작

두 가지 중요한 기능

  • forwarding : input포트로 받은 후 output으로 보낼 경로가 많다 -> 적절한 router로 내보내는 과정을 의미(단일 교환)
  • routing : 어떻게 보낼 것인지 정하는 과정 -> 어느쪽으로 보내야하는지 전체적인 흐름을 봐야함(출발지에서 목적지까지의 계획과정)

Data plane

  • 데이터를 받으면 address를 보고 어느 곳으로 보낼 것인지 결정하는 것 -> 라우터마다 해야 할 일(forwarding)

Control plane

  • routing알고리즘이나 SDN(소프트웨어 정의 네트워킹)을 이용 -> 복잡함
  • 라우터들이 추가되면 알고리즘 수정을 해야함 -> software - defined networking을 사용(규칙을 부여)

Per-router control plane

  • 각각의 라우터들은 rocal forwarding table을 가지고 있음 - Routing Algorithm(control plane)에 의한 것
    • 헤더의 값에 따라서 어느 링크로 전송할지를 정함 - data plane

 

  • 현재는 Remote controller로 모든 라우터를 관리하고 각각의 라우터들에게 명령을 내려 라우터들이 simple해졌으며 추가적인 processing이 필요없게 되었음

 


Network sevice model

  • 정확한 전달
  • 40msec 이하의 딜레이 보장
  • 순차적인 데이터그램 전송
  • 최소 대역폭 보장
  • 패킷과 패킷 사이의 시간 변화의 제약

Network layer sevice models

 

  • 서비스 모델, 대역폭 보장, 무손실 보장, 순서, 타이밍, 혼잡 피드백의 기준이 있음
  • 우리가 사용하는 인터넷의 경우 최선을 다하는 서비스모델에 아무런 보장과 피드백이 없음
  • CBR, VBR, ABR, UBR 등의 서비스 모델이 존재
  • 그러나 이러한 모델들은 공유하기가 어렵고 실제로 보장하기가 어려움

Router architecture

  • Swiching를 통해 전달
  • routing processor 소프트웨어로 연산하여 rule을 보냄 -> 어느 output port로 전달할 것인지
    • Input port functions

    • line termination : physical layer - 비트 레벨 수신
    • link layer protocol(receive) : data link layer - 이더넷 같은 것들
    • lookup, forwarding - queue존재, decentralized switching(분산형 스위칭)
      1. 헤더 값과 테이블을 비교하여 어느 출력 포트로 보낼 것인지 정함
      2. 입력 속도면에서 완벽한 입력처리
      3. 큐잉 : switch fabric에서 전달하는 속도보다 빨리 보낼 수 없으므로 대기열에 저장해둠
      4. 대상 IP주소에만 기반한 전달
      5. 일반화 된 전달 : 모든 헤더 필드 값 집합을 기반으로 한 전달

    • 범위들 중 겹치는 범위만 기억하면 쉽다 -> 앞 부분만 비교하고 해당하는 링크에 전달하기만 하면 되기 때문

    • prefix matching

    1. Longest prefix matching : 대상 주소와 일치하는 가장 긴 주소 접두어를 사용

    2. AND연산자로 확인

    • TCAM (Ternary Content Addressable Memories) : 테이블 크기에 상관없이 한 클럭 주기로 주소 검색

    • Switching fabrics

     

      • 입력 버퍼에서 적절한 출력 버퍼로 패킷 전송
      • switching rate : 패킷이 입력에서 출력으로 전송 될 수있는 속도
      • 3종류의 switching fabrics

    1. memoy : CPU를 직접 제어하는 ​​전통적인 컴퓨터, 패킷이 시스템의 메모리에 복사 됨 -> 메모리 대역폭에 의해 제한되는 속도
      1. 개선 방법 : hardware 사용
    2. Bus 공유 : 여러 곳에서 동시에 접속시 버스를 사용하는 하나의 연결때문에 여러 연결들이 대기 -> 비어있는 공간이 존재하게 됨

    3. interconnection network : 버스를 cross하여 연결 -> 대기시간이 없어짐 -> 제한을 줄일 수 있음 -> 두 개가 동시에 동일한 목적지로 전송되는 경우 하나의 패킷(input port) 전달 될 수 있기 때문에 입력을 기다려야한다.

    • Input port queuing

     

    • 매우 빨라진 input들 때문에 queuing delay가 생기게 됨
    • fabric의 전송 속도보다 input의 전송속도가 빠르면 drop도 발생
    • HOL (Head-of-the-Line) blocking : 대기열 앞에있는 데이터 그램은 대기열에있는 다른 패킷들이 앞으로 이동하는 것을 방지합니다.

         

         

        1. 위 그림처럼 같은 output port로 이동하는 패킷이 동시에 전송 되고 있다고 생각해보자
        2. 여기서 첫 번째 input port가 선택 되었다면 세 번째 input port는 대기해야 할 수 밖에 없음
        3. 초록색 패킷의 경우 빨간색 패킷이 모두 output port로 이동할 때까지 대기해야하는 문제가 생김(빨간색 패킷에 의해 blocking)
        • Output ports

        • output에서 queuing이 발생 -> output에서는 혼잡 발생
        • 데이터 그램이 전송 속도보다 빠르게 패브릭에서 도착할 때 버퍼링 필요 -> 큐잉(fabric에서 빨리 들어오면 저장시켜 놓음)
        • 스케쥴링 분야는 전송을 위해 대기중인 데이터 그램 중에서 선택
        • priority scheduling : 우선순위 스케줄링 -> 망중립성 유지
        • output port의 queueing

        1. 스위치를 통한 도착율이 출력 회선 속도를 초과 할 때 버퍼링
        2. 큐잉(지연)과 출력 포트 버퍼 오버 플로우로 인한 손실

        버퍼링 계산

        • 10Gbps의 링크 C, RTT가 250msec라면 2.5Gbit의 buffer가 존재

        • N은 TCP흐름(flow의 수)인데 작은 양의 동적인 큐잉 분석에 기반을 둔다면 무시해도 상관은 없음


        Scheduling mechanisms

        • scheduling : 링크에 보낼 다음 패킷 선택

        • FIFO(first in first out) 스케줄링 : 대기열에 도착한 순서대로 전송

        • discard policy : 큐가 꽉차서 버리는 경우에 어떻게 버릴 것 인가?

          1. tail drop : 도착 패킷 버리기

          2. priority : 우선 순위 기준으로 삭제 / 제거

          3. random : 무작위로 드롭 / 제거

        • Scheduling policies

          • priority : 우선 순위가 가장 높은 대기열에있는 패킷을 보냄

          1. 순위에 따라 que를 두어 각각에 저장

          2. 순위에 따라 순서를 정하여 처리

         

          • Round Robin (RR) scheduling : 여러개를 접하더라도 우선순위 없이 순서대로 번갈아가며 처리(순차적)

          • Weighted Fair Queuing(WFQ) : 데이터가 많이 쌓인 que를 먼저 처리

          • 그러나 위 세가지 방식은 공정성에 어긋나기 때문에 아직까지도 사용되지 않고 순차적으로 처리하고 있음

        '네트워크 설계' 카테고리의 다른 글

        [11월21일]IP addressing  (0) 2018.11.25
        [11월19일]IP:Internet Peotocol  (0) 2018.11.23
        [11월12일]TCP congestion control  (0) 2018.11.17
        [11월07일]Chapter 3 - transport: TCP  (0) 2018.11.16
        [11월5일]GBN과 SR  (0) 2018.11.14

        + Recent posts