--- id: cpu-scheduling title: "CPU Scheduling" category: "Operating_System" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["CPU 스케줄링", "프로세스 스케줄링", "Processor Scheduling", "OS Scheduling"] duplicate_of: "" source_trust_level: "A" confidence_score: 0.95 created_at: 2026-07-11 updated_at: 2026-07-11 review_reason: "" merge_history: [] tags: ["research", "context 이해 규칙", "OS", "Scheduling"] raw_sources: ["Process Control Block (PCB) Explained: What It Stores - Unwired Learning", "Difference between Swapping and Context Switching - TutorialsPoint", "What Is Context Switching in Operating System | TestMu AI (Formerly LambdaTest)"] applied_in: [] github_commit: "" --- # [[CPU Scheduling]] ## 🎯 한 줄 통찰 (One-line insight) CPU 스케줄링은 다중 작업 환경(Multitasking)에서 한정된 단일 CPU 자원을 여러 프로세스에 공정하고 효율적으로 배분하기 위해 다음으로 실행할 프로세스를 결정하는 운영체제의 핵심 의사결정 메커니즘이다. ## 🧠 핵심 개념 (Core concepts) * **CPU Scheduler:** 대기 큐(Ready Queue)에 있는 프로세스 중 다음으로 CPU를 점유할 프로세스를 선택하는 운영체제 구성 요소 * **Process Control Block (PCB):** 프로세스 우선순위(Priority) 및 스케줄링 큐 포인터 등 CPU 스케줄러가 판단을 내리는 데 필요한 각종 스케줄링 정보를 저장하는 자료구조 * **Context Switching (문맥 교환):** 스케줄러의 결정에 따라 현재 실행 중인 프로세스의 상태를 저장하고, 새롭게 스케줄링된 프로세스의 상태를 CPU에 적재하여 제어권을 넘기는 실제 동작 메커니즘 * **Scheduling Algorithms:** 선점형(Preemptive) 및 비선점형(Non-Preemptive) 방식, FCFS, SJF, SRTF, HRRN, MLQ 등 자원 할당의 최적화를 위한 알고리즘 규칙 집합 ## 🧩 추출된 패턴 (Extracted patterns) * **우선순위 기반 자원 할당 (Priority-based Allocation):** 시스템은 프로세스의 중요도(Priority)에 따라 높은 우선순위의 프로세스를 먼저 스케줄링하여 처리 효율성을 유지한다. * **상태 보존과 복원의 반복 (State Save & Restore):** 스케줄링을 통해 다중 작업을 수행하기 위해서는 현재 프로세스의 중단 지점(Program Counter 및 레지스터 값)을 PCB에 저장하고 복원하는 일련의 문맥 교환 패턴이 반복된다. * **오버헤드 억제 메커니즘:** 스케줄링 알고리즘의 효율성이 높아질수록 시스템이 오직 프로세스 교체에만 리소스를 낭비하는 문맥 교환 오버헤드 빈도를 효과적으로 제어할 수 있다. ## ⚖️ 비교 및 선택 기준 (Comparison & decision criteria) (소스 데이터에 기반하여 운영체제의 프로세스 실행 및 메모리 관리 측면에서 상호 보완적으로 작동하는 문맥 제어 기술 비교) | 항목 (Option) | 장점 | 단점 | 언제 선택 | |---|---|---|---| | **Context Switching** (문맥 교환) | CPU 레지스터 내의 실행 컨텍스트만 저장/복원하여 속도가 상대적으로 매우 빠름 | 처리 시 유용한 작업을 하지 않는 시스템 오버헤드가 발생 | 다중 프로세스(Multitasking) 간 효율적인 CPU 시간 공유 및 스케줄링이 필요할 때 빈번히 선택 [S2] | | **Swapping** (스와핑) | 물리적 메모리(RAM) 용량 한계를 넘어 더 많은 프로세스 수용 가능 | 디스크 I/O 연산이 수반되므로 처리 속도가 상대적으로 느림 | 활성 프로세스를 위한 메인 메모리 가용 공간이 부족하여 유휴 프로세스를 일시적으로 치워야 할 때(Memory Pressure) 선택 [S2] | ## 📖 세부 내용 (Details) * **정의 및 역할:** CPU 스케줄링은 다중 프로세스 또는 스레드가 단일 CPU 위에서 실행되어야 하는 멀티태스킹 환경을 지원하기 위해 설계된 운영체제의 필수 기능이다 [S2, S3]. 운영체제는 현재 대기 중이거나 활성화된 프로세스들의 요구사항을 파악하여 어느 프로세스에 CPU를 할당할지 스케줄러를 통해 결정한다 [S3]. * **PCB와의 연계성:** CPU 스케줄러가 적절한 의사결정을 내리기 위해서는 각 프로세스의 식별표 역할을 하는 PCB(Process Control Block)를 참조해야 한다 [S1, S2, S3]. PCB 내의 'CPU 스케줄링 정보(CPU Scheduling Information)' 영역에는 해당 프로세스의 우선순위, 스케줄링 큐를 가리키는 포인터 및 기타 매개변수가 포함되어 있어 시스템이 스케줄링을 공정하게 처리하도록 돕는다 [S1]. * **스케줄링 알고리즘:** 프로세스를 관리하기 위해 선점형(Preemptive) 방식과 비선점형(Non-Preemptive) 방식의 CPU 스케줄링 기법이 존재한다 [S1]. 구체적인 알고리즘 기법으로는 FCFS(First-Come, First-Served), SJF(Shortest Job First), SRTF(Shortest Remaining Time First), HRRN(Highest Response Ratio Next), MLQ(Multilevel Queue) 등이 사용된다 [S1]. * **문맥 교환(Context Switching)과의 연동:** CPU 스케줄링에 의해 실행될 프로세스가 변경되면 운영체제는 반드시 문맥 교환을 수행해야 한다 [S1, S2, S3]. 이 과정에서 현재 프로세스의 프로그램 카운터(Program Counter) 및 CPU 레지스터 값들이 PCB에 저장되고, 대기 큐에서 스케줄링된 다음 프로세스의 상태 정보가 로드되어 실행이 재개된다 [S1, S3]. * **성능 및 오버헤드 영향:** 잦은 프로세스 교체는 CPU가 실제 작업 대신 정보 저장 및 로드에만 시간을 쏟게 만들어 오버헤드를 발생시킨다 [S3]. 더 나은 스케줄링 알고리즘을 구현하면 문맥 교환이 꼭 필요할 때만 일어나도록 조율할 수 있어 이러한 오버헤드를 효과적으로 감소시킬 수 있다 [S3]. ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스 내에서 상충되는 정보는 발견되지 않음. 모든 출처가 운영체제의 멀티태스킹을 지원하기 위한 스케줄링과 Context Switching, PCB의 유기적인 결합 관계를 동일하게 서술하고 있다. ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다. (소스에 구체적인 파일 경로, Git 커밋 해시 또는 결정 기록이 명시되지 않음) ## 💻 코드 패턴 (Code patterns) 소스에 코드 예시 없음. ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** A - **신뢰 점수:** 0.95 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 관련 문서 링크 (Related document links) ### 상위/유사 개념 - [[Context Switching]] — 스케줄링 결정 이후 CPU 레지스터의 상태를 물리적으로 교체하는 직접적인 메커니즘 - [[Process Control Block]] — CPU 스케줄링에 핵심적인 매개변수와 상태를 보존하는 커널 내 데이터 구조 - [[Multitasking]] — CPU 스케줄링과 문맥 교환이 필수적으로 요구되는 다중 작업 운영체제 환경 ### 심층 후속 질문 (Deeper Research Questions) - 선점형(Preemptive)과 비선점형(Non-Preemptive) 스케줄링 알고리즘은 어떤 상황적 맥락(Context)에서 각각 가장 최적의 효율을 내는가? - FCFS, SJF, MLQ 등 특정 CPU 스케줄링 알고리즘들이 시스템 오버헤드와 기아 상태(Starvation) 방지에 미치는 구체적 메커니즘은 무엇인가? - 프로세스의 우선순위(Priority)는 운영체제의 스케줄러 내에서 어떠한 기준으로 동적 재할당되는가? - 현대 멀티 코어 시스템 환경에서 CPU 스케줄링은 기존 단일 코어 기반 알고리즘을 어떻게 확장하여 사용하는가? (소스 외 질문) ### 실무 적용 맥락 (Practical Application Contexts) - **Implementation:** 운영체제 커널의 스케줄러 모듈 및 대기 큐(Ready Queue) 운영 구조 설계 - **System Design:** 멀티태스킹 환경에서 다중 프로세스 처리량 극대화 및 지연 시간 단축을 위한 자원 스케줄링 아키텍처 수립 - **Operation / Maintenance:** 과도한 Context Switching으로 인한 시스템 스로틀링(Throttling) 현상 모니터링 및 프로세스 큐 관리 - **Learning Path:** 운영체제 기본 구조 이해 -> 프로세스 관리(PCB) -> 멀티태스킹 및 CPU 스케줄링 -> 문맥 교환(Context Switching) ### 인접 주변 주제 (Adjacent Topics) - [[Memory Management]] — 스케줄링된 프로세스들이 올바르게 동작하기 위해 연계되어야 하는 메모리 할당 및 스와핑 제어 - [[Interrupt Handling]] — 하드웨어 및 소프트웨어적 인터럽트 발생 시 스케줄러가 개입하여 동작 흐름을 바꾸는 원리 ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[context 이해 규칙]] - **관련 개념:** [[Context Switching]], [[Process Control Block]] - **참조 맥락:** 다중 프로세스 환경에서 한정된 연산 자원을 논리적 규칙과 우선순위에 따라 배분하여 최적의 멀티태스킹을 이끌어내기 위한 아키텍처 설계 시 참조. ## 📚 출처 (Sources) - [S1] Process Control Block (PCB) Explained: What It Stores - Unwired Learning (URL: https://unwiredlearning.com/blog/process-control-block) - [S2] Difference between Swapping and Context Switching - TutorialsPoint (URL: https://www.tutorialspoint.com/article/difference-between-swapping-and-context-switching) - [S3] What Is Context Switching in Operating System | TestMu AI (Formerly LambdaTest) (URL: https://www.testmuai.com/blog/context-switching/) ## 📝 변경 이력 (Change history) - 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine.