[면접대비] 운영체제
운영체제 기초
운영체제란 무엇이며 어떤 역할을 하나요
운영체제는 하드웨어와 응용 프로그램 사이에서 시스템 자원을 관리하는 소프트웨어입니다
CPU, 메모리, 파일, 입출력 장치 등의 자원을 관리하고 프로그램이 안전하고 효율적으로 실행될 수 있는 환경을 제공합니다.
커널이란 무엇인가요
커널은 하드웨어와 시스템 자원을 직접 관리하는 프로그램입니다. 프로세스 관리, 메모리 관리, 파일 시스템, 장치 제어 등의 기능을 담당합니다.
커널 모드와 사용자 모드의 차이는 무엇인가요
커널 모드는 모든 시스템과 명령에 접근할 수 있는 권한을 가지며
사용자 모드는 접근 권한이 제한됩니다
일반 프로그램은 사용자 모드에서 실행되고 시스템 자원이 필요하면 시스템 콜을 통해 커널의 기능을 요청합니다
시스템 콜이란 무엇인가요
사용자 프로그램이 운영체제의 커널 기능을 요청하기 위한 인터페이스입니다
파일 입출력, 프로세스 생성, 메모리 할당 등의 작업이 필요할 때 시스템 콜을 통해 커널에 요청합니다
인터럽트란 무엇인가요
CPU가 현재 작업을 잠시 중단하고 특정 사건을 우선 처리하도록 알리는 신호입니다
키보드 입력이나 I/O 완료 등의 인터럽트가 발생하면 CPU는 해당 인터럽트 처리 루틴을 실행한 뒤 기존 작업으로 돌아갑니다
프로세스
프로세스란 무엇인가요
프로세스는 실행 중인 프로그램입니다
프로그램 코드뿐만 아니라 메모리 공간, CPU 상태, 연린 파일 등의 실행에 필요한 자원을가지고 있습니다
프로그램과 프로세스의 차이는 무엇인가요
프로그램은 디스크에 저장된 실행 가능한 정적인 코드이고, 프로세스는 해당 프로그램이 메모리에 올라와 실제로 실행되고 있는 상태입니다
프로세스와 스레드의 차이는 무엇인가요
프로세스는 독립적인 메모리 공간과 자원을 가지는 실행 단위이고, 스레드는 프로세스 내부에서 실행되는 작업의 단위입니다. 같은 프로세스의 스레드들은 Code, Data, Heap 등을 공유하지만 각각 별도의 Stack을 가집니다
프로세스의 메모리 영역을 설명해주세요
Code 영역에는 실행할 명령어, Data 영역에는 전역, 정적 변수, Heap영역에는 동적으로 할당된 데이터가 저장됩니다. Stack영역에는 함수 호출 정보, 매개변수, 지역 변수 등이 저장됩니다
Data 영역에서는 초기화된 변수가 저장되는 Data영역과 초기화되지 않은 변수가 저장되는 BSS 영역으로 나눌 수 있습니다
PCB란 무엇인가요
PCB는 운영체제가 각 프로세스를 관리하기 위해 필요한 정보를 저장하는 자료구조입니다
프로세스 ID, 상태, PC, CPU 레지스터, 스케줄링 정보 등이 저장됩니다
Context Switching이란 무엇이며 왜 비용이 발생하나요
CPU가 실행중인 프로세스나 스레드를 변경하면서 현재 실행 상태를 저장하고 다음 실행 상태를 복원하는 과정입니다. 이 과정에서 레지스터 등의 상태를 저장, 복원하고 캐시 효율이 떨어질 수 있기 때문에 비용이 발생합니다
IPC란 무엇인가요
서로 독립된 프로세스끼리 데이터를 주고 받거나 통신하기 위한 방법입니다
스레드
스레드란 무엇인가요
프로세스 내부에서 실제로 작업을 수행하는 실행 단위입니다
하나의 프로세스는 여러 스레드를 가질 수 있으며 같은 프로세스의 자원을 공유하면서 각각 독립적인 실행 흐름을 가집니다
하나의 프로세스에서 여러 스레드는 어떤 메모리를 공유하나요
같은 프로세스의 스레드는 Code, Data, Heap 영역을 공유합니다
함수 호출과 지역 변수 등을 관리해야하므로 Stack은 각 스레드가 독립적으로 가집니다
멀티 프로세스와 멀티 스레드의 차이는 무엇인가요
멀티 프로세스는 각각 독립된 메모리 공간을 사용해 안정성이 높지만 통신과 Context Switching 비용이 상대적으로 큽니다.
멀티 스레드는 메모리를 공유해 통신이 빠르고 가볍지만, 공유 데이터에 대한 동기화 문제가 발생할 수 있습니다
멀티스레드의 장점과 단점은 무엇인가요
여러 작업을 동시에 처리할 수 있어 CPU 활용도와 응답성을 높일 수 있고, 같은 프로세스의 메모리를 공유하기 때문에 데이터 교환도 효율적입니다
하지만 공유 데이터에 접근하면서 Race Condition이나 Deadlock 같은 동기화 문제가 발생할 수 있습니다
동시성 / 동기화
동시성(Concurrency) 병렬성(Parallelism)의 차이는 무엇인가요
동시성은 여러 작업이 번갈아 실행되면서 동시에 진행되는 것처럼 처리되는 것이고 병렬성은 여러 작업이 실제로 같은 시간에 실행되는 것 입니다
Race Condition이란 무엇인가요
여러 스레드가 공유 데이터에 동시에 접근하여 실행 순서에 따라 결과가 달라지는 문제입니다
Mutext나 Lock등을 사용해 임계 영역에 한 번에 하나의 스레드만 접근하도록 하여 방지할 수 있습니다
Critical Section(임계 영역)이란 무엇인가요
임계 영역은 여러 스레드가 동시에 접근하면 문제가 발생할 수 있는 공유 자원에 대한 코드 영역입니다
Mutex란 무엇인가요
공유 자원에 한 번에 하나의 스레드만 접근하도록 하는 동기화 기법입니다. 한 스레드가 Mutex를 획득하면 다른 스레드는 해당 Mutext가 해제될 때까지 접근할 수 없습니다
Semaphore란 무엇인가요
동시에 공유 자원에 접근할 수 있는 스레드의 수를 제한하는 동기화 기법입니다
내부 카운터를 이용해 여러 스레드의 접근을 일정 개수까지 허용할 수 있습니다
Mutext와 Semaphore의 이는 무엇인가요
Mutext는 기본적으로 하나의 스레드만 임계 영역에 접근하도록 하는 상호 배제에 사용됩니다
Semaphore는 카운터를 이용하여 지정된 개수의 스레드가 동시에 자원에 접근할 수 있도록 제어할 수 있습니다
Deadlock이란 무엇인가요
여러 프로세스나 스레드가 서로 상대방이 가진 자원을 기다리면서 무한히 대기하는 상태입니다
서로 필요한 Lock을 하나씩 가지고 상대방의 Lock 해제를 기다리는 경우가 대표적인 예 입니다
Deadlock이 발생하기 위한 4가지 조건은 무엇인가요
Deadlock은 하나의 자원을 한 번에 하나만 사용해야하는 상호배제, 자원을 가진 상태에서 다른 자원을 기다리는 점유와 대기, 다른 작업의 자원을 강제로 빼앗을 수 없는 비선점, 서로가 가진 자원을 순환 형태로 기다리는 순환 대기를 모두 만족할 때 발생할 수 있습니다.
Deadlock과 Starvation의 차이는 무엇인가요
Deadlock은 여러 작업이 서로의 자원을 기다리면서 모두 진행하지 못하는 상태이고
Starvation은 다른 작업들이 계속 우선적으로 실행되어 특정 작업만 오랫동안 자원을 얻지 못하는 상태입니다
CPU 스케줄링
CPU 스케줄링이란 무엇이며 선점형과 비선점형의 차이는 무엇인가요
CPU 스케줄링은 실행 가능한 프로세스 중 어떤 프로세스에 CPU를 할당할지 결정하는 것 입니다
선점형은 실행중인 프로세스에서 CPU를 강제로 회수할 수 있지만, 비선점형은 프로세스가 종료되거나 대기 상태가 될 때까지 CPU를 사용합니다
메모리 관리
Paging이란 무엇이며 Page와 Frame의 차이는 무엇인가요
Paging은 가상 메모리를 일정 크기의 Page, 물리 메모리를 같은 크기의 Frame으로 나누어 관리하는 방식입니다. Page Table을 이용하여 각 Page가 어떤 Frame에 위치하는지 매핑합니다
가상 메모리란 무엇이며 왜 사용하나요
가상 메모리는 각 프로세스에 독립적인 가상 주소 공간을 제공하고 이를 실제 물리 메모리에 매핑하는 메모리 관리 기법입니다. 프로세스 간 메모리를 보호하고 필요한 부분만 물리 메모리에 올려 메모리를 효율적으로 사용할 수 있습니다
Page Fault란 무엇이며 발생하면 어떻게 처리되나요
Page Fault는 프로세스가 접근한 페이지가 현재 물리 메모리에 존재하지 않을 때 발생하는 예외입니다. 운영체제는 필요한 페이지를 디스크에서 메모리로 가져온 뒤 Page Table을 갱신하고 중단된 명령을 다시 수행합니다
메모리 단편화란 무엇이며 내부 단편화와 외부 단편화의 차이는 무엇인가요
메모리 단편화는 메모리의 일부 공간이 효율적으로 사용되지 못하고 낭비되는 현상입니다
내부 단편화는 할당된 영역 내부에 남는 공간이고, 외부 단편화는 사용 가능한 공간이 여러 곳에 흩어져 큰 연속 공간을 확보하지 못하는 현상입니다.
FCFS, SJF, Round Robin 스케줄링의 차이는
FCFS는 먼저 도착한 프로세스부터 실행하고, SJF는 실행 시간이 가장 짧은 프로세스부터 실행합니다
Round Robin은 각 프로세스에 일정한 시간을 할당하고 순서대로 CPU를 사용하게 하는 선점형 스케줄링 방식입니다
Round Robin의 Time Quantum이 너무 크거나 작으면 어떻게 되나요
Time Quantum이 너무 크면 FCFS와 비슷하게 동작하여 응답성이 떨어질 수 있습니다
반대로 너무 작으면 Context Switching이 지나치게 자주 발생하여 오버헤드가 증가합니다
FIFO, LRU, Optimal 페이지 교체 알고리즘의 차이는
FIFO는 가장 먼저 들어온 페이지, LRU는 가장 오랫동안 사용되지 않은 페이지, Optimal은 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체합니다. Optimal은 이론적으로 가장 효율적이지만 미래의 메모리 접근을 알아야하기 때문에 실제 구현에는 사용할 수 없습니다
Thrashing이란 무엇이며 왜 발생하나요
Thrashing은 Page Fault가 지나치게 자주 발생하여 실제 작업보다 페이지를 교체하는 데 대부분의 시간을 사용하는 현상입니다. 실행 중인 프로세스들이 필요로 하는 페이지에 비해 물리 메모리가 부족할 때 주로 발생합니다.

