```markdown --- id: process-state title: "Process State" category: "Operating System" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["프로세스 상태", "Process State", "프로세스 생명주기", "Process Lifecycle"] 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 이해 규칙", "Operating System", "Process", "PCB"] raw_sources: ["Process Control Block (PCB) Explained: What It Stores - Unwired Learning", "What Is Context Switching in Operating System | TestMu AI", "Difference between Swapping and Context Switching - TutorialsPoint"] applied_in: [] github_commit: "" --- # [[Process State]] ## 🎯 한 줄 통찰 (One-line insight) 프로세스 상태(Process State)는 운영체제가 다중 프로그래밍 환경에서 프로세스의 생명주기를 추적하고, CPU 제어권을 안전하게 전환(Context Switching)하기 위해 PCB에 관리하는 핵심 실행 컨텍스트이다. ## 🧠 핵심 개념 (Core concepts) - **상태의 종류 (State Types):** 프로세스는 일생 동안 New, Ready, Running, Waiting, Terminated 등의 상태를 거친다. - **PCB (Process Control Block):** 운영체제가 프로세스의 현재 상태, PID, 프로그램 카운터, 레지스터 정보 등을 포괄적으로 저장하는 데이터 구조체이다. - **문맥 교환 (Context Switching):** CPU가 다른 프로세스로 실행을 전환할 때, 현재 실행 중인 프로세스의 상태를 저장하고 다음 프로세스의 상태를 로드하여 중단된 시점부터 매끄럽게 재개할 수 있도록 하는 메커니즘이다. ## 🧩 추출된 패턴 (Extracted patterns) - **상태 빈도 변경:** 프로세스의 상태는 수명 주기 동안 스케줄러의 개입이나 I/O 요청 등에 의해 빈번하게 변경된다. - **스케줄링 조건 제한:** 운영체제의 CPU 스케줄러는 오직 'Ready(준비)' 상태에 있는 프로세스만을 다음 실행 대상으로 선택하여 실행(Running) 상태로 전환한다. ## 📖 세부 내용 (Details) - **프로세스 상태의 정의 및 종류:** 모든 프로세스는 실행되는 동안 일련의 수명 주기를 가지며, 운영체제에 의해 New(생성), Ready(준비), Running(실행), Waiting(대기) 또는 Terminated(종료) 상태 중 하나로 분류된다 [S1]. - **PCB를 통한 상태 정보 기록:** 프로세스의 현재 상태는 운영체제가 해당 프로세스를 관리하기 위해 생성하는 식별 카드와 같은 PCB(Process Control Block) 또는 TCB(Task Control Block) 내에 저장된다 [S1], [S2]. - **문맥 교환과 상태 전이 메커니즘:** CPU에서 프로세스(예: P1)가 실행(Running) 중일 때 인터럽트나 시스템 콜이 발생하면, 운영체제는 P1의 현재 상태(프로그램 카운터, 레지스터 값 포함)를 해당 PCB에 저장하고 P1을 Idle 또는 적절한 대기 큐로 전이시킨다 [S2], [S3]. - **스케줄링 및 실행 재개:** 운영체제는 스케줄링 알고리즘(우선순위, 도착 시간 등)에 근거하여 Ready 상태의 큐에서 다음 프로세스를 선택한다 [S2]. 선택된 프로세스의 저장된 상태 정보가 CPU에 다시 로드되면 프로세스는 Ready 상태에서 Running 상태로 전이되어 이전 중단점부터 정확히 실행을 재개한다 [S1], [S2]. ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스에서 확인되지 않음. ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다. ## 💻 코드 패턴 (Code patterns) 소스에 코드 예시 없음. ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** A - **신뢰 점수:** 0.95 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 관련 문서 링크 (Related document links) ### 상위/유사 개념 - [[Context Switching]] — 연결 이유: 프로세스 상태가 저장되고 복원되는 직접적인 운영체제 동작 메커니즘 - [[PCB (Process Control Block)]] — 연결 이유: 프로세스 상태 정보가 물리적으로 저장되고 관리되는 자료구조 - [[CPU Scheduling]] — 연결 이유: 프로세스의 상태를 Ready에서 Running으로 전이시키기 위한 운영체제의 의사결정 프로세스 ### 심층 후속 질문 (Deeper Research Questions) - 문맥 교환 과정에서 프로세스의 상태를 저장하고 복원하는 데 소요되는 오버헤드는 시스템 성능에 어떤 영향을 미치는가? - 프로세스가 Waiting 상태에서 Ready 상태로 전환되는 정확한 트리거 요인과 메커니즘은 무엇인가? - 스레드(Thread) 간의 문맥 교환 시 저장되는 상태 정보는 프로세스 간 교환 시와 어떻게 다르며, 왜 더 빠른가? - 멀티프로그래밍 환경에서 과도하게 많은 프로세스가 생성되었을 때, 프로세스 상태 큐(Queue) 관리는 어떻게 최적화될 수 있는가? ### 실무 적용 맥락 (Practical Application Contexts) - **Implementation:** 운영체제 커널의 태스크 스케줄러 구현 및 문맥 교환 코드 레벨 적용 - **System Design:** 다중 처리 및 동시성 처리가 필요한 시스템에서의 태스크 및 리소스 관리 아키텍처 설계 - **Operation / Maintenance:** CPU 오버헤드 감소 및 교착 상태(Deadlock) 분석을 위한 프로세스 모니터링 - **Learning Path:** 운영체제 기본 구조, 문맥 교환, 메모리 및 스레드 관리에 대한 전반적인 전산학 학습 ### 인접 주변 주제 (Adjacent Topics) - [[Memory Management]] — 확장 방향: 프로세스가 메모리 상에 올라가고 Swap Out/In을 통해 상태가 관리되는 방식 - [[Multithreading]] — 확장 방향: 프로세스 상태 전환에 비해 가벼운 스레드 단위의 상태 공유 및 전환 학습 ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[context 이해 규칙]] - **관련 개념:** [[Context Switching]], [[PCB (Process Control Block)]] - **참조 맥락:** 운영체제의 다중 작업 환경에서 개별 프로세스의 진행 상황과 CPU 제어권을 안전하게 스위칭하고 스케줄링하기 위한 핵심 기반 지식으로 참조됨. ## 📚 출처 (Sources) - [S1] Process Control Block (PCB) Explained: What It Stores - Unwired Learning - [S2] What Is Context Switching in Operating System | TestMu AI (Formerly LambdaTest) - [S3] Difference between Swapping and Context Switching - TutorialsPoint ## 📝 변경 이력 (Change history) - 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine. ```