Organizer 정리 산출물(From_RawData) + 이사 체크리스트 + 인덱스 갱신
- Raw_Data 자동 정리 산출물이 각 도메인 From_RawData/ 로 편입, 00_INDEX 연결 갱신 - 컴퓨터_이사_체크리스트.md 추가 (두뇌-상대 경로 규약 v2.2.304 — 새 컴퓨터에서 바꿀 절대 경로는 localBrainPath 1개) - Astra 세션 산출물(에피소드 기억·기능 인벤토리) 갱신 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user