[JSCODE] - OS 면접 스터디 3주차

@kdkdhoho · November 23, 2023 · 9 min read

📝 질문 리스트

기아 상태가 무엇인가요?

CPU에 의해 처리가 된 준비가 된 프로세스가, 다른 프로세스의 우선 순위에 밀려 오랜 시간 대기하는 상태입니다.

이는, 프로세스 스케줄링에 의해 발생할 수 있습니다.

보통 데드락과 헷갈릴 수 있는데, 데드락은 여러 프로세스가 동시에 자원들을 점유하려는 과정에서 모든 프로세스의 상태가 blocked가 되는 현상입니다. 기아 상태는 프로세스의 상태는 ready인데, 프로세스 스케줄링에 의해 계속해서 대기하는 상태를 의미합니다.

기아 상태를 어떻게 해결할 수 있나요?

RR처럼 기아 상태가 발생하지 않는 스케줄링 알고리즘을 선택하거나,

레디 큐에 대기하는 프로세스들이 처리가 되지 않을 때마다 우선 순위를 증가하는 방식으로 하면, 해결할 수 있다고 생각한다.

CPU 스케줄링에 대해 설명해주세요.

CPU 효율을 극한으로 끌어올리기 위한 일종의 알고리즘

다양한 알고리즘이 있고 FCFS, Priority, Round-Robin 등이 있다.

각 알고리즘에 따라 장단점이 다르고, 발생할 수 있는 문제점이 다르다

스케줄러의 종류는 무엇이 있나요?

장기 스케줄러: 새로운 프로세서가 시스템에 들어올 때, 이를 메모리에 할당하거나 대기 큐에 넣는 역할

단기 스케줄러: 현재 메모리에 적재된 프로세스 중 어떤 프로세스가 CPU에 할당될 지 결정하는 역할. 여기서 주로 CPU 스케줄링 알고리즘이 수행된다.

중기 스케줄러: 프로세스를 메모리에서 디스크로 스왑하는 역할. 메모리 부족 상태를 완화하거나, 프로세스의 우선순위를 조절하는 목적

선점형 스케줄링과 비선점형 스케줄링의 차이가 무엇인가요?

비선점형 스케줄링: CPU에 의해 처리되는 프로세스가 자발적으로 CPU를 반환하기 전까지는 아무런 개입을 하지 않는 방식. 직관적이고 단순한 방법이지만, 이 경우 처리시간이 긴 프로세스가 CPU에 할당되면 다른 프로세스는 처리하지 못할 수 있다.

선점형 스케줄링: 비선점형 방식을 적용하지만, 동시에 모종의 이유로 프로세스가 자발적으로 CPU를 반환하지 않았음에도 개입하는 방식. 이 경우 처리되던 프로세스를 Ready Queue로 옮기는 작업과 다음 처리할 프로세스를 결정하고 할당하는 작업이 필요하다. 하지만, 높은 효율을 가진다.

선입선출 스케줄링(FCFS)에 대해 설명해주세요.

Ready 큐에 들어간 순서대로 처리하는 방식이다.

단순한 방법이지만, 만약 가장 먼저 들어간 프로세스의 처리 시간이 매우 긴 경우 뒤에 들어간 프로세스에 영향을 받는다.

최단 작업 우선 스케줄링(SJF)에 대해 설명해주세요.

프로세스가 CPU를 점유하는 시간이 가장 짧은 프로세스부터 처리하는 방식이다. 이 경우 프로세스를 선택할 때마다 가장 작은 값을 선택한다. 이 말은 즉, 계속해서 시간이 짧은 프로세스가 레디 큐에 들어오면 영구히 처리되지 못하는 프로세스가 발생한다. 이를 기아 상태라고 한다.

최소 잔류 시간 우선 스케줄링(SRTF) 방식에 대해 설명해주세요.

최단 작업 우선 스케줄링과 선점형 스케줄링이 동시에 적용됐을 때, 레디 큐에 존재하는 프로세스중, 처리 시간이 가장 짧은 프로세스를 우선적으로 처리한다.

이도 마찬가지로 기아 상태가 발생할 수 있다.

우선순위 스케줄링에 대해 설명해주세요.

각 프로세스에 우선순위를 매기고, 그 우선순위가 가장 높은 프로세스부터 처리하는 방식이다.

기아 상태가 발생할 수 있다.

라운드 로빈 스케줄링에 대해 설명해주세요.

가장 간단하며 널리 사용되는 방식으로, 모든 프로세스는 동일한 Quantam을 가지고 이 시간동안만 CPU를 사용하는 방식이다.

자연스레 모든 프로세스나 쓰레드가 공정하게 실행되며, 이 Qunatam을 적절한 시간으로 설정한다면 가장 높은 응답성을 보일 수 있다.

멀티 레벨 큐 스케줄링에 대해 설명해주세요.

프로세스들을 특징에 따라 그룹화하고, 그 그룹에 따라 레디 큐를 나누는 방식이다. 이 큐들에서도 우선순위가 존재하며, 각 그룹의 레디 큐에서는 서로 다른 방식으로 스케줄링된다.

다양한 프로세스들이 서로 다른 특성을 가질 때, 각 프로세스에 적합한 스케줄링 방식을 적용할 수 있도록 할 수 있다.

그룹 사이에서 우선순위가 낮은 큐에 있는 프로세스가 기아 상태에 빠질 수 있다.

멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.

멀티 레벨 큐는 프로세스가 특정 큐에 들어가게 되면, 해당 큐의 우선순위에서 변경되지 못하는 점을 개선하기 위해 탄생한 방식이다.

그래서 동적으로 프로세스의 우선순위를 결정한다.

프로세스가 큐 간에 이동을 할 수 있고, 그에 따라 기아 상태도 해결할 수 있다.

낮은 우선순위에 있는 큐에 있는 프로세스가 잦은 빈도로 실행되면 높은 우선순위 큐로 이동한다.

🤔 개인적인 궁금증

데드락 vs 기아상태

데드락은, 여러 개의 프로세스가 필요한 자원을 요청하는 과정에서 더이상 진행될 수 없는 상태이다. 자원을 대기하는 blocked 상태에서 영구히 대기한다.

반면 기아상태는, 한 프로세스가 처리될 상태이지만 다른 프로세스의 우선순위에 밀려 영구히 대기하는 상태이다.

🎯 피드백

개선할 점 찾기 힘들었다.

@kdkdhoho
기본에 충실하게