Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • DFS
  • BFS
  • boj
  • docker
  • Kubernetes
  • 다이나믹 프로그래밍
  • 백트래킹
  • Network
  • django
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

[OS] Scheduling #3
CS/OS

[OS] Scheduling #3

2021. 7. 12. 12:18

Scheduling

 

 

 

[하루OS] Day-6

Scheduling 어제에 이어서 Scheduling을 좀 더 알아보자 지난번 정리 SJF는 turnaround time을 최적화하는데 유용한 방법이다. RR은 빈번한 context switching을 통해서 response time을 줄이는데 최적화된 방법이..

hyeo-noo.tistory.com

 

 

  • Starvation 
    • 짧은 수행 시간을 가진 interactive job이 너무 많아진다면 우선순위가 낮은 queue에 배치된 작업은 작업(오래 걸리는 작업)은 수행할 수 없게 된다.
  • Game the scheduler
    • 만약 time slice의 99%를 I/O 작업이 가져가 버린다면 오래걸리는 job들은 오히려 CPU를 거의 사용하지 못하게 될 수도 있다.
  • 프로그램의 동작 특성 변화
    • 프로그램을 처음 실행할 때는 CPU bound 작업이었는데 실행하고 보니 I/O bound 작업인 경우에 이미 낮아져 버린 우선순위로 인해서 I/O 작업을 원활히 수행할 수 없다.

 

지난 포스팅에서 본 문제점들이다.

문제점들을 해결하기 위해서 어떤 규칙을 추가하면 좋을지 알아보자.

 

 

Starvation 예방

규칙 5 (priority-boost) : 특정 time-period가 지나면 모든 job들을 최 상위 우선순위 큐로 올려준다

 

 

 

Game the scheduler 예방

규칙 4(규칙 4a, 4b를 재작성) : 각각의 job들은 일정 시간을 할당받고 해당 시간을 모두 사용하면 우선순위를 강등시킨다. (CPU를 반납해도 CPU사용시간을 기록함)

 

 

 

MLFQ 최적화

  • 높은 우선순위 큐 : 짧은 time slices
  • 낮은 우선순위 큐 : 긴 time slices

낮은 우선순위 큐로 갈 수 록 작업이 오래 걸리는 경향이 크므로 우선순위에 따라서 time slice의 크기를 달리해준다면 효율적인 CPU배분이 가능할 것이다.

 

 

정리

규칙 1 : A의 우선순위 > B의 우선순위 , A를 실행한다.

규칙 2 : A의 우선순위 == B의 우선순위 , A와 B를 RR방식으로 실행한다.

규칙 3 : 작업이 queue에 들어오면 가장 우선순위가 높은 queue에 먼저 배치한다

규칙 4(규칙 4a, 4b를 재작성) : 각각의 job들은 일정 시간을 할당받고 해당 시간을 모두 사용하면 우선순위를
강등시킨다. (CPU를 반납해도 CPU사용시간을 기록함)

규칙 5 (priority-boost) : 특정 time-period가 지나면 모든 job들을 최 상위 우선순위 큐로 올려준다

 

'CS > OS' 카테고리의 다른 글

[운영체제] Ch1. 서론  (0) 2022.02.01
[OS] Virtual Memory #1  (0) 2021.07.21
[OS] Scheduling #2  (0) 2021.07.10
[OS] Scheduling #1  (0) 2021.07.09
[OS] Thread #1  (0) 2021.07.08
    'CS/OS' 카테고리의 다른 글
    • [운영체제] Ch1. 서론
    • [OS] Virtual Memory #1
    • [OS] Scheduling #2
    • [OS] Scheduling #1

    티스토리툴바