Sychronize와 DeadLock

ggyu_55·2023년 8월 20일
0

메모

목록 보기
30/46

CPU는 여러 프로세스를 Scheduleling에 맞춰서 번갈아가며 작업합니다.
그런데, 한 프로세스에서 변경한 자원을 도중에 실행된 다른 프로세스가 다룬다면 문제가 생기지 않을까요?
과연 프로세스를 실행시킬 때 원하던 값을 보장할 수 있을까요?


Process Sychronize(동기화) 란?

두 개 이상의 프로세스가 공유 데이터에 동시에 접근하면 데이터 불일치가 발생할 수 있기 때문에 데이터의 일관성를 유지하기 위한 매커니즘을 프로세스 동기화라고 말합니다.


DEADLOCK !!

1. 선점형 스케쥴링

한 프로세스가 CPU를 사용하고 있을 때, 다른 프로세스가 실행 중인 프로세스를 중지시키고 CPU를 차지할 수 있도록 하는 방식을 선점형 스케쥴링이라고 합니다. 우선순위가 높은 프로세스를 빠르게 처리해야 할 때 유리하고, 빠른 응답시간을 요하는 시분할 시스템에 적합합니다. 다만, Context-Switching에 따른 오버헤드가 심하다는 단점이 있습니다.

  • Round Robin : 정해진 시간에 주어진 만큼 프로세스를 할당한 뒤 작업이 도중에 끝난 프로세스는 ready-Queue의 가장 마지막에 가서 재할당을 기다리는 방식.

  • SRT : Short-Remaining-Time. 대기 큐의 가장 짧은 소요시간을 가진 프로세스가 CPU를 선점 가능한 방식.

  • Multilevel-Queue : ready-Queue를 여러개의 큐로 분류하여 각 큐가 각각 다른 스케쥴링 알고리즘을 가지는 방식. 특정 프로세스가 각개 대기 큐에 고정됩니다.

  • Multilevel-Feedback-Queue : 큐와 큐 사이에 프로세스가 이동하는 것을 허용하는 MultiLevel-Queue 방식. 여러개의 대기 큐를 두고 큐마다 다른 시간 할당량을 부여합니다. 짧은 작업에 유리하고, 입출력 작업에 우선권을 부여합니다.

2. 비선점형 스케쥴링

자원의 사용이 끝나기를 기다린 후, 어떠한 규칙에 따라 프로세스가 할당받은 시간을 모두 소모하는 방식을 비선점형 스케쥴링이라고 합니다. 응답시간을 예측할 수 있고 모든 프로세스에 대하여 공정합니다. 하지만 중요도가 높은 작업이 낮은 작업이 실행되는 동안 기다리게 되는 문제가 발생할 수 있습니다.

  • FCFS : First Come, First Serve, 즉 먼저 도착한 프로세스를 먼저 처리하는 방식

  • SJF : Shorted Job First, 즉 최단 작업을 우선하는 스케쥴링

  • HRN : Highest-Response-Next, 긴 작업과 짧은 작업간의 공정성을 고려하여, Response-ratio ( (대기시간+ 처리시간) / 처리시간 ) 가 높은 작업을 선택합니다. 따라서 짧은 작업이나 대기시간이 길었던 작업의 우선순위가 높아집니다. SJF의 문제점인 Starvation을 해결하기 위한 방식입니다.

  • Priority Scheduling : 프로세스의 우선 순위를 미리 정해놓고, 미리 주어진 우선순위에 따라서 스케쥴링하는 방식


면접 예상 질문

비동기 프로그래밍 경험이 있으신가요? 비동기 프로그래밍이 무엇이고 어떤 경험을 쌓았는지 말씀해 주세요 :

답변 보기 CPU Scheduling은 프로세스가 생성되어 실행될 때, 필요한 시스템 자원을 해당 프로세스에 할당하는 작업을 의미합니다. CPU가 한번에 하나의 프로세스밖에 실행하지 못하기 때문에, 시스템 자원을 효율적으로 사용하기 위해서 스케쥴링이 필요합니다.
CPU Scheduling의 종류는 크게 선점형 알고리즘과, 비선점형 알고리즘으로 나눌 수 있습니다.

비선점형 스케쥴링에 대해서 설명해 주세요 :

답변 보기 다른 프로세스의 작업이 끝나기를 기다린 후, 정해진 규칙에 따라 프로세스가 할당받은 시간을 모두 소모하는 방식을 비선점형 스케쥴링이라고 합니다. 응답시간을 예측할 수 있고 모든 프로세스에 대하여 공정합니다. 하지만 중요도가 높은 작업이 낮은 작업이 실행되는 동안 기다리게 되는 문제가 발생할 수 있습니다.
비선점형 스케쥴링 알고리즘에는 First-Come-First-Serve, Short-Job-Fisrt, Highest-ResponseRatio-Next, 우선순위 스케쥴링 등이 있습니다.

선점형 스케쥴링에 대해서 설명해 주세요 :

답변 보기 한 프로세스가 CPU를 사용하고 있을 때, 다른 프로세스가 실행 중인 프로세스를 중지시키고 CPU를 차지할 수 있도록 하는 방식을 선점형 스케쥴링이라고 합니다. 우선순위가 높은 프로세스를 빠르게 처리해야 할 때 유리하고, 빠른 응답시간을 요하는 시분할 시스템에 적합합니다. 다만, Context-Switching에 따른 오버헤드가 심하다는 단점이 있습니다.
선점형 스케쥴링 알고리즘에는 Round Robin, Short-Remaing-Time, MutilLevel-Queue, MultiLevel-Feedback-Queue 등이 있습니다.

0개의 댓글