기술면접 질문 답변 정리 (운영체제)
by yjym33**운영체제
프로세스
- 프로세스와 스레드의 차이는 무엇인가요?
- 프로세스는 독립적인 실행 단위로, 자신만의 메모리와 자원을 가지며, 각각 별도의 주소 공간을 가집니다. 스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 프로세스 내의 자원을 공유합니다.
- 교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요?
- 교착상태(Deadlock)는 둘 이상의 프로세스가 서로 필요한 자원을 가지고 대기하며 진행하지 못하는 상태를 의미합니다. 교착상태 발생 조건에는 상호배제, 점유대기, 비선점, 순환대기 네 가지 조건이 있습니다.
- 교착상태의 해결법은 무엇인가요?
- 교착상태 해결법으로는 예방, 회피, 발견, 회복이 있습니다. 주로 회피와 발견을 사용하는데, 회피는 교착상태가 발생하지 않도록 자원 할당을 조절하고, 발견은 교착상태가 발생하면 감지하여 해결하는 방법입니다.
- 뮤텍스와 세마포어에 대해서 설명해 보시오.
- 뮤텍스(Mutex)는 상호배제를 위한 동기화 기법으로, 한 번에 하나의 스레드만 접근할 수 있는 토큰을 사용합니다. 세마포어(Semaphore)는 여러 스레드가 공유 자원에 접근할 때 사용하는 카운터로, 특정 개수의 스레드가 동시에 접근 가능하도록 조절합니다.
- 컨텍스트 스위칭이란 무엇인가요?
- 컨텍스트 스위칭은 CPU가 현재 실행 중인 프로세스나 스레드의 상태 정보를 저장하고 다음 프로세스나 스레드의 상태 정보로 교체하는 작업을 의미합니다. 이를 통해 다중 프로세스 또는 다중 스레드 환경에서 실행을 전환할 수 있습니다.
- 경쟁 상태란 무엇인가요?
- 경쟁 상태(Race Condition)는 여러 스레드 또는 프로세스가 공유 자원에 동시에 접근하여 예상치 못한 결과가 발생하는 상황을 의미합니다.
- 프로세스 혹은 스레드의 동기화란 무엇인가요?
- 동기화는 경쟁 상태를 방지하고 스레드 또는 프로세스 간의 작업을 조절하기 위한 메커니즘으로, 뮤텍스, 세마포어 등을 사용하여 공유 자원에 안전하게 접근하도록 보장하는 것을 말합니다.
- 사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요?
- 사용자 수준의 스레드는 스레드 관리를 어플리케이션에서 담당하고, 커널 수준의 스레드는 운영체제 커널에서 스레드 관리를 담당합니다. 사용자 수준의 스레드는 더 가볍지만 스레드 간의 병렬성을 제한할 수 있고, 커널 수준의 스레드는 더 많은 병렬성을 제공하지만 오버헤드가 높을 수 있습니다.
- CPU 스케줄링이란 무엇인가요?
- CPU 스케줄링은 여러 프로세스 또는 스레드 중에서 CPU에 할당할 프로세스 또는 스레드를 선택하는 작업을 의미합니다.
- CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있나요?
- CPU 스케줄링 방법에는 FCFS(First-Come, First-Served), SJF(Shortest Job First), RR(Round Robin), Priority Scheduling, Multilevel Queue Scheduling 등이 있습니다.
- 동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요?
- 동기(Synchronous)는 작업이 순차적으로 실행되며 결과를 기다리는 방식이고, 비동기(Asynchronous)는 작업을 요청하고 다른 작업을 수행하는 방식입니다. 블로킹(Blocking)은 작업이 완료될 때까지 대기하는 것이고, 넌블로킹(Non-Blocking)은 작업을 대기하지 않고 다른 작업을 수행할 수 있는 것을 의미합니다.
메모리
- 프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요.
- 프로세스 메모리는 주로 코드(Code), 데이터(Data), 스택(Stack), 힙(Heap)으로 나뉩니다. 코드 영역은 프로그램 코드가 저장되는 곳이고, 데이터 영역에는 전역 변수와 정적 변수가 저장됩니다. 스택 영역은 함수 호출과 관련된 지역 변수 및 함수 호출 정보가 저장되며, 힙 영역은 동적으로 할당되는 메모리를 관리합니다.
- 메모리 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오.
- 메모리 구조는 CPU에서 가까운 순서대로 다음과 같이 나열됩니다: 레지스터, 캐시 메모리, RAM(주 기억장치), 보조 기억장치(하드 디스크, SSD 등).
- 페이지와 세그멘테이션에 대해서 설명해 보시오.
- 페이지(Page)는 물리적인 메모리를 고정 크기의 작은 블록으로 나눈 가상 메모리 관리 기법입니다. 세그멘테이션(Segmentation)은 가상 메모리를 논리적인 단위인 세그먼트로 나누어 관리하는 방법입니다.
- 외부 단편화란? 내부 단편화란?
- 외부 단편화(External Fragmentation)는 사용하지 않는 작은 메모리 조각들이 메모리에 흩어져 있어 할당할 메모리 공간이 충분히 있는데도 할당할 수 없는 상황을 의미합니다. 내부 단편화(Internal Fragmentation)는 할당된 메모리 공간 중에서 사용하지 않는 부분을 의미합니다.
- First Fit, Best Fit, Worst Fit에 대해서 설명해 보시오.
- First Fit은 가장 먼저 맞는(첫 번째로 사용 가능한) 메모리 공간에 프로세스를 할당하는 방식입니다. Best Fit은 사용 가능한 메모리 공간 중에서 가장 작은 공간에 프로세스를 할당하는 방식이고, Worst Fit은 가장 큰 공간에 프로세스를 할당하는 방식입니다.
- 페이지 교체 알고리즘 종류에는 어떤 것들이 있나요?
- 페이지 교체 알고리즘에는 FIFO(First-In-First-Out), LRU(Least Recently Used), LFU(Least Frequently Used), NRU(Not Recently Used), Optimal 등이 있습니다. 각 알고리즘은 페이지 부재 시 어떤 페이지를 교체할지 결정하는 방식이 다릅니다.
'Development > 기술면접 정리' 카테고리의 다른 글
기술면접 답변 정리 (알고리즘, 자료구조) (0) | 2023.10.06 |
---|---|
기술면접 답변 정리 (데이터베이스) (0) | 2023.10.05 |
기술면접 답변 정리 (네트워크) (0) | 2023.10.05 |
기본 CS 및 Java 기술면접 질문 모음 (0) | 2023.10.05 |
신입 프론트엔드 개발자 기술면접 질문 모음 (0) | 2023.10.05 |
블로그의 정보
생각보다 실천을
yjym33