스케줄링
CPU 스케줄러 = (레스토랑의 매니저 역할)
필요성
- 작업하기 위해 다양한 자원 사용
- 작업 개수가 많아지면 자원을 효율적으로 배분해야함(모든 작업에 쓸 만큼 여유가 없음)
- 그걸 관리해주는게 스케줄러
개념
- 프로세서가 cpu에 할당될 기회를 결정, 수행하는 과정
- 작업을 처리하기 위한 일정 관리
하는일
- 공평성(자원 공정 배분, 소외되는 프로세스 없게)
- 효율성(자원 유후시간 없게, 유후 자원 사용 프로세스에게 우선권, 중요한 작업 먼저)
- 안정성(자원 파괴로부터 보호, 프로세스가 증가해도 시스템 안정적으로 작동)
- 확장성(늘어난 자원을 시스템에 반영)
- 반응 시간 보장(사용자의 예측 시간 내에 적절하게 반응해야 함)
- 무한 연기 방지(특정 프로세스의 작업이 무기한 연기되면 안 됨)
스케줄링 단계
- 상위단계 (High Level) - 장기/작업/승인 스케줄링(long-term/job/admission)
전체 작업 수 조절, 작업 승인여부 결정, 포로세스 총 개수 정의
[전체 시스템의 부하를 고려해 작업의 시작여부를 판단] - 중간단계 (Middle Level) - 보류(suspend) active상태로 전환
활성호된 프로세스 조절(과부하 해소), 저수준 스케줄링 부담 완화
[시스템 과부하시 활성화된 프로세스 중 일부를 보류 상태로 보냄] - 하위단계 (Low Level) - 단기(short-term, cpu scheduling)
프로세스를 cpu에 할당, 프로세스를 대기상태로 전환
[실제 작업 수행]

선점형/비선점형 스케줄링
- 선점형 스케줄링(Preemptive Scheduling)
작업 방식 : 실행 중인 작업을 중단하고 새 작업 실행 가능
장점 : CPU 독점 불가
단점 : 문맥 교환의 오버헤드 많음
사용 : 시분할 방식
중요도 : 높음 - 비선점형 스케줄링(Non-Preemptive Scheduling) - 중단 불가
작업 방식 : 실행 중인 작업 완료 전까지 다른 작업 불가
장점 : 스케줄러 작업량 적고 문맥교환 오버헤드 적음
단점 : 기다리는 프로세스가 많아 처리율이 떨어짐
사용 : 일괄 작업 방식
중요도 : 낮음
표 형식으로 비교해서 정리
프로세스 우선순위
- 커널 > 일반
- 우선순위의 고저(높을수록 빨리, 더 자주)
- 우선순위를 높이는 것은 관리자만 가능(낮추는 것은 일반 계정도 가능)
CPU 집중 프로세스와 I/O 집중 프로세스
- CPU 집중 프로세스(CPU intensive)
클럽단위 동 - I/O (I/O intensive)
- CPU burst
- I/O burst
배정 순서가 성능에 미치는 영향
- cycle stealing
전면/후면 프로세스
- 전면 프로세스
- 후면 프로세스
CPU스케줄링 시 고려사항
커널/일반, 전면/후면, 대화형/일괄, 입출력/cpu집중 별로 우선순위를 비교한 표
CPU 스케줄링: 효율적인 자원 관리의 핵심
운영체제에서 중요한 역할을 하는 CPU 스케줄러는 레스토랑의 매니저처럼 시스템 자원을 효율적으로 분배하고,
작업이 원활하게 처리되도록 돕는 역할을 합니다.
여러 프로세스가 동시에 실행될 때, 자원의 부족이나 과부하가 발생할 수 있기 때문에,
이를 잘 관리하는 것이 중요합니다.
이번 포스팅에서는 CPU 스케줄링의 개념, 필요성, 종류,
그리고 주요 고려 사항들을 자세히 알아보겠습니다. 🍽️
1. CPU 스케줄링의 필요성
운영체제에서 CPU 스케줄러가 중요한 이유는, 여러 프로세스가 시스템 자원을 공유할 때 발생할 수 있는 문제를 해결하기 위해서입니다.
컴퓨터의 자원, 특히 CPU는 한정적이기 때문에, 많은 작업이 동시에 진행되면 자원을 효율적으로 배분해야 합니다. 이를 관리하는 주체가 바로 CPU 스케줄러입니다.
- 작업 개수 증가: 여러 작업이 동시에 실행될 때, 각 작업에 할당될 자원을 효율적으로 배분해야 합니다.
- 공정성 및 효율성: 시스템의 부하를 관리하며, 자원의 유휴시간을 최소화하고, 중요한 작업을 우선 처리해야 합니다.
- 안정성 보장: 시스템의 과부하를 막고, 안정적인 작동을 보장해야 합니다.
- 반응 시간 보장: 사용자에게 예측 가능한 반응 시간을 제공하여, 사용자 경험을 최적화해야 합니다.
2. CPU 스케줄링의 주요 역할
스케줄러가 담당하는 주요 임무는 다음과 같습니다:
- 공평성: 자원의 공정한 배분, 모든 프로세스가 공정하게 CPU를 할당받도록 관리합니다. 특히 소외된 프로세스가 없도록 주의합니다.
- 효율성: 자원의 유휴 시간을 최소화하고, 유휴 자원을 사용하는 프로세스를 우선적으로 처리합니다. 또한 중요한 작업이 먼저 처리되도록 합니다.
- 안정성: 시스템이 자원 파괴로부터 보호되도록 하며, 프로세스가 증가해도 시스템은 안정적으로 작동해야 합니다.
- 확장성: 시스템에 자원이 추가되었을 때, 효율적으로 그 자원을 반영할 수 있어야 합니다.
- 반응 시간 보장: 사용자가 예측할 수 있는 시간 내에 적절한 반응을 제공해야 합니다.
- 무한 연기 방지: 특정 프로세스의 작업이 무기한 연기되지 않도록 보장합니다.
3. 스케줄링 단계
단계 | 설명 | 목적 |
상위 단계 (High Level) | 장기/작업/승인 스케줄링 (Long-term/job/admission) | 전체 시스템의 부하를 고려하여 작업의 시작 여부를 결정하고, 시스템에 대한 작업 수를 정의 |
중간 단계 (Middle Level) | 보류(Suspend) 상태로 전환 | 시스템 과부하 시, 활성화된 일부 프로세스를 보류 상태로 보내고, 이를 통해 자원 관리 |
하위 단계 (Low Level) | 단기(SHORT-term, CPU scheduling) | 실제로 프로세스를 CPU에 할당하고, 작업을 실행하는 단계 |
4. 선점형 vs 비선점형 스케줄링
CPU 스케줄링 방식은 선점형(Preemptive) 과 비선점형(Non-Preemptive) 으로 나눌 수 있습니다. 이 두 방식은 프로세스의 실행 중단 여부에 따라 차이가 있습니다.
종류 | 설명 | 장점 | 단점 |
선점형 스케줄링 (Preemptive) | 실행 중인 작업을 중단하고 새 작업을 실행할 수 있음 | CPU 독점 방지, 여러 프로세스가 공평하게 자원 할당받을 수 있음 | 문맥 교환(Context Switching)의 오버헤드가 많음 |
비선점형 스케줄링 (Non-Preemptive) | 실행 중인 작업을 중단할 수 없음, 작업이 완료될 때까지 기다려야 함 | 문맥 교환 오버헤드가 적고, 시스템에 대한 부담이 적음 | 대기 중인 프로세스가 많을 경우 처리 속도가 느려짐 |
선점형 방식은 시분할 시스템에서 주로 사용되며, 비선점형 방식은 일괄 작업 시스템에서 사용됩니다.
5. 프로세스 우선순위
운영체제에서 CPU 스케줄링을 효율적으로 관리하려면 각 프로세스의 우선순위를 결정하는 것이 중요합니다. 우선순위에 따라 CPU를 할당하는 순서가 달라집니다.
프로세스 유형 | 설명 |
커널 프로세스 | 시스템의 핵심 작업을 담당하는 프로세스로, 일반적인 프로세스보다 우선순위가 높음 |
일반 프로세스 | 사용자 응용 프로그램 등으로, 커널 프로세스보다는 낮은 우선순위를 가짐 |
우선순위의 고저 | 우선순위가 높을수록 빠르고 자주 실행됩니다. 우선순위를 높이는 것은 관리자만 가능합니다. |
6. CPU 집중 프로세스 vs I/O 집중 프로세스
CPU 집중 프로세스(CPU Intensive)와 I/O 집중 프로세스(I/O Intensive)는 각기 다른 방식으로 시스템 자원을 사용합니다.
설명 | 설명 | 특징 |
CPU 집중 프로세스 (CPU Intensive) | CPU를 많이 사용하는 계산 집중적인 작업이 주를 이룸 | CPU burst 시간이 길고, 자주 CPU를 사용 |
I/O 집중 프로세스 (I/O Intensive) | 주로 입출력 작업이 많은 프로세스로, CPU보다는 입출력 장치의 사용에 집중하는 작업 | I/O burst 시간이 길고, 자주 입출력 작업 |
이 두 종류의 프로세스를 잘 분배하여, CPU와 I/O 장치가 균형 있게 사용될 수 있도록 관리하는 것이 중요합니다.
7. CPU 스케줄링 시 고려 사항
CPU 스케줄링 시, 다음과 같은 다양한 조건을 고려해야 합니다.
조건 | 설명 |
커널/일반 | 커널 프로세스는 일반 프로세스보다 우선순위가 높습니다. |
전면/후면 프로세스 | 전면 프로세스는 사용자가 상호작용하는 중요한 프로세스이고, 후면 프로세스는 백그라운드 작업으로 상대적으로 우선순위가 낮습니다. |
대화형/일괄 | 대화형 프로세스는 사용자와의 인터랙션이 필요한 반면, 일괄 처리 프로세스는 주로 자동화된 작업입니다. |
입출력 집중/CPU 집중 | CPU 집중 프로세스는 계산이 많은 작업이고, 입출력 집중 프로세스는 데이터 입출력이 많은 작업입니다. |
https://claude.ai/login?returnTo=%2F%3F
여담
**MCP (Model Context Protocol)**와 **LLM (Large Language Model)**은 서로 다른 개념이지만, 현대 AI 및 자연어 처리 시스템에서 서로 연관성을 가질 수 있습니다. MCP는 모델 간의 상호작용 및 문맥을 관리하는 프로토콜을 의미하며, LLM은 대형 언어 모델로 텍스트 기반의 자연어 처리 작업을 수행하는 기술입니다. 이 둘의 관계를 이해하기 위해서는 각각의 역할과 연결 방식을 살펴보는 것이 중요합니다.
1. MCP (Model Context Protocol)
MCP는 모델 간의 상호작용을 관리하는 규약, 또는 프로토콜입니다. AI 시스템에서 여러 모델이 협력하여 정보를 처리하거나, 문맥을 전달하고 이해하는 과정에서 중요한 역할을 합니다. MCP의 주된 역할은 모델 간의 문맥 관리 및 전달입니다. 구체적으로는 모델이 이전에 처리한 정보나 문맥을 다른 모델에게 전달하여, 일관되고 연속적인 응답을 생성할 수 있도록 합니다.
MCP의 주요 기능:
- 문맥 전파: 한 모델이 이전의 문맥이나 정보를 다른 모델에게 전달하여, 문맥을 계속 이어가면서 처리할 수 있게 합니다. 예를 들어, 대화형 AI 시스템에서 이전의 대화 내용을 다른 모델이 받아서 적절한 응답을 생성할 수 있게 합니다.
- 상호작용 관리: 여러 개의 모델이 협력하여 작업을 분담하거나, 공동으로 목표를 달성하는 환경에서 중요한 역할을 합니다. 이를 통해 각 모델이 서로의 출력을 인식하고 효율적으로 동작할 수 있게 됩니다.
- 모델 간 일관성 유지: 각 모델의 출력이 일관되게 유지되도록 돕습니다. 예를 들어, 텍스트 생성 작업에서 다양한 LLM들이 출력한 정보를 조합할 때, 일관성 있게 결과를 도출하는 데 도움을 줍니다.
MCP의 사용 사례:
- 다중 모델 협업: 예를 들어, 자연어 처리 시스템에서 문장을 생성하는 LLM이 있고, 별도로 문법 검사를 수행하는 다른 모델이 있을 때, 두 모델이 서로 협력하여 최종 문장을 생성합니다.
- 대화형 AI 시스템: 대화형 AI에서 여러 모델이 각기 다른 역할을 맡을 수 있는데, MCP는 각 모델 간의 문맥을 효율적으로 전달하고 관리하여 자연스러운 대화를 유지합니다.
2. LLM (Large Language Model)
LLM은 대형 언어 모델을 의미하며, 트랜스포머(Transformer) 아키텍처를 기반으로 하는 모델입니다. LLM은 주로 텍스트 데이터를 학습하여 언어의 의미를 이해하고, 질문에 답하거나 텍스트를 생성하는 작업을 수행합니다. 대표적인 예로는 GPT, BERT, T5 등이 있습니다.
LLM의 주요 기능:
- 자연어 이해: LLM은 방대한 텍스트 데이터를 기반으로 문법, 구문, 의미 등을 학습하여 주어진 텍스트를 이해하고 처리할 수 있습니다.
- 텍스트 생성: LLM은 사용자가 입력한 텍스트를 바탕으로 자연스러운 문장, 문단, 또는 전체 문서를 생성할 수 있습니다.
- 다양한 자연어 처리 작업: 번역, 요약, 감성 분석, 질문 응답 등 다양한 NLP 작업을 처리할 수 있습니다.
LLM의 사용 사례:
- 대화형 AI: 대화형 AI에서 사용자와의 대화를 이해하고, 문맥에 맞는 답변을 생성하는 데 사용됩니다.
- 문서 생성: 블로그 글, 뉴스 기사, 소설 등 다양한 형태의 텍스트를 생성하는 데 사용됩니다.
- 번역 및 텍스트 분석: 다국어 번역, 텍스트 요약 등 여러 NLP 작업을 수행하는 데 사용됩니다.
3. MCP와 LLM의 연관성
MCP와 LLM은 대규모 AI 시스템에서 협력하여 더 강력하고 효율적인 결과를 도출할 수 있는 구조를 제공합니다. LLM이 단독으로 텍스트를 생성하는 데 사용되지만, MCP는 여러 LLM 또는 모델들이 협력하고 상호작용하는데 중요한 역할을 합니다. 구체적인 연관성은 다음과 같습니다:
MCP가 LLM에 미치는 영향
- 문맥 관리: LLM이 텍스트를 생성할 때, 이전 문맥을 유지하는 것이 중요합니다. MCP는 이러한 문맥을 모델 간에 전달하고 유지하는 역할을 하여, LLM이 대화의 흐름을 이해하고 일관성 있는 답변을 생성할 수 있도록 돕습니다.
- 다중 모델 협업: LLM은 매우 강력하지만, 때로는 여러 모델이 협력하는 것이 더 효율적일 수 있습니다. 예를 들어, LLM이 텍스트를 생성하고, 다른 모델이 그 텍스트의 문법을 검사하거나, 감정을 분석하는 경우, MCP는 이들 간의 문맥과 정보 흐름을 원활하게 관리합니다.
- 대화형 AI: 대화형 AI 시스템에서 LLM은 각 문장에 대한 응답을 생성하지만, 이전 대화 내용이나 문맥을 이해하기 위해서는 MCP가 필요합니다. MCP는 대화의 역사를 추적하고, 각 모델이 대화의 흐름에 맞게 응답을 생성할 수 있도록 돕습니다.
LLM이 MCP에 미치는 영향
- 언어 모델의 향상: LLM은 텍스트 데이터를 처리하는 능력이 뛰어나기 때문에, MCP를 활용하여 여러 모델 간의 협업을 강화할 수 있습니다. 예를 들어, 하나의 LLM이 생성한 텍스트를 다른 모델이 평가하고, 결과적으로 더 정확하고 자연스러운 결과를 생성할 수 있습니다.
- 다양한 작업 처리: LLM을 활용하면 다양한 자연어 처리 작업을 다룰 수 있는데, MCP는 이를 효율적으로 분배하고 관리할 수 있는 방법을 제공합니다. 예를 들어, LLM이 텍스트 생성 작업을 처리하고, 다른 모델이 감정 분석을 하는 시스템에서는 MCP가 모델 간의 문맥을 원활하게 전파하여 일관된 결과를 도출할 수 있게 합니다.
결론
MCP와 LLM은 서로 보완적인 역할을 하며, 복잡한 자연어 처리 작업을 효율적으로 수행하는 데 중요한 기술적 역할을 합니다. MCP는 여러 모델 간의 상호작용을 관리하고, 문맥을 전달하는 프로토콜로서 LLM이 수행하는 작업을 보다 정확하고 자연스럽게 만들어 주는 기능을 합니다. LLM은 텍스트 생성 및 처리의 핵심 역할을 담당하지만, MCP는 이 모델들이 협력하고 상호작용하는 과정에서 필수적인 요소로 작용합니다. 두 기술의 결합은 더욱 효율적이고 강력한 AI 시스템을 구축하는 데 중요한 역할을 합니다.
FCFS방식(First come First served)
특징 :
유사한 예 : 콘보이 효과
SJF방식(Shortest Job First)
- 아사 위험(에이징 방식 해결)
HRN방식(Highest Response Ratio Next) - 공평성 문제가 해결되지 않아 사용X
다중 큐 스케줄링: 시스템 효율성을 높이는 다양한 스케줄링 기법들
다중 큐 스케줄링은 운영 체제에서 여러 큐를 사용하여 프로세스를 관리하고 자원을 효율적으로 분배하는 방법입니다. 각 큐는 특정 기준에 따라 분류된 프로세스들을 포함하고 있으며, 각 큐에 대해 별도의 스케줄링 전략을 적용할 수 있습니다. 다중 큐 시스템을 사용하면 성능을 최적화하고 시스템 자원의 활용도를 높일 수 있습니다. 이 블로그에서는 다중 큐의 종류와 관련된 다양한 스케줄링 기법들을 소개하고, 각 방식의 특징과 장단점에 대해 설명하겠습니다.
1. 준비 상태의 다중 큐
준비 상태의 다중 큐는 프로세스를 여러 큐로 나누어 관리하는 방식으로, 각 큐는 특정 조건이나 우선순위에 따라 프로세스를 분류합니다. 이를 통해 운영 체제는 보다 효율적으로 자원을 배분할 수 있습니다. 주요 스케줄링 기법은 다음과 같습니다.
프로세스의 우선순위 배정 방식
- 고정 우선순위 배정 방식 (Static Priority)
- 한 번 부여된 우선순위는 프로세스가 끝날 때까지 변경되지 않습니다.
- 장점: 구현이 간단합니다.
- 단점: 우선순위가 고정되어 있기 때문에, 상황에 따라 작업 효율성이 떨어질 수 있습니다.
- 변동 우선순위 배정 방식 (Dynamic Priority)
- 프로세스 실행 중에 우선순위가 변경될 수 있습니다.
- 장점: 시스템의 효율성이 더 높을 수 있습니다.
- 단점: 우선순위가 변동하기 때문에 구현이 더 복잡합니다.
2. 대기 상태의 다중 큐
대기 상태의 다중 큐는 대기 중인 프로세스를 효율적으로 관리하기 위해 큐를 사용하는 방식입니다. 대기 중인 프로세스를 입출력 요구나 다른 기준에 따라 그룹화하여, 같은 요구를 가진 프로세스들이 함께 대기할 수 있도록 합니다. 이를 통해 자원의 낭비를 최소화하고, 입출력 대기 시간을 줄이는 데 도움을 줍니다.
- 시스템 효율성 증대: 동일한 입출력 요구를 가진 프로세스를 모아 대기시킴으로써, 입출력 자원을 효율적으로 활용할 수 있습니다.
- PCB (Process Control Block) 사용: 대기 중인 프로세스들을 관리하기 위해 PCB를 사용하여 프로세스의 상태를 추적하고, 필요한 작업을 수행합니다.
- Interrupt Vector 활용: 입출력 작업을 관리하기 위해 인터럽트 벡터를 사용하기도 합니다.
3. 스케줄링 평가 방법
스케줄링 알고리즘의 성능을 평가하기 위한 지표들은 여러 가지가 있습니다. 주요 지표들은 다음과 같습니다:
- CPU 사용률: 시스템 동작 시간 중 CPU를 사용하는 비율을 측정합니다
- CPU의 효율적인 사용을 보여주는 지표입니다.
- 처리: 단위 시간당 작업을 마친 프로세스의 수로, 수치가 클수록 좋은 알고리즘입니다.
- 대기 시간: 프로세스가 생성된 후 실행되기 전까지 대기하는 시간입니다.
- 예시: 실행 파일을 더블클릭한 후 실제 구동이 시작될 때까지의 시간.
- 응답 시간: 첫 작업을 시작한 후, 첫 번째 반응(출력)을 얻기까지의 시간입니다.
- 예시: 프로그램의 UI가 생성된 시간.
- 실행 시간: 프로세스 작업이 시작된 후 종료되기까지의 시간입니다.
- 예시: 프로그램의 동작 시간.
- 반환 시간: 대기 시간을 포함하여 실행이 종료될 때까지의 시간입니다.
- 예시: 실행 프로그램의 종료 시간, 대기시간+실행시간.
라운드 로빈 방식 (Round Robin Scheduling)
라운드 로빈(RR) 방식은 가장 간단하고 널리 사용되는 CPU 스케줄링 기법 중 하나입니다. 이 방식은 각 프로세스에게 일정한 시간 할당량(time quantum)을 주고, 그 시간이 끝나면 다음 프로세스로 CPU를 넘기는 방식입니다. 프로세스들은 차례로 CPU 시간을 할당받게 되며, 한 프로세스가 할당된 시간을 초과하지 않으면 바로 종료되고, 그렇지 않으면 다시 대기 큐의 마지막으로 이동하여 다음 프로세스가 실행됩니다.
장점:
- 공정성: 모든 프로세스에게 동일한 시간을 할당하므로 공평하게 CPU를 사용할 수 있습니다.
- 단순성: 구현이 매우 간단하고 직관적입니다.
단점:
- 문맥 교환 오버헤드: 주기적으로 문맥 교환이 발생하므로 오버헤드가 크고, 시간이 많이 걸리는 프로세스가 많을 경우 효율이 떨어집니다.
- 적절한 시간 할당량 설정이 중요: 시간 할당량이 너무 작으면 문맥 교환이 자주 발생하고, 너무 크면 FCFS와 비슷해져 비효율적일 수 있습니다.
SRT (Shortest Remaining Time) 방식
SRT는 Shortest Job First (SJF)의 선점형 버전입니다.
이 방식은 현재 실행 중인 프로세스의 남은 실행 시간을 고려하여 가장 짧은 남은 시간이 있는 프로세스를 우선 실행하는 방식입니다. 즉, 프로세스가 실행될 때마다 다른 프로세스들이 대기 중이라면, 남은 실행 시간이 짧은 프로세스가 우선 실행됩니다.
장점:
- 효율적인 CPU 사용: 평균 대기 시간을 최소화하고, 작은 작업들이 빠르게 처리됩니다.
- 짧은 작업 우선 처리: 짧은 작업이 빠르게 끝나므로 시스템 효율을 높일 수 있습니다.
단점:
- 기아(Starvation) 문제: 긴 작업들이 계속해서 대기 상태로 남을 수 있습니다.
- 예측 어려움: 정확한 남은 실행 시간을 알기 어려운 경우가 많습니다.
기타 스케줄링 방식
1. 우선순위 기반 스케줄링 (Priority Scheduling)
우선순위 기반 스케줄링은 각 프로세스에 우선순위를 매기고, 높은 우선순위를 가진 프로세스를 먼저 실행하는 방식입니다. 우선순위는 프로세스 생성 시 지정하거나, 시스템에 의해 동적으로 변경될 수 있습니다.
장점:
- 중요한 작업 우선 처리: 중요한 작업을 우선적으로 처리할 수 있습니다.
- 유연성: 우선순위를 동적으로 변경할 수 있어 시스템의 요구에 맞게 적용할 수 있습니다.
단점:
- 기아 문제: 우선순위가 낮은 작업은 계속해서 대기할 수 있습니다.
- 예측 어려움: 우선순위의 설정 및 관리가 어려울 수 있습니다.
2. 다단계 큐 (Multilevel Queue Scheduling, MLQ)
다단계 큐는 여러 개의 큐를 사용하여 프로세스를 관리하는 방식입니다. 각 큐는 우선순위에 따라 나누어지며, 높은 우선순위를 가진 프로세스가 먼저 실행됩니다. 일반적으로 고정된 큐를 사용하고, 각 큐에 대해 다른 스케줄링 방식을 적용합니다. 예를 들어, CPU 집약적인 프로세스는 라운드 로빈 방식으로, I/O 집약적인 프로세스는 FCFS 방식으로 스케줄링할 수 있습니다.
장점:
- 다양한 요구에 대응 가능: 서로 다른 특성을 가진 프로세스를 효율적으로 관리할 수 있습니다.
- 성능 최적화: 각 큐마다 적합한 스케줄링 방식을 적용하여 성능을 최적화할 수 있습니다.
단점:
- 공정성 문제: 큐에 들어간 프로세스는 우선순위가 고정되어 있어 다른 큐로 이동하지 않기 때문에, 우선순위가 낮은 프로세스는 계속해서 대기할 수 있습니다.
3. 다단계 피드백 큐 (Multilevel Feedback Queue, MLFQ)
다단계 피드백 큐는 다단계 큐의 확장 버전으로, 프로세스가 특정 큐에 배정되었을 때, 프로세스가 수행한 양에 따라 다른 큐로 이동하는 방식입니다. 예를 들어, I/O 집약적인 프로세스는 CPU 시간을 적게 사용하므로 낮은 우선순위의 큐로 배정되고, CPU 집약적인 프로세스는 높은 우선순위의 큐로 배정됩니다. 이 방식은 프로세스의 실행 특성에 따라 동적으로 큐를 이동시킴으로써 더 유연하게 처리할 수 있습니다.
장점:
- 동적 조정 가능: 프로세스의 특성에 따라 적합한 큐로 이동할 수 있어 효율적인 자원 배분이 가능합니다.
- 공정성 향상: CPU 집중적인 작업과 I/O 집중적인 작업을 구분하여 효율적으로 관리합니다.
단점:
- 복잡한 구현: 다단계 큐보다 구현이 복잡하고, 시스템에 대한 세심한 조정이 필요합니다.
- 문맥 교환 오버헤드: 프로세스가 큐를 이동할 때마다 문맥 교환이 발생할 수 있습니다.
4. 주요 스케줄링 알고리즘
다중 큐 스케줄링에서 가장 많이 사용되는 알고리즘은 다음과 같습니다:
- FCFS (First Come First Served)
- 특징: 가장 먼저 도착한 프로세스를 먼저 실행합니다.
- 단점: 콘보이 효과(많은 짧은 프로세스가 길고 무거운 프로세스를 기다리게 되는 현상)가 발생할 수 있습니다.
- SJF (Shortest Job First)
- 특징: 가장 짧은 실행 시간을 가진 프로세스를 우선 실행합니다.
- 장점: 평균 대기 시간을 최소화할 수 있습니다.
- 단점: 아사 위험(긴 프로세스가 계속 대기하는 현상)이 발생할 수 있습니다. 이를 해결하기 위해 에이징 기법을 사용할 수 있습니다.
- HRN (Highest Response Ratio Next)
- 특징: 응답 비율이 가장 높은 프로세스를 우선 처리합니다. 응답 비율은 대기 시간과 처리 시간을 고려한 값입니다.
- 단점: 공평성 문제가 발생할 수 있어 사용에 제약이 있습니다.
- 라운드 로빈 (Round Robin)
- 특징: 각 프로세스에 일정 시간의 CPU 시간을 할당하고, 순차적으로 실행하는 방식입니다.
- 장점: 모든 프로세스가 공평하게 CPU를 사용할 수 있도록 보장합니다.
- SRT (Shortest Remaining Time First)
- 특징: 남은 실행 시간이 가장 짧은 프로세스를 우선 실행하는 방식입니다.
- 장점: 짧은 프로세스들이 빠르게 처리되어 평균 대기 시간이 줄어듭니다.
- 기타
- 우선순위 기반 스케줄링 (Priority Scheduling)
- 특징:프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스를 먼저 실행하는 방식.
- 장점:중요한 작업을 우선적으로 처리할 수 있어 시스템 효율을 높일 수 있음.
- 단점:우선순위가 낮은 프로세스는 무한정 대기할 수 있어 기아(Starvation) 문제가 발생할 수 있음.
- 다단계 큐 (Multilevel Queue Scheduling, MLQ)
- 특징:여러 개의 고정된 우선순위를 가진 큐로 프로세스를 나누어 각 큐에 대해 다른 스케줄링 알고리즘을 적용.
- 장점:프로세스 유형에 맞는 큐 배정을 통해 자원 관리가 효율적이고, 시스템 성능을 최적화할 수 있음.
- 단점:큐를 변경할 수 없고, 프로세스 간 이동이 없기 때문에 효율성이 떨어질 수 있음.
- 다단계 피드백 큐 (Multilevel Feedback Queue, MLFQ)
- 특징:프로세스의 특성에 따라 큐가 동적으로 변경되는 스케줄링 방식.
- 장점:유연한 프로세스 관리가 가능하고, CPU 집약적/IO 집약적 작업을 효율적으로 분리하여 처리할 수 있음.
- 단점:복잡한 구현과 관리가 필요하며, 동적인 우선순위 조정이 시스템 자원을 소모할 수 있음.
- 우선순위 기반 스케줄링 (Priority Scheduling)
'computing' 카테고리의 다른 글
20250331_DB4 (0) | 2025.03.31 |
---|---|
20250327_java4 (자바 자료형, 연산자, 형변환 핵심요약) (1) | 2025.03.27 |
20250324_DB3 (2) | 2025.03.24 |
AndroidStudio 알아보기 [app-manifest-AndroidManifest.xml] (2) | 2025.03.20 |
AndroidStudio 알아보기 (0) | 2025.03.20 |