운영체제 면접 질문
운영체제
운영체제에 대해 설명해주세요
운영체제는 하드웨어 자원을 관리
하고,
응용 프로그램와 하드웨어 사이를 중재하는 인터페이스
를 의미합니다.
커널에 대해 설명해주세요
커널은 하드웨어와 소프트웨어 간의 직접적인 상호작용을 관리
하는 역할을 합니다
메모리 구조
메모리 구조에 대해 설명해주세요
메모리는 사용자 영역
과 커널 영역
으로 나누어져 있습니다.
사용자 영역과 커널 영역으로 나누어져 있는 이유는
시스템의 안정성과 보안을 유지하기 위해 사용자 영역에서 접근할 수 없도록
하기 위해서 입니다.
사용자 영역의 메모리 구조에 대해 설명해주세요
사용자 영역의 메모리 구조는 낮은 주소대로 코드
, 데이터
, 힙
, 스택
가 있습니다.
코드 영역
에는 프로그램의 명령들이 저장됩니다.
데이터 영역
에는 정적, 전역 변수가 할당됩니다.
힙 영역에
는 동적 변수가 할당됩니다.
스택 영역
에는 지역 변수가 할당됩니다. 할당된 지역 변수는 후입 선출 방식으로 해제됩니다.
프로세스와 쓰레드
프로세스와 쓰레드의 차이를 설명해주세요
프로세스는 실행 중인 프로그램
을 말하며,
완전히 독립적이기 때문에 스택, 힙, 데이터, 코드 영역을 다른 프로세스와 공유하지 않습니다.
프로세스는 최소 1개의 쓰레드를 가지고 있습니다.
쓰레드는 프로세스 내에서 작업을 수행하는 주체
입니다.
쓰레드는 프로세스 내에서 stack만 따로 할당
받고,
그외에 힙, 데이터, 코드 영역을 공유
합니다.
멀티 프로세스의 특징을 설명해주세요
멀티 프로세스는 하나의 프로세스가 죽어도
다른 프로세스에 영향을 끼치지 않고 계속 실행
된다는 장점이 있지만,
멀티 쓰레드보다 많은 메모리 공간과 CPU 시간을 차지
한다는 단점이 있습니다.
멀티 쓰레드의 특징을 설명해주세요
멀티 쓰레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 교환이 빠르다는 장점
이 있지만,
한 쓰레드에 문제가 생기면 전체 쓰레드가 영향을 받으며 동기화 문제도 있다는 단점
이 있습니다.
문맥 교환(Context Switching)에 대해 설명해주세요
문맥 교환은 멀티 프로세스 또는 멀티 쓰레드 환경에서
다른 프로세스 또는 쓰레드의 컨텍스트로 교환
하는 것입니다.
프로세스끼리는 Process Control Block(PCB)를 교환
하고
쓰레드끼리는 Thread Control Block(TCB)를 교환
합니다.
병렬
멀티 쓰레드의 동시성과 병렬성을 설명해주세요
동시성은 멀티 작업을 위해
싱글 코어에서 여러 개의 쓰레드가 번갈아 실행
하는 것을 말합니다.
병렬성은 멀티 작업을 위해
한 개 이상의 쓰레드를 포함하는 각 코어들을 동시에 실행
하는 것을 말합니다.
동기와 비동기에 대해 설명해주세요
동기는 순차적으로 작업을 수행
하고
비동기는 병렬적으로 작업을 수행
합니다.
블로킹과 논블로킹에 대해 설명해주세요
블로킹은 전체적인 작업의 흐름을 막는 것
이고
논블로킹은 전체적인 작업의 흐름을 막지 않는 것
입니다.
블로킹, 논블로킹을 구분하는 방법은
호출된 함수가 호출한 함수에게 제어권을 바로 주느냐 안주느냐로 구분
됩니다.
제어권이 호출된 함수에게 넘어가면 블로킹이라고 할 수 있습니다.
공유 자원
경쟁 상태(Race Condition)에 대해 설명해주세요
경쟁 상태란 공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때
타이밍이나 순서 등이 결과 값에 영향을 줄 수 있는 상태
를 말합니다.
임계 영역(Critical Section)에 대해 설명해주세요
임계 영역이란 프로세스간 공유자원을 접근하는데 있어 문제가 생기지 않도록
한번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역
을 말합니다.
임계 영역 문제를 해결하기 위해서는 3가지 조건 상호 배제, 진행, 한정대기를 충족해주어야 합니다.
상호 배제는 한 프로세스가 자신의 임계 영역을 수행 중인 경우
다른 모든 프로세스들은 그 임계 영역에 들어가지 못하게 해야 합니다.
진행은 임계 영역에 들어간 프로세스가 없는 상태에서
임계 영역에 들어가려는 프로세스가 있으면 들어가게 해줍니다.
한정 대기는 프로세스가 임계 영역에 진입하기 위해 무한정으로 기다리는 현상이 발생해서는 안됩니다.
교착 상태(DeadLock)에 대해 설명해주세요
둘 이상의 프로세스들이 자원을 점유한 상태에서
서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황
을 말합니다.
데드락의 4가지 조건으로는
비선점 : 다른 프로세스의 자원을 뺏을 수 없음
순환 대기 : 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구조
점유 대기 : 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구
상호 배재 : 한 번에 한 프로세스만 공유 자원에 접근 가능하며, 접근 권한이 제한적일 경우
락
스핀 락(Spin Lock)
스핀 락은 임계 구역에 진입이 불가능할 때
진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락
을 말합니다.
뮤텍스(Mutex)에 대해 설명해주세요
뮤텍스는 공유 자원에 대한 접근을 제어하기 위한 상호 배제 기법
중 하나로
Lock을 사용해 하나의 프로세스나 쓰레드를 단독으로 실행
하게 합니다.
세마포어(semaphore)에 대해 설명해주세요
세마포어는 동시에 접근 가능한 스레드의 개수를 지정
할 수 있습니다.
세마포어의 값이 1이면 뮤텍스와 동일한 역할
을 합니다.
스케줄링
선점형 스케줄링과 비선점 스케줄링의 차이를 설명해주세요.
선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있는 것
이고
비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없는 것
입니다.
콘보이 형상에 대해 설명해주세요
콘보이 현상이란 작업 시간이 긴 프로세스가 먼저 큐에 도착
해서
다른 프로세스의 실행 시간이 전부 늦춰져 효츌성을 떨어뜨리는 현상
을 말합니다.