Skip to content

Latest commit

 

History

History
554 lines (365 loc) · 19.6 KB

File metadata and controls

554 lines (365 loc) · 19.6 KB

운영체제 면접 질문 & 답변

🎁 Tip

  • 토글을 열기 전에 실제 면접처럼 '답변'하는 연습을 합시다!

  • 시간이 부족하다면 '핵심 키워드' 위주로 떠올려 봅시다!

  • 온전히 답변하지 못한 질문이 있다면, '관련 자료'를 살펴봅시다!

📚 빈출 & 예상 질문 리스트

운영체제는 무엇이고, 어떻게 구성되어 있나요?

👨🏻‍💻 답변

운영체제는 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하여 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스입니다.
운영체제는 크게 커널과 인터페이스로 이루어져 있습니다.
커널은 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며
보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 합니다.
그리고 커널 내부에는 시스템콜과 디바이스 드라이버가 존재합니다.
인터페이스는 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 합니다.

🎯 핵심 키워드

커널, 인터페이스

📔 관련 자료

운영체제의 역할에 대해 간략히 설명해주세요.

👨🏻‍💻 답변

운영체제의 역할은 크게 4가지로 나눠볼 수 있습니다.
첫 번째, CPU를 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리합니다.
두 번째, 한정된 메모리를 어떤 프로세스에 할당할지 관리합니다.
세 번째, 디스크 파일을 어떠한 방법으로 보관할지 관리합니다.
마지막으로 I/O 디바이스들과 컴퓨터 간 데이터를 주고받는 것을 관리합니다.

🎯 핵심 키워드

CPU, 프로세스, 메모리, 디스크 파일, I/O 디바이스 관리

📔 관련 자료

시스템콜이란 무엇이고, 어떤 역할을 하나요?

👨🏻‍💻 답변

시스템 콜은 운영체제의 커널 기능을 사용자 프로그램이 호출할 수 있게 해주는 인터페이스입니다.
운영체제의 커널은 하드웨어 제어, 메모리 관리, 프로세스 관리 등 시스템의 중요한 기능을 수행하며, 이러한 기능들은 커널 모드에서만 실행될 수 있습니다.
사용자 프로그램은 커널 모드에서 실행되는 코드에 직접 접근할 수 없으므로, 시스템 콜을 통해 필요한 커널 기능을 요청하고 결과를 받아옵니다.
예를 들어, 파일을 읽거나 쓰기 위해 응용 프로그램은 시스템 콜을 사용하여 커널의 파일 시스템 드라이버를 호출합니다.
이 과정에서 응용 프로그램은 파일 시스템 작업을 수행할 수 있는 권한을 커널에 요청하고, 커널은 이 요청을 처리하여 응용 프로그램에 필요한 결과를 반환합니다.

시스템 콜은 운영체제의 중요한 부분으로, 응용 프로그램과 운영체제 간의 인터페이스를 제공하며, 운영체제의 기능을 안전하고 효율적으로 사용할 수 있게 합니다.
이를 통해 응용 프로그램은 하드웨어 직접 접근 없이도 필요한 작업을 수행할 수 있습니다.

🎯 핵심 키워드

운영체제, 커널, 인터페이스, 기능 수행, 하드웨어 접근

📔 관련 자료

IO 요청으로 파일 시스템의 파일을 읽는 함수가 발동했을 시 시스템콜의 실행 과정을 설명해주세요.

👨🏻‍💻 답변

유저 프로그램이 modebit 1의 유저 모드에서 운영체제의 서비스를 받기 위해 접근하면,
호출된 시스템 콜이 유저 모드를 modebit 0의 커널 모드로 변환한 후 운영체제의 자원을 이용한 로직을 수행합니다.
그런 다음 다시 유저 모드로 돌아가서 그 뒤의 유저 프로그램 로직을 수행합니다.

🎯 핵심 키워드

modebit, 유저 모드, 커널 모드

📔 관련 자료

GUI와 CUI에 대해 설명해주세요.

👨🏻‍💻 답변

CUI와 GUI는 사용자가 전자장치와 상호 작용할 수 있도록 하는 유저 인터페이스의 형태입니다.
CUI는 CMD 창과 같이 오직 텍스트로 컴퓨터와 상호 작용하는 인터페이스입니다.
GUI는 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 등 그래픽 위주의 인터페이스를 말하며, 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 해줍니다.

🎯 핵심 키워드

유저 인터페이스, 텍스트, 그래픽

📔 관련 자료

인터럽트란 무엇인가요?

👨🏻‍💻 답변

인터럽트는 어떤 신호가 들어왔을때 CPU 를 잠깐 정지시키는것을 말합니다.
키보드, 마우스 등 IO 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술연산에서의 인터럽트, 프로세스 오류 등으로 발생합니다.
인터럽트가 발생되면 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행됩니다.
인터럽트 간에는 우선순위가 있고 우선순위에 따라 실행되며 인터럽트는 하드웨어 인터럽트, 소프트웨어 인터럽트 2가지로 나뉩니다.

🎯 핵심 키워드

CPU, 인터럽트 핸들러 함수

📔 관련 자료

메모리 계층에 대해서 설명해주세요.

👨🏻‍💻 답변

메모리 계층은 레지스터, 캐시, 주기억장치, 보조기억장치로 구성되어 있습니다.
레지스터는 CPU 안에 있는 메모리로 휘발성이며 속도가 가장 빠르고 기억 용량이 가장 낮습니다.
캐시는 CPU 안에 있는 메모리로 대표적으로 L1, L2 캐시가 있으며 휘발성이고 속도가 빠르며 기억 용량이 낮습니다.
주기억장치는 RAM을 가리키며 휘발성이며 속도와 기억 용량이 보통입니다.
보조기억장치로는 HDD, SSD를 일컬으며 비휘발성이며 속도가 낮고 기억 용량이 높습니다.

🎯 핵심 키워드

 레지스터, 캐시, 주기억장치(RAM), 보조기억장치(HDD, SSD), 휘발성, 속도, 기억 용량

📔 관련 자료

가상메모리는 무엇이며, MMU는 무엇인지 설명해주세요.

👨🏻‍💻 답변

가상메모리는 RAM의 크기를 실제보다 크게 확장하는 기술입니다.
이를 통해 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 합니다.
이를 통해 더 많은 프로그램이 동시에 실행될 수 있고, 프로그램들 간의 메모리 사용이 효율적으로 관리될 수 있습니다.
MMU는 CPU와 메모리 사이에 위치하며 가상 주소를 실제 메모리 주소로 변환해주는 장치입니다.

🎯 핵심 키워드

확장, 가상 주소, 실제 주소, 변환

📔 관련 자료

프로세스와 스레드 둘의 차이에 대해 설명해주세요.

👨🏻‍💻 답변

프로세스는 메인 메모리(주기억장치)에 적재되어 실행되는 프로그램의 인스턴스를 의미하며,
운영체제로부터 자원을 할당받은 작업의 단위를 의미합니다.
반면, 스레드는 한 프로세스 내의 실행 흐름의 단위를 의미합니다.

프로세스는 프로세스마다 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당받게 됩니다.
반면 스레드는 스택만 공간을 따로 할당받고 나머지 힙, 데이터, 코드 영역에서는 공간과 자원을 공유하며 사용하게 됩니다.

🎯 핵심 키워드

단위, 독립, 공유

📔 관련 자료

선점(preemption)과 비선점(non-preemption)이 무엇인지 설명해주세요.

👨🏻‍💻 답변

선점 방식은 현재 사용하고 있는 프로세스를 알고리즘에 의해 중단시키고 다른 프로세스에 CPU 소유권을 할당하는 방식입니다.
반면, 비선점 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않습니다.
그렇기에 현재 실행되고 있는 프로세스의 CPU 사용이 끝날 때까지 기다려야 합니다.

🎯 핵심 키워드

소유권, 중단

📔 관련 자료

웹 브라우저의 캐시의 종류와 각각의 캐시를 간략히 설명해주세요.

👨🏻‍💻 답변

웹 브라우저의 대표적인 캐시로는 쿠키, 로컬 스토리지, 세션 스토리지가 있습니다.
쿠키는 만료기한이 있는 키-값 저장소이며 4KB까지 데이터를 저장할 수 있고 만료기한을 정할 수 있습니다.
로컬 스토리지는 만료기한이 없는 키-값 저장소이며 최대 10MB까지 저장할 수 있고 도메인 단위로 저장 및 생성됩니다.
마지막으로 세션 스토리지는 만료기한이 없는 키-값 저장소이며 최대 5MB까지 저장할 수 있고 탭 단위로 생성됩니다.
추가로 로컬 스토리지와 세션 스토리지는 클라이언트에서만 수정 가능합니다.

🎯 핵심 키워드

쿠키, 로컬 스토리지, 세션 스토리지, 만료기한

📔 관련 자료

페이지와 프레임의 차이를 설명해주세요.

👨🏻‍💻 답변

페이지는 가상 메모리를 사용하는 최소 크기 단위를 뜻하고 프레임은 실제 메모리를 사용하는 최소 크기 단위를 뜻합니다.
페이지와 프레임 모두 최소 크기 단위라는 점은 같지만, 가상 메모리에서의 단위인지 실제 메모리에서의 단위인지에 차이가 있습니다.

🎯 핵심 키워드

가상 메모리, 실제 메모리, 단위

📔 관련 자료

메모리 할당 알고리즘 중 first fit, best fit, worst fit 각각에 대해 설명해주세요.

👨🏻‍💻 답변

first fit은 최초적합으로도 불리며 위쪽이나 아래쪽부터 시작하여 홀을 찾으면 메모리를 바로 할당하는 알고리즘 입니다.
best fit은 최적적합으로도 불리며 프로세스의 크기 이상인 공간 중 가장 작은 홀부터 메모리를 할당하는 알고리즘 입니다.
마지막으로 worst fit은 최악적합으로도 불리며 프로세스의 크기와 가장 많이 차이가 나는 홀에 메모리를 할당하는 알고리즘 입니다.

🎯 핵심 키워드

최초적합, 최적적합, 최악적합

📔 관련 자료

외부 단편화와 내부 단편화에 대해 설명해주세요.

👨🏻‍💻 답변

외부 단편화는 메모리를 나는 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상을 말합니다. 이는 메모리 배치에 따라 발생하는 문제입니다.
반대로 내부 단편화는 메모리를 나눈 크기보다 프로그램이 작아서 내부에 사용 불가능한 공간이 많이 발생하는 현상을 말합니다.

🎯 핵심 키워드

메모리, 프로그램 크기

📔 관련 자료

컨텍스트 스위칭이 무엇인지 간략히 설명해주세요.

👨🏻‍💻 답변

하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, PCB를 교환하는 과정을 말합니다.
컨텍스트 스위칭이 일어나면 유휴시간 (idle time) 및 캐시미스 등의 비용이 발생하게 됩니다.

🎯 핵심 키워드

PCB 교환, 유휴시간, 캐시미스

📔 관련 자료

멀티 스레드의 장단점을 설명해주세요.

👨🏻‍💻 답변

멀티 스레드를 통해 하나의 실행 흐름인 프로세스를 여러 개의 실행 흐름으로 만들 수 있습니다.
스레드는 자원을 공유하기 때문에, 프로세스의 처리 능력 향상과 자원의 소모가 줄어드는 것을 기대할 수 있다는 장점이 있습니다.
하지만 하나의 스레드에 문제가 생길 경우 다른 스레드에도 영향을 끼쳐 프로세스에 문제가 생길 수 있다는 단점이 있습니다.

🎯 핵심 키워드

자원 공유, 프로세스

📔 관련 자료

멀티 프로세싱과 멀티 스레딩의 차이를 설명해주세요.

👨🏻‍💻 답변

멀티프로세싱은 여러 개의 프로세스를 통해 동시에 두 가지 이상의 일을 수행하는 것을 말합니다.
이를 통해 하나 이상의 일을 병렬로 처리할 수 있으며
특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생하더라도 다른 프로세스를 이용해 처리할 수 있어 신뢰성이 높다는 강점이 있습니다.

멀티 스레딩은 프로세스 내 작업을 여러 개의 스레드로 처리하는 기법을 말하며,
스레드끼리 서로 자원을 공유하기 때문에 효율성이 높습니다.
하지만 하나의 스레드에 문제가 생기면 프로세스에 영향을 줄 수 있다는 단점이 있습니다.

멀티프로세싱의 경우 프로세스끼리는 자원을 공유하지 않지만,
멀티스레딩의 경우에는 스레드끼리 같은 프로세스의 자원을 공유한다는 차이가 있습니다.

🎯 핵심 키워드

병렬 처리, 신뢰성, 효율성, 자원 공유

📔 관련 자료

교착 상태란 무엇이고, 이를 해결하는 방법을 설명해주세요.

👨🏻‍💻 답변

두 개 이상의 프로세스가 서로가 가진 자원을 기다리며 중단된 상태로 데드락 이라고도 합니다.
교착 상태는 상호 배제, 점유와 대기, 비선점, 환형 대기의 4가지 조건을 만족할 때 발생합니다.
이를 해결하기 위해서는 4가지 방법이 존재합니다.
애초에 자원을 할당할 때 교착 상태의 조건을 만족시키지 않게 함으로써 교착 상태를 방지하는 예방과,
교착상태가 발생할 가능성이 있는 자원 할당은 하지 않는 회피 방식,
그리고 교착상태가 발생 할 수 있도록 놔 두고 교착상태가 발생 할 경우 찾아내어 고치는 탐지 및 회복 방식이 있고,
현대 운영체제는 이러한 교착 상태가 드물게 일어나고 고치는 비용이 더 크다는 점에서 사용자가 직접 작업을 종료하는 방식을 채택했습니다.

🎯 핵심 키워드

예방, 회피, 탐지 및 회복, 사용자 종료

📔 관련 자료

페이지 교체 알고리즘 두 가지를 말씀해주세요.

👨🏻‍💻 답변

페이지 교체 알고리즘에는
메모리에 가장 먼저 적재된 페이지를 교체하는 FIFO와
참조가 가장 오래된 페이지를 교체하는 LRU가 있습니다.
FIFO의 경우는 단순하지만, 프로그램 실행 내내 사용될 페이지는 먼저 적재되었다고 해서 교체되면 안되기 때문에
성능 측면에서 좋지 않다는 문제점이 있습니다.
LRU의 경우는 가장 오래된 페이지라는 것을 파악하기 위해 각 페이지마다 계수기, 스택을 두어야 하는 문제점이 있습니다.

🎯 핵심 키워드

메모리, 페이지, 참조

📔 관련 자료

PCB에 대해 설명해주세요.

👨🏻‍💻 답변

PCB는 프로세스 제어 블록이라고도 하며, 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 말합니다.
프로세스가 생성되면 운영체제는 해당 PCB를 생성하는데, 프로세스 스케줄링 상태, 프로세스 ID, 레지스터 값 등으로 이루어져 있습니다.
이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리됩니다.

🎯 핵심 키워드

프로세스, 메타데이터, 커널 스택

📔 관련 자료

임계 영역 문제를 해결하기 위한 세 가지 조건을 말씀해주세요.

👨🏻‍💻 답변

임계 영역을 해결하기 위한 조건으로는
한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없는 상호 배제와
특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안되는 한정 대기,
그리고 만약 어떠한 프로세스도 임계 영역을 사용하지 않는다면 임계 영역 외부의 어떠한 프로세스도 들어갈 수 있는 융통성이 있습니다.

🎯 핵심 키워드

상호 배제, 한정 대기, 융통성

📔 관련 자료

CPU 스케줄링 알고리즘은 무엇인가요? 예시도 알려주세요.

👨🏻‍💻 답변

CPU 스케줄링 알고리즘은 프로세스에서 해야 하는 일을 스레드 단위로 배치하는 알고리즘을 의미합니다.
프로그램이 실행될 때 어떤 프로그램에게 CPU 소유권을 줄 것인지 결정합니다.

🎯 핵심 키워드

배치, 프로세스, 스레드, CPU 소유권

📔 관련 자료