Interview - OS

Interview - OS

Q1. 프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유는 무엇인가요?

스레드 컨텍스트 스위칭(Thread Context Switching)의 경우 프로세스 컨텍스트 스위칭(Process Context Switching)과 달리 MMU 새로운 주소 체계 바로보도록 수정하고 TLB 가상 메모리, 실제 메모리 저장된 캐시를 비우는 등의 메모리 주소 관련 작업을 하지 않고, CPU의 상태 정보만 바꿔주면 되기 때문입니다.


Q2. 스레드,프로세스,코어의 수는 많을수록 좋을까요?

스레드가 많으면 CPU 자원이 스레드 관리에 소모됩니다. 이로 인해 많은 스레드가 동시에 실행될 경우 메모리나 캐시, 락 등의 자원을 경쟁하게 되어 성능 저하나 데드 락이 발생할 가능성이 높아집니다.

프로세스가 많으면 메모리 사용량이 급격히 증가할 수 있습니다. 프로세스 간 통신이 필요할 경우 성능 저하가 발생할 수 있습니다. 무엇보다도 프로세스 간 컨텍스트 스위칭은 스레드 간 컨텍스트 스위칭보다 더 많은 오버헤드를 수반하기 때문에, 프로세스 수가 많아지면 시스템 성능이 저하될 수 있습니다.

코어가 많으면 CPU는 병렬 처리 성능을 향상시킬 수 있지만, CPU의 비용과 전력 소비가 증가할 수 있으며, 발열 관리도 더 복잡해집니다.

따라서 스레드, 프로세스,코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 큽니다.


Q3. 시스템 콜이란 무엇인가요?

운영체제는 사용자가 실행하는 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지해 자원을 보호합니다. 왜냐하면, 프로그램이 CPU, 메모리, 하드 디스크에 마음대로 접근하고 조작할 수 있다면, 자원이 무질서하게 관리 될 수 있으며 한 프로그램의 실수가 전체 컴퓨터에 영향을 주기 때문입니다. 운영체제는 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호합니다.

사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드를 의미합니다. 이 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 하는데요. 말씀 주신 시스템 콜(System Call) 은 이때 운영체제 서비스를 제공받기 위한 요청을 의미합니다. 시스템 콜은 일종의 소프트웨어 인터럽트입니다. 시스템 콜을 발생시키는 명령어가 실행된다면, CPU는 현재까지의 작업을 백업한 뒤에 커널 영역 내에 시스템 콜을 수행하는 인터럽트 서비스 루틴을 실행한 이후, 다시 기존 실행하고 있었던 프로그램으로 복귀하여 실행을 계속합니다.


Q4. 디스크 접근 시간에 대해서 설명해주세요.

일반적으로 단일-헤드 디스크 시스템에서 특정 데이터 블록을 읽거나 쓰기 위해서는 헤드를 데이터가 존재하는 트랙으로 이동시키는 과정, 원하는 데이터가 저장된 섹터가 헤드 아래로 회전되어 올 때까지 기다리는 과정, 데이터를 전송하는 과정이 필요합니다. 그리고 이 모든 과정을 수행하는 데 걸리는 시간을 디스크 접근 시간(Disk Access Time) 이라고 합니다. 디스크 접근 시간은 탐색 시간, 회전 지연 시간, 데이터 전송 시간을 합쳐 계산할 수 있습니다.


Q5. 연속 메모리 할당 기법에 대해서 설명해주세요.

연속 메모리 할당 기법(Continuous Memory Allocation) 은 운영체제가 프로세스에 연속적인 메모리 공간을 할당하는 방법을 의미합니다. 연속 메모리 할당 기법을 사용하면, 하나의 프로세스는 메모리 주소 공간에서 연속적으로 존재하게 됩니다.

연속 메모리 할당 기법은 크게 가변 크기 메모리 할당과 고정 크기 메모리 할당이 존재하는데요. 고정 크기 메모리 할당은 물리적인 메모리 공간을 고정된 크기로 나누어 프로세스에 고정된 크기만큼 할당합니다. 반면, 가변 크기 메모리 할당 방식은 프로세스의 크기에 맞춰 동적으로 메모리를 할당합니다.

외부 단편화와 내부 단편화가 무엇인가요?

외부 단편화(External Fragmentation) 는 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해서 메모리가 낭비되는 현상입니다. 연속 메모리 할당 기법을 사용할 때 프로세스가 사용할 메모리 공간이 300MB라고 가정하겠습니다. 이때, 흩어져 있는 빈 공간들의 합은 300MB가 넘지만, 연속적인 300MB는 존재하지 않아 프로세스에 메모리를 할당하지 못하는 상황이 발생할 수 있습니다.

내부 단편화(Internal Fragmentation) 는 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되는 상황에서 메모리 공간이 낭비되는 상황을 의미합니다. 고정 크기 할당 방식에서 프로세스가 사용할 메모리 공간이 300MB이지만 실제로 할당된 공간은 500MB인 경우, 200MB가 낭비됩니다.

고정 크기 할당 방식은 고정된 크기만큼 프로세스에 공간을 할당하기 때문에 내부 단편화가 발생할 수 있습니다. 반면, 가변 크기 할당 방식은 필요한 크기만큼 프로세스에 할당하기 때문에 내부 단편화는 발생하지 않습니다. 단, 할당과 해제를 반복하다보면 외부 단편화가 발생할 수 있습니다.


이 페이지는 면접 준비를 위한 정리 페이지입니다.