❓
물음표살인마 블로그
  • README
  • ALGORITHM
    • Sieve of Eratosthenes
    • Round Up
    • Binary Search
    • Union Find
    • Sorting Array
    • Lcm, Gcd
  • TechTalk Review
    • Template
  • Books
    • CS Note for Interview
      • Ch1. Design Pattern & Programming paradigm
        • 1.1.1 Singleton Pattern
        • 1.1.2 Factory Pattern
        • 1.1.4 Observer Pattern
        • 1.1.5 Proxty Pattern & Proxy Server
        • 1.1.8 Model-View-Controller Pattern
        • 1.2.1 Declarative and Functional Programming
        • 1.2.2 Object Oriented Programming
      • Ch2. Network
        • 2.2.1 TCP/IP Four-Layer Model
        • 2.2.1-1 TCP 3, 4 way handshake
        • 2.3 Network Devices L4, L7
        • 2.4.1 ARP, RARP
        • 2.4.2 Hop By Hop Communication
        • 2.4.3 IP Addressing Scheme
      • Ch3. Operating System
        • 3.1.1 Roles and Structure of Operating Systems
        • 3.2.1 Memory Hierarchy
        • 3.2.2 Memory Management
        • 3.3.1 Processes and Compilation Process
        • 3.3.3 Memory Structure of a Process
        • 3.3.4 Process Control Block (PCB)
        • 3.3.5 Multiprocessing
        • 3.3.6 Threads and Multithreading
        • 3.3.7 Shared Resources and Critical Sections
        • 3.3.8 Deadlock
        • 3.4 CPU Scheduling Algorithm
      • Ch4. Database
        • 4.1 Database Basic
        • 4.2 Normalization
        • 4.3 Transaction and Integrity
        • 4.4 Types of Databases
        • 4.5 Indexes
        • 4.6 Types of Joins
        • 4.7 Principles of Joins
      • Ch5. Data Structure
    • Learning the Basics of Large-Scale System Design through Virtual Interview Cases
      • 1. Scalability based on user counts(1/2)
      • 1. Scalability based on user counts(2/2)
      • 2.Back-of-the-envelope estimation
      • 3. Strategies for System Design Interviews
      • 4. Rate Limiter
      • 5. Consistent Hashing
      • 6. Key-Value System Design
      • 7. Designing a Unique ID Generator for Distributed Systems
      • 8. Designing a URL Shortener
      • 9. Designing a Web Crawler
      • 10. Notification System Design
      • 11. Designing a News Feed System
      • 12. Chat System Design
      • 13. AutoComplete
      • 14. Design YouTube
      • 15. Design Google Drive
      • Loadbalancer Algorithms
      • Cache tier
      • CDN, Content Delivery Network
      • Stateless Web tier
    • Computer System A programmer's perspective
    • Effective Java
      • Item 1. Consider Static Factory Methods Instead of Constructors
      • Item 2. Consider a Builder When Faced with Many Constructor Parameters
      • Item 3. Ensure Singleton with Private Constructor or Enum Type
      • Item 4. Enforce Noninstantiability with a Private Constructor
      • Item 5. Prefer Dependency Injection to Hardwiring Resources
      • Item 6. Avoid Creating Unnecessary Objects
      • Item 7. Eliminate Obsolete Object References
      • Item 8. Avoid Finalizers and Cleaners
      • Item 9.Prefer try-with-resources to try-finally
      • Item10. Adhering to General Rules When Overriding equals
        • Handling Transitivity Issues
        • Ensuring Consistency
      • Item11. Override hashCode When You Override equals
      • Item12. Always Override toString
        • Always Override toString
      • Item13. Override Clone Judiciously
      • Item14. Consider Implementing Comparable
      • Item15. Minimize the Accessibility of Classes and Members
      • Item16. Accessor Methods Over Public Fields
      • Item17. Minimize Mutability
      • Item18. Composition over inherentance
      • Item19. Design and Document for Inheritance, or Else Prohibit It
      • Item20. Prefer Interfaces to Abstract Classes
      • Item21. Design Interfaces with Implementations in Mind
      • Item22. Use Interfaces Only to define Types
      • Item23. Prefer Class Hierarchies to Tagged Classes
      • Item24. Favor Static Member Classes Over Non-Static
      • Item28. Use Lists Instead of Arrays
      • Item29. Prefer Generic Types
      • Item30. Favor Generic Methods
    • Head First Design Patterns
      • Ch1. Strategy Pattern
      • Ch2. Observer Pattern
        • Ver1. Ch2. Observer Pattern
      • Ch3. Decorator Pattern
        • Ch3. Decorator Pattern
      • Ch4. Factory Pattern
      • Ch5. Singleton Pattern
      • Ch6. Command Pattern
      • Ch7. Adapter and Facade Pattern
      • Ch8. Template Method Pattern
    • Digging Deep into JVM
      • Chapter 2. Java Memory Area & Memory Overflow
      • Chapter 3. Garbage Collector & Memory Allocation Strategy (1/2)
      • Chapter 3. Garbage Collector & Memory Allocation Strategy (2/2)
      • Chapter 5. Optimization Practice
      • Chapter 6. Class file structure
      • Chapter 8. Bytecode Executor Engine (1/2)
  • Interview Practices
    • Restful API Practices
      • Url Shortener API
      • Event Ticket Reservation API
      • Course Management API
      • Search posts by tags API
      • Online Code platform API
      • Simple Task Management API
      • Event Participation API
      • Review System API
      • Car management API
      • Online Library
    • Tech Review
      • if(kakao)
        • Kakao Account Cache Migration / if(kakao)2022
        • Improving the Anomaly Detection System for KakaoTalk Messaging Metrics / if(kakao) 2022
        • Standardizing API Case Handling Without Redeployment / if(kakaoAI)2024
        • JVM warm up / if(kakao)2022
    • Naver Computer Science
      • Process & Thread
      • TCP & UDP
      • Spring & Servlet
      • Filter & Interceptor & AOP
      • Equals() & ==
      • Dependency Injection
      • Object Oriented Programming
  • F-Lab
    • Week1
      • Client & Server
      • HTTP
      • TCP/UDP
      • REST API
      • Questions
        • Object Oriented Programming
        • HTTP
        • Process & Thread
        • Data Structure
    • Week2
      • OSI 7 layer
      • Web vs WAS
    • Week3
      • RDB vs NoSQL
      • RDB Index
      • Cache
      • Redis
      • Messaging Queue
    • Week4
      • Project - Ecommerce
    • Week5
      • ERD - 1
    • Week6
      • Ecommerce - 2
      • Role
      • pw hashing && Salt
      • CreatedAt, ModifiedAt
      • JWT
      • Copy of ERD - 1
    • Week7
      • Vault (HashiCorp Vault)
    • Week 8
      • Api Endpoints
    • Week10
      • Product Create Workflow
  • TOY Project
    • CodeMentor
      • Implementation of Kafka
      • Project Improvement (Architectural Enhancements)
      • Communication between servers in msa
  • JAVA
    • MESI protocol in CAS
    • CAS (Compare and Set)
    • BlockingQueue
    • Producer & Consumer
    • Synchronized && ReentrantLock
    • Memory Visibility
    • Checked vs Unchecked Exception
    • Thread
    • Batch delete instead of Cascade
    • Java Questions
      • Week 1(1/2) - Basic Java
      • Week 1(2/2) - OOP
      • Week 2(1/2) - String, Exception, Generic
      • Week2(2/2) Lambda, Stream, Annotation, Reflection
      • Week3(1/2) Collections
      • Week3(2/2) Threads
      • Week4 Java Concurrency Programming
      • Week5 JVM & GC
    • Java 101
      • JVM Structure
      • Java Compiles and Execution Method
      • Override, Overload
      • Interface vs Abstract Class
      • Primitive vs Object Type
      • Identity and equality
      • String, StringBuilder, StringBuffer
      • Checked Exceptions and Unchecked Exceptions
      • Java 8 methods
      • Try-with-reources
      • Strong Coupling and Loose Coupling
      • Serialization and Deserialization
      • Concurrency Programming in Java
      • Mutable vs Immutable
      • JDK vs JRE
  • SPRING
    • DIP. Dependency Inversion Principal
    • Ioc container, di practice
    • @Transactional
    • Proxy Pattern
    • Strategy Pattern
    • Template Method Pattern
    • using profile name as variable
    • Spring Questions
      • Spring Framework
      • Spring MVC & Web Request
      • AOP (Aspect-Oriented Programming)
      • Spring Boot
      • ORM & Data Access
      • Security
      • ETC
  • DATABASE
    • Enhancing Query Performance & Stability - User list
    • Ensuring Data Consistency, Atomicity and UX Optimization (feat.Firebase)
    • Redis: Remote Dictionary Server
    • Database Questions
      • Week1 DBMS, RDBMS basics
      • Week2 SQL
      • Week3 Index
      • Week4 Anomaly, Functional Dependency, Normalization
      • Week5 DB Transaction, Recovery
    • Normalization
      • 1st Normal Form
      • 2nd Normal Form
      • 3rd Normal Form
  • NETWORK
    • HTTP & TCP head of line blocking
    • HTTP 0.9-3.0
    • Blocking, NonBlocking and Sync, Async
    • Network Questions
      • Week1 Computer Network Basic
      • Week2(1/3) Application Layer Protocol - HTTP
      • Week2(2/3) Application Layer Protocol - HTTPS
      • Week2(3/3) Application Layer Protocol - DNS
      • Week3 Application Layer
      • Week4 Transport Layer - UDP, TCP
      • Week5 Network Layer - IP Protocol
    • Network 101
      • https://www.google.com
      • TCP vs UDP
      • Http vs Https
      • TLS Handshake 1.2
      • HTTP Method
      • CORS & SOP
      • Web Server Software
  • OS
    • Operating System Questions
      • Week1 OS & How Computer Systems Work
      • Week2(1/2) Process
      • Week2(2/2) Thread
      • Week3 CPU Scheduling
      • Week4 Process Synchronize
      • Week5 Virtual Memory
    • Operating System 101
      • Operating system
        • The role of the operating system
        • The composition of the operating system.
      • Process
        • In Linux, are all processes except the initial process child processes?
        • Zombie process, orphan process
        • (Linux) Daemon process
        • Process address space
        • Where are uninitialized variables stored?
        • Determination of the size of the Stack and Heap
        • Access speed of Stack vs Heap
        • Reason for memory space partitioning
        • Process of compiling a process
        • sudo kill -9 $CURRENT_PID
      • Thread
        • Composition of a thread's address space
      • Process vs Thread
        • Creation of processes and threads in Linux
      • Multiprocessing
        • Web Browser
        • Implementation of multiprocessing
        • Application areas of multiprocessing
      • Multithreading
        • Application areas of multithreading
      • Interrupt
        • HW / SW Interrupt
        • Method of handling interrupts
        • Occurrence of two or more interrupts simultaneously
      • Polling
      • Dual Mode
        • Reason for distinguishing between user mode and kernel mode
      • System call
        • Differentiation between system calls
        • Types of system calls
        • Execution process of a system call
      • Process Control Block (PCB)
        • PCB의 구조
        • 쓰레드는 PCB를 갖고 있을까?
        • 프로세스 메모리 구조
      • Context switching
        • Timing of context switching
        • Registers saved during context switching
        • Context switching in processes
        • Context switching in threads
        • Difference between context switching in processes and threads
        • Information of the current process during context switching
      • Interprocess Communication (IPC)
        • Cases where IPC is used
        • Process address space in IPC Shared Memory technique
        • Types of IPC
  • COMPUTER SCIENCE
    • Computer Architecture 101
      • 3 components of a computer
      • RAM vs ROM
      • CPU vs GPU
      • SIMD
      • Two's complement
      • Harvard Architecture vs. von Neumann Architecture
      • The structure of a CPU.
      • Instruction cycle (CPU operation method)
      • Instruction pipelining
      • Bus
      • Memory area
      • Memory hierarchy structure
        • Reason for using memory hierarchy structure
      • Cache memory
      • L1, L2, L3 Cache
      • Locality of reference (cache)
      • Fixed-point vs Floating-point
        • epresentation of infinity and NaN (Not a Number) in floating-point
      • RISC vs CISC
      • Hamming code
      • Compiler
      • Linking
      • Compiler vs Interpreter
      • Mutex vs Semaphore
      • 32bit CPU and 64bit CPU
      • Local vs Static Variable
      • Page
  • Programming Paradigm
    • Declarative vs Imperative
  • JPA, QueryDsl
    • why fetchResults() is deprecated
  • PYTHON
    • Icecream
  • FASTAPI
    • Template Page
  • LINUX
    • Template Page
  • DATA STRUCTURE
    • Counting Sort
    • Array vs Linked List
  • GIT, Github
    • git clone, invalid path error
  • INFRA
    • Template Page
  • AWS
    • Server Log Archive Pipeline
    • Image Processing using Lambda
  • DOCKER
    • Docker and VM
    • Python Executable Environment
    • Docker commands
  • docker-compose
    • Kafka, Multi Broker
  • KUBERNATES
    • !Encountered Errors
      • my-sql restarts
      • kafka producer: disconnected
    • Kubernetes Components
    • Helm
      • Helm commands
    • Pod network
    • Service network
      • deployment.yaml
      • services.yaml
    • Service type
      • Cluster IP
      • NodePort
    • service-name-headless?
    • kube-proxy
  • GraphQL
    • Template Page
  • WEB
    • Template Page
  • Reviews
    • Graphic Intern Review
    • Kakao Brain Pathfinder Review
    • JSCODE 자바 1기 Review
  • 😁Dev Jokes
    • Image
      • Plot twist
      • Priorities
      • SQL join guide
      • Google is generous
      • Genie dislikes cloud
      • buggy bugs
      • last day of unpaid internship
      • what if clients know how to inspect
      • its just game
      • how i wrote my achievement on resume
      • self explanatory
      • chr(sum(range(ord(min(str(not))))))
Powered by GitBook
On this page
  • 기아 상태가 뭔가요?
  • 기아 상태를 어떻게 해결할 수 있나요?
  • CPU 스케줄링에 대해 설명해주세요.
  • 스케줄러의 종류는 무엇이 있나요?
  • 선점형 스케줄링과 비선점형 스케줄링의 차이
  • 선입선출 스케줄링(FCFS)에 대해 설명해주세요.
  • 최단 작업 우선 스케줄링(SJF)
  • 최소 잔류 시간 우선 스케줄링(SRTF)
  • 우선순위 스케줄링에 대해 설명해주세요
  • 라운드 로빈 스케줄링에 대해 설명해주세요.
  • 멀티 레벨 큐 스케줄링이 뭔가요?
  • 멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.
  1. OS
  2. Operating System Questions

Week3 CPU Scheduling

CPU 스케줄링

PreviousWeek2(2/2) ThreadNextWeek4 Process Synchronize

Last updated 8 months ago

참고: 프로세스 스케줄링 != CPU 스케줄링

프로세스 스케줄링은 CPU 스케줄링의 상위 개념.

비유로 설명:

  • 프로세스 스케줄링은 회사에서 직원들을 각각의 회의실(또는 컴퓨터)로 배치하는 일입니다. 어떤 직원이 어떤 회의실에서 일할지를 정하는 과정입니다.

  • CPU 스케줄링은 특정 회의실(또는 컴퓨터)에 들어온 직원들 중에서 누가 먼저 발표(또는 작업)를 할지를 정하는 일입니다.

프로세스 스케줄링 종류:

  • I/O 스케줄링

  • 메모리 스케줄링

  • 네트워크 스케줄링

  • CPU 스케줄링

기아 상태가 뭔가요?

  • 우선순위 기반 스케줄링 시스템에서 우선순위가 낮은 프로세스가 계속해서 자원을 할당받지 못하는 상태

기아 상태를 어떻게 해결할 수 있나요?

  • 에이징(Aging) 기법: 오랫동안 자원을 할당받지 못한 프로세스의 우선순위를 점진적으로 증가시

  • 라운드 로빈: 공정한 CPU 사용 기회

CPU 스케줄링에 대해 설명해주세요.

  • 시스템의 CPU 자원을 효율적으로 관리하고 프로세스의 성능을 극대화하기 위해, 여러 프로세스 중에서 어떤 프로세스가 CPU를 사용할지 결정하는 과정

  • 처리량(Throughput)을 극대화 응답시간(Response Time) 최소화, CPU 자원의 효율적 사용

  • FCFS, SJF, 라운드 로빈, 우선순위 스케줄링

스케줄러의 종류는 무엇이 있나요?

단기 스케줄러: CPU에서 어떤 프로세스를 실행할지 결정

  • Ready 상태에 있는 프로세스들 중에서 다음 프로세스 실행 결정(CPU 스케줄링 알고리즘)

중기 스케줄러: 메모리에서 프로세스를 스왑 인/아웃하여 메모리 자원 관리

  • 메모리 관리 역할. 프로세스가 과부하 상태 또는 메모리 부족일 경우, 프로세스를 일시적으로 디스크로 swap-out 하는 역할. 자원이 충분해지면 다시 swap-in

장기 스케줄러: 디스크에 있는 작업을 메모리로 가져와 실행할지 결정하는 역할

  • 새로운 프로세스를 시스템에 진입시킬지 여부를 결정.

  • 다중 프로그래밍 정도(한번에 메모리에 적재되는 프로세스 수)를 관리

선점형 스케줄링과 비선점형 스케줄링의 차이

비선점형 스케줄링(FCFS, SJF)

  • 프로세스가 실행되는 도중에 다른 프로세스가 CPU를 강제로 빼앗을 수 없습니다.

  • 컨텍스트 스위칭: 적음

  • 응답시간: 느림

선점형 스케줄링(라운드 로빈, SRTF-Shortest Remain Time First)

  • 현재 실행 중인 프로세스가 CPU를 점유하고 있더라도, 더 높은 우선순위를 가진 프로세스가 도착하면 강제로 CPU를 빼앗길 수 있는 방식

  • 컨텍스트 스위칭: 많음

  • 응답시간: 실시간

선입선출 스케줄링(FCFS)에 대해 설명해주세요.

  • 비선점형 스케줄링 알고리즘 (작업을 완료할 때까지 CPU를 독점)

  • 장 먼저 대기 큐에 도착한 프로세스부터 순서대로 CPU를 할당

  • 단점: Convoy 효과. CPU 사용시간이 긴 프로세스가 먼저 도착하면 짧은 CPU 작업을 가진 프로세스들이 긴 시간을 대기.

최단 작업 우선 스케줄링(SJF)

  • 비선점형 스케줄링 알고리즘 (작업을 완료할 때까지 CPU를 독점)

  • CPU 실행 시간이 가장 짧은 프로세스를 먼저 실행

  • 단점으로는 CPU 실행 시간을 미리 알아야 하고, Starvation 현상이 발생할 수 있음.

최소 잔류 시간 우선 스케줄링(SRTF)

  • 선점형 스케줄링 알고리즘

  • 현재 CPU에서 실행 중인 프로세스의 남은 실행 시간과 새롭게 도착한 프로세스의 실행 시간을 비교하여, 남은 시간이 더 짧은 프로세스가 있으면 현재 작업 중인 프로세스의 CPU를 선점하여 처리하는 방식

  • 장점으로는 Convoy효과가 발생하지 않고 평균 대기 시간을 최소화

  • 단점으로는 CPU 실행 시간 예측이 어렵다는 것, Starvation 효과, 컨텍스트 스위칭이 자주 발생

우선순위 스케줄링에 대해 설명해주세요

  • 선점형, 비선점형 모두 가능.

  • 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스가 먼저 CPU를 할당받는 스케줄링 방식

  • 우선순위는 CPU 실행시간/ 프로세스 중요도/ 메모리 사용량에 따라 결정

  • 장점으로는 응답시간 최소화, 다양한 스케줄링 정책 적용 가능

  • 단점으로는 Starvation현상 -> 에이징 기법으로 해결

  • 선점형일 경우 높은 컨텍스트 스위칭 비용

라운드 로빈 스케줄링에 대해 설명해주세요.

  • 선점형 스케줄링 알고리즘

  • 정해진 시간(Time Quantum, 타임 퀀텀) 동안만 CPU를 사용하고, 시간이 지나면 강제로 CPU를 반납한 후 대기 큐의 맨 뒤로 이동. 공평하게 CPU를 사용할 기회

  • 타임 퀀텀에 따라 응답시간이 짧아지거나 프로세스가 CPU를 더 오래 사용(비선점형에 가까워짐)

  • 장점으로는 기아 현상이 발생하지 않고, 대화형 시스템에 적합합니다.

  • 단점으로는 컨텍스트 스위칭 오버헤드가 발생할 수 있고, 타임 퀀텀 설정이 중요합니다.

Time Quantum을 정하는 방식

프로세스들의 평균 CPU 버스트 시간 기반 설정

응답 시간 목표 기반 설정

컨텍스트 스위칭 오버헤드 고려

동적 타임 퀀텀 설정(Dynamic Time Quantum)

  • 프로세스의 우선순위나 현재 시스템 부하에 따라 타임 퀀텀이 짧아지거나 길어질 수 있습니다.

  • 예시: CPU 사용량이 높은 프로세스에게 더 긴 타임 퀀텀을 부여하거나, 시스템 부하가 커지면 타임 퀀텀을 줄여 많은 프로세스가 번갈아 실행되도록 조정할 수 있습니다.

멀티 레벨 큐 스케줄링이 뭔가요?

  • 여러 개의 큐를 사용하여 다양한 우선순위를 가진 프로세스들을 그룹으로 나누어 각각의 큐에서 스케줄링하는 방식

  • 프로세스의 특성에 따라 서로 다른 큐에 배정하고, 각 큐에 대해 다른 스케줄링 알고리즘을 적용

  • 전위 큐(Foreground Queue): 일반적으로 대화형 프로세스(응답 시간이 중요한 프로세스)가 들어가는 큐로, 라운드 로빈(Round Robin)과 같은 선점형 스케줄링이 적용됩니다.

  • 후위 큐(Background Queue): 배치 작업이나 우선순위가 낮은 작업이 들어가는 큐로, FCFS(First-Come, First-Served)와 같은 비선점형 스케줄링이 적용될 수 있습니다.

  • 장점으로는 다양한 유형에 맞는 스케줄링으로 유연하게 관리 가능

  • 단점으로는 각 큐의 알고리즘에 따른 기아현상 발생 가능 -> 에이징 기법으로 해결

  • 단점으로 큐 간 이동 불가. 프로세스의 특성이 변해도 다른 큐로 이동 불가

큐 간에도 스케줄링이 존재.

  • 우선순위 기반

  • 타임 슬라이드(타임 퀀텀)

  • 에이징 기법

멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.

"프로세스가 계속해서 동일한 큐에 머무는 것이 아니라, CPU 사용 패턴에 따라 큐 사이를 이동한다는 점"

  • 여러 개의 우선순위 큐를 사용하여 프로세스의 상태나 CPU 사용 패턴에 따라 프로세스가 다른 큐로 이동할 수 있는 스케줄링 방식

  • 동적인 스케줄링 알고리즘으로, 각 프로세스의 실행 시간과 우선순위에 따라 다른 큐로 재배치

Example
  • 3개의 우선순위 큐가 있습니다:

    • 큐 1: 가장 높은 우선순위, 타임 퀀텀 5ms (대화형 작업)

    • 큐 2: 중간 우선순위, 타임 퀀텀 10ms (중간 정도의 CPU 사용량 작업)

    • 큐 3: 가장 낮은 우선순위, 타임 퀀텀 20ms (긴 배치 작업)

  • 4개의 프로세스가 있습니다:

    • P1: 도착 시간 0ms, 실행 시간 16ms

    • P2: 도착 시간 1ms, 실행 시간 6ms

    • P3: 도착 시간 2ms, 실행 시간 10ms

    • P4: 도착 시간 3ms, 실행 시간 25ms

1단계: 처음 도착한 프로세스 처리

  • 시간 0ms:

    • P1이 도착합니다. **큐 1(가장 높은 우선순위)**에 할당되어 CPU를 받습니다.

    • P1은 5ms 동안 실행되고 타임 퀀텀을 모두 소모하지만, **전체 실행 시간(16ms)**을 완료하지 못합니다.

    • 남은 시간은 11ms입니다.

    • P1은 **큐 2(중간 우선순위)**로 이동합니다.

2단계: 새로운 프로세스 도착

  • 시간 1ms:

    • P2가 도착합니다. 큐 1에 들어갑니다.

    • P1이 큐 2로 이동한 상태이므로, P2는 CPU를 할당받습니다.

    • P2는 5ms의 타임 퀀텀 동안 실행되고 6ms 중 5ms를 사용했으므로, 남은 1ms가 남습니다.

    • 큐 1에서 계속 대기하지 않고, 큐 2로 이동합니다.

3단계: 추가 프로세스 도착

  • 시간 2ms:

    • P3가 도착하여 큐 1에 들어갑니다.

    • P3가 CPU를 할당받고, 5ms 동안 실행되어 전체 10ms 중 5ms를 사용합니다.

    • 남은 시간은 5ms이며, P3도 큐 2로 이동합니다.

4단계: 또 다른 프로세스 도착

  • 시간 3ms:

    • P4가 도착하여 큐 1에 들어갑니다.

    • P4는 5ms 동안 실행되어 25ms 중 5ms를 사용합니다.

    • 남은 20ms를 완료하기 위해 큐 2로 이동합니다.

5단계: 큐 2의 처리

  • 시간 6ms~10ms:

    • 큐 1에 남아있는 프로세스가 없기 때문에, 큐 2에서 처리 시작됩니다.

    • P1이 먼저 큐 2에서 CPU를 할당받습니다. 타임 퀀텀 10ms로 실행되고 남은 11ms 중 10ms를 모두 사용합니다.

    • P1은 이제 남은 시간이 1ms이므로, **큐 3(가장 낮은 우선순위)**로 이동합니다.

6단계: 계속되는 큐 2 처리

  • 시간 11ms~20ms:

    • 큐 2에서 P2가 다시 CPU를 받습니다. P2는 남은 1ms만 남아 있었으므로, 실행을 마치고 종료됩니다.

    • 이후 P3가 CPU를 받습니다. P3는 5ms를 더 실행하여 10ms를 모두 완료하고 종료됩니다.

    • 마지막으로 P4가 CPU를 받습니다. 큐 2에서 10ms를 사용해 남은 20ms 중 10ms를 완료합니다.

    • P4는 남은 10ms로 큐 3으로 이동합니다.

7단계: 큐 3 처리

  • 시간 21ms~30ms:

    • 큐 3에서 가장 먼저 도착한 P1이 남은 1ms를 처리하여 종료됩니다.

    • 이후 P4가 CPU를 할당받아 남은 10ms를 처리하고 종료됩니다.

최종 프로세스 완료 시간:

  • P1: 22ms에 종료

  • P2: 12ms에 종료

  • P3: 20ms에 종료

  • P4: 30ms에 종료

"큐3이 실행되다가 큐1에 새로운 프로세스가 도착하면 큐3의 타임 슬라이스가 끝나면 큐1의 프로세스를 실행하고, 큐1의 프로세스의 타임슬라이스가 끝나면 큐2로 가게되고, 큐1의 프로세스가 없으면 큐2를 실행한뒤에 큐3으로 배치"