CPU 스케줄링 알고리즘
1. 비선점 스케줄링
비선점 스케줄링은 일단 CPU를 할당받으면 작업이 끝날 때까지 CPU를 반환하지 않습니다. 대표적인 비선점 스케줄링에는 다음과 같은 방식이 있습니다.
FCFS (First Come, First Served)
- 작업 요청 순서대로 CPU를 할당합니다.
- 단점: 짧은 작업이 긴 작업 뒤에 오는 경우, 대기 시간이 길어질 수 있습니다.
2. 선점 스케줄링
선점 스케줄링은 특정 조건에서 실행 중인 작업을 중단하고 다른 작업에게 CPU를 할당할 수 있습니다.
SJF (Shortest Job First)
- 다음에 처리할 작업 중 실행 시간이 가장 짧은 작업을 선택합니다.
- Starvation 문제가 발생할 수 있습니다.
Round Robin
- 각 작업에 동일한 시간(타임퀀텀)만큼 CPU를 할당하고, 완료되지 않으면 작업 큐의 끝에 다시 추가합니다.
운영 체제에서의 공유 자원 관리
공유 자원 문제
공유 자원(shared resource)은 여러 프로세스가 동시에 접근할 수 있는 자원입니다. 이를 안전하게 관리하지 못하면 여러 가지 문제가 발생할 수 있습니다.
데드락(Deadlock)
- 데드락은 여러 프로세스가 서로가 보유한 자원의 해제를 기다리면서 발생합니다.
데드락 해결 방법
상호 배제 (Mutual Exclusion)
- 자원을 요구하는 프로세스 사이에서 상호 배제를 구현해야 합니다.
보유 및 대기 (Hold and Wait)
- 프로세스가 자원을 보유한 상태에서 다른 자원을 요구하면 안됩니다.
선점 (Preemption)
- 프로세스가 자원을 요구할 때, 다른 프로세스가 이미 보유한 자원을 선점할 수 있어야 합니다.
순환 대기 (Circular Wait)
- 프로세스의 자원 요구가 순환 형태를 이루면 안됩니다.
세마포어 (Semaphore)
- 세마포어는 자원의 상태를 나타내는 카운터와 관련 작업을 동기화하는 시스템입니다.
wait()
와signal()
연산을 사용하여 자원 접근을 제어합니다.
정리
위 내용은 운영 체제의 CPU 스케줄링 방식과 공유 자원의 문제 및 해결 기법을 요약한 것입니다. 이 정보는 시스템 설계 또는 운영 체제 공부에 유용할 수 있습니다.