Shared memory 통신 방법
: 통신을 시작하기 전에 두 개의 프로세스가 공유할 수 있는 영역(shared memory)을 잡아준다.
그러면 프로세스 A는 이 shared memory에 메모리를 집어넣고, 프로세스 B는 이 영역으로부터 메세지를 가져오는 형태이다.
즉, 다른 프로세스가 바로 읽을 수 있기 때문에 명시적인 메세지 전송이 필요하지 않다.
Message passing 통신 방법
: 프로세스 A, B 사이에 메모리 공유는 존재하지 않고, message queue를 통해서 두 개의 프로세스가 send와 receive에 의해 메세지를 전달한다.
예를 들어 프로세스 A가 프로세스 B에게 전달하고 싶다면,
A가 message queue에 send에 의해 데이터를 전달하고
B가 이 정보를 받고 싶다면 receive에 의해 받는 형태이다.
그러나 Message passing은 데이터를 주고 받을 때 send, receive와 같은 시스템 콜을 불러야 하기 때문에 오버헤드가 크다.
반면에 Message passing은 커널 공간에서 message queue를 통해 두 개의 프로세스가 데이처를 주고 받기에 충돌이 발생하지 않는다.
1과 2번을 정리하면,
많은 양의 데이터를 보낼 때 Shared Memory가 더 빠르지만, 충돌 회피를 위한 동기화 오버헤드가 발생한다는 점을 감안해야 한다.
또한, Message Passing은 오버헤드가 있지만 커널에서의 데이터 전송을 통해 충돌 문제를 회피할 수 있다.
preemptive scheduling
:어떤 프로세스가 CPU를 할당받아 실행 중에 있어도 다른 프로세스가 실행 중인 프로세스를 중지하고 CPU를 강제로 점유할 수 있는 방식이다.
즉 우선순위가 높은 프로세스가 도착하면 현재 실행 중인 프로세스를 중단시키고 CPU를 할당할 수 있다.
nonpreemptive scheduling
: 어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 입출력 요구가 발생하여 자발적으로 중지될 때까지 계속 실행되도록 보장하는 방식이다.
순서대로 처리되는 공정성이 있기 때문에, 다음에 처리해야 할 프로세스와 관계없이 응답 시간을 예상할 수 있다.
nonpreemptive scheduling은 preemptive scheduling보다
스케줄링 호출 빈도가 낮아 문맥 교환에 의한 오버헤드가 적기 때문에 일괄처리 시스템에 적합하다.
그러나 빠른 응답을 요하는 시스템에 경우에는 preemptive scheduling이 적합하다.
FCFS(First-Come, First-Served) scheduling
: 먼저 도착한 프로세스부터 CPU를 할당하는 방식.
: 장점) 구현이 간단하고 공정한 방식으로 처리
: 단점) CPU를 오랫동안 사용하지 않는 프로세스가 먼저 도착하면, 뒤에 있는 짧은 작업이 오랜 시간을 기다려야함
SJF(Shortest-Job-First) scheduling
: 실행 시간이 가장 짧은 프로세스를 먼저 실행하는 방식.
: 장점) 평균 대기 시간을 최소화하여 처리 시간을 효율적으로 사용.
: 단점) 실행 시간이 긴 프로세스는 계속해서 짧은 프로세스들에게 밀리는 현상 발생 가능 (Starvation)
SRTF(Shortest-Remaining-Time-First) scheduling
: 현재 실행 중인 프로세스의 남은 실행 시간과 도착한 프로세스들의 실행 시간을 비교하여 가장 짧은 프로세스를 실행하는 방식
: 장점) SJF보다 더 짧은 평균 대기 시간
: 단점) Context Switching이 자주 발생하여 오버헤드가 큼
Priority scheduling
: 각 프로세스마다 우선 순위를 할당하고, 우선 순위가 높은 프로세스를 먼저 실행하는 방식
(정수로 표현되는 우선 순위)
: 장점) 중요한 작업을 먼저 처리
: 단점) 우선 순위 설정에 따라 높은 우선 순위의 프로세스가 계속 실행되는 상황이 발생할 수 있음(Starvation)
RR scheduling
: 프로세스에 동일한 할당 시간인 Time Quantum을 부여하고, 할당 시간이 다 되면 다른 프로세스로 CPU를 넘기는 방식
(할당 시간 동안 실행되지 않은 프로세스는 대기 큐의 맨 뒤로 이동)
: 장점) 모든 프로세스에게 공평한 실행 기회
: 단점) 할당 시간이 너무 크면 FCFS와 유사해지고, 너무 작으면 Context Switching 오버헤드가 증가
Multilevel Queue scheduling
: 여러 개의 큐를 사용하여 프로세스를 그룹화하고, 각 큐에 서로 다른 우선 순위 또는 스케줄링 알고리즘을 적용하는 방식
: 각 큐마다 우선 순위가 다르며, 우선 순위가 높은 큐부터 실행
: 장점) 서로 다른 종류의 작업을 처리하기에 효과적
: 단점) 스케줄링 알고리즘이 복잡해질 수 있음
Multilevel Feedback Queue scheduling scheduling
: Multilevel Queue와 유사하지만, 프로세스가 다른 큐로 이동할 수 있는 방식을 추가
: 장점) 시간에 따라 프로세스의 특성에 맞게 스케줄링이 가능
: 단점) 구현이 복잡하고 파라미터 설정에 따라 성능이 달라질 수 있음