Odds and Ends
운영체제 면접 질문 본문
1. 운영체제란 무엇인가요
운영체제란 컴퓨터 사용자와 컴퓨터 HW 간의 인터페이스로서 동작하는 시스템 SW의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해줍니다. CPU, 입출력 장치, 프로세스 등 컴퓨터 시스템의 자원을 관리하여 컴퓨터 시스템이 제대로 작동하도록 합니다. 이외에도 처리능력 향상, 반환 시간 단축, 신뢰도 향상 등이 있습니다.
2. 프로세스와 스레드의 차이점에 대해 각각의 특징과 함께 설명해주세요.
프로세스란 프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태. 즉, 일을 처리하는 일련의 과정을 뜻한다. 스레드란 프로세스 내에서 실행되는 흐름의 단위로, 프로세스 하나에 자원을 공유하면서 일련의 과정을 여러 개 동시에 실행 시 킬 수 있는 것을 말한다.
프로세스는 실행 중인 프로그램으로 다른 프로세스와 상관없이 독립적으로 메모리 공간을 할당 받지만 스레드는 경량화된 프로세스로 프로세스 안의 제어 흐름이다. 각 스레드는 별도의 레지스터와 스택을 갖고, 힙 영역은 공유한다.
+ 프로세스는 각각 독립된 메모리 영역(Stack, Heap, Data, Code)을 할당받는다. 프로세스당 최소 1개의 스레드를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 만약 접근하기 위해서는 IPC를 사용해야 한다.
3. 멀티 스레드 vs 멀티 프로세스
멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수도 있다는 점과 동기화 문제를 안고 있다. 반면 멀티 프로세스 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.
4. Sync 와 Async의 차이는 무엇입니까?
일반적으로 동기와 비동기의 차이는 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기라고 표현하고 그렇지 않은 경우에 대해서 비동기라고 표현한다. 동시에라는 말은 실행되었을 때 값이 반환되기 전까지는 blocking되어 있다는 것을 의미한다. 비동기의 경우, blocking되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task를 위임하고 바로 다음 코드를 실행하기 때문에 기대되는 값이 바로 반환되지 않는다.
5. 운영 체제에서 기아(Starvation) 란 무엇입니까?
특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태이다. 기아상태는 자원 관리 문제이다. 이 문제에서 대기중인 프로세스는 리소스가 다른 프로세스에 할당되어 있기 때문에 오랫동안 필요한 리소스를 얻지 못한다.
6. Banker's algorithm?
교착 상태를 피하기 위해 뱅커 알고리즘이 사용된다. E,J, Dijkstra가 제안한 방법으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법이다. 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착 상태를 회피하는 기법이다. 안정 상태에 있으면 자원을 할당하고, 그렇지 않으면 다른 프로세스들이 자원을 해지할 때까지 대기한다. 은행은 더 이상 모든 고객의 요구 사항을 충족시킬 수없는 방식으로 가용 현금을 할당하지 않는 뱅킹 시스템에서 뱅커 알고리즘이라고 한다.
7. 메모리 단편화 란 무엇인가?
메모리의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상을 말한다. 할당한 메모리를 해제를 하게 되면 그 메모리 공간이 빈 공간(사용하지 않는 공간)이 되고 그 빈공간의 크기보다 큰 메모리는 사용할 수 없다. 그리하여 이 공간들이 하나 둘 쌓이게 되면 수치상으로는 많은 메모리 공간이 남았음에도 불구하고, 실제로 사용할 수 없는 메모리가 발생한다.
내부단편화와 내부단편화란?
내부단편화
: 분할된 영역이 할당된 프로그램의 크기보다 커서 사용되지 않고 남아 있는 빈 공간을 말한다.
: 내부 단편화는 페이징에서 발생한다.
외부단편화
: 분할된 영역이 할당될 프로그램의 크기보다 작아서 모두 빈 공간으로 남아 있는 전체 영역을 말한다.
: 외부 단편화는 세그먼테이션에서 발생한다.
메모리 단편화 해결방법은?
→ 메모리 압축(디스크 조각 모음), 메모리 통합(단편화가 발생된 공간들을 하나로 통합시켜 큰 공간으로 만드는 기법)
8. 운영체제에서 Virtual memory 관리가 왜 필요한가?
: 사용자 프로그램이 물리 메모리보다 클 때 유용하다. 가상 메모리를 사용하면 프로그램은 물리 메모리 크기에 따른 제약 받지 않기 때문에 여러 이점들이 있다. 먼저 남는 메모리에 다른 프로그램 동시 수행 가능해 CPU 이용률 증가한다. 또한 프로그램을 메모리에 올리고 swap하는데 필요한 I/O 회수가 줄어들어 프로그램이 빨리 실행된다.
'CS 개념 정리' 카테고리의 다른 글
MVC 프레임 워크란? (2) | 2023.02.12 |
---|---|
CS 기술 면접 질문 정리 - 네트워크 (1) | 2023.02.02 |
스프링과 스프링 부트의 차이 (1) | 2022.12.30 |
TCP와 UDP에 대해 알아보자 (전송계층부터 ~ TCP Handshake까지) (0) | 2022.12.04 |
[CS 개념 정리] 트랜잭션, 인덱스, NoSQL, OSI 7계층 (1) | 2022.11.24 |