본문 바로가기
면접준비

[기술 면접] 운영체제

by 킹명주 2022. 12. 20.

컴퓨터공학의 국밥같은 과목 운영체제에 대해 알아보자.

 

👉 예상질문

Operating System

1. (실제질문) 프로세스와 스레드의 차이를 설명해보세요.

더보기

프로세스는 실행 중인 프로그램을 말하며, 완벽히 독립적이기 때문에 코드, 데이터, 힙, 스택의 메모리 영역을 다른 프로세스와 공유하지 않습니다.

쓰레드는 프로세스 내에서 Stack만 따로 할당 받고 그 이외의 메모리 영역을 다른 쓰레드와 공유하고 있습니다.

프로세스는 운영체제로부터 자원을 할당받지만, 스레드는 프로세스로부터 자원을 할당받습니다. 

쓰레드는 코드, 데이터, 힙영역을 공유하기 때문에 컨텍스트 스위칭이 빠르지만, 자원 공유로 인해 문제가 발생할 수 있으니 이를 고려하여 프로그래밍을 해야합니다.

 

2. 컨텍스트 스위칭에 대해 설명해보세요.

더보기

한 Task가 끝날 때까지 기다리는 것이 아니라 여러 작업을 번갈아가며 실행해서 동시에 처리될 수 있도록 하는 방법입니다.

인터럽트가 발생하면 현재 프로세스의 상태를 PCB에 저장하고 새로운 프로세스의 상태를 레지스터에 저장하는 방식으로 동작합니다. 그러나 잦은 컨텍스트 스위칭은 오버헤드가 발생해 효율이 떨어질 수 있습니다.

 

PCB(Process Control Bolck): 커널 내부에 존재 (기존 프로세스 상태 값 저장)

 

3. 동기와 비동기의 차이와 장단점에 대해 설명해보세요.

더보기

동기는 순차적, 직렬적으로 테스트를 수행하고 비동기는 병력적으로 테스크를 수행합니다.

동기는 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 테스크들은 블로킹되고 비동기는 서버에 데이터를 요청한 이후 서버로부터 데이터가 응답될 때까지 대기하지 않고(Non-Blocking) 즉시 다음 테스크를 계속해 수행합니다.

동기방식은 설계가 간단하며 직관적이지만 결과가 주어질 때까지 대기해야하므로 전체 동작에 영향을 줄 수 있습니다.

비동기방식은 설계가 복잡하지만, 결과가 주어질 때까지 대기하지않으므로 자원을 효율적으로 사용할 수 있습니다.

 

4. 멀티스레드와 멀티프로세스에 대해 설명해주세요.

더보기

멀티스레드는 하나의 프로세스에서 여러개의 스레드를 만들어 자원의 생성과 관리의 중복을 최소화하는 방식입니다. 멀티 프로세스에 비해 메모리 자원소모가 줄어들고 컨텍스트 스위칭이 빠르다는 장점이 있습니다. 그러나 다수의 쓰레드가 공유 데이터에 접근할 때 교착 상태가 발생하지 않도록 동기화 등의 기법을 설계해야 한다는 단점이 있습니다.

멀티 프로세스는 두 개 이상 다수의 프로세스가 협렵적으로 하나 이상의 작업을 동시에 처리하는 방식입니다. 독립된 구조로 안전성이 높다는 장점이 있고 동기화 등의 설계를 따로하지않아도 된다는 장점이 있습니다. 그러나 모든 메모리 영역에 대해 컨텍스트 스위칭이 일어나기 때문에 오버헤드가 발생하여 성능저하로 이어질 수 있습니다.

 

5. 동기화에 대해 설명해보세요.

더보기

프로세스 또는 스레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보가 일치하는 것을 의미합니다. 프로세스 동기화를 하지 않으면 데이터의 일관성이 보장되지 않으므로 연산결과를 신뢰할 수 없습니다.

 

6. 교착상태란 무엇이고 해결방법에 대해 설명해보세요.

더보기

두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료하지 못하는 상태가 교착상태입니다. 교착상태가 발생하기 위해서는 4 가지 필요 조건이 있습니다. 

첫번째로는 상호배제입니다. 상호배제는 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야하는 것입니다.

두번째로는 점유 대기입니다. 할당된 자원을 가진 상태에서 다른 자원을 기다리는 것입니다.

세번째로는 비선점입니다. 다른 프로세스가 자원의 사용을 끝날 때 까지 사용할 수 없는 것입니다.

마지막으로는 순환대기입니다. 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것입니다.

교착상태를 해결하기 위해서는 4가지 방법이 있습니다.

첫번째로 예방입니다. 교착상태가 발생할 조건 중 하나라도 만족되지 않도록 하는 것입니다.

두번째로 회피입니다. 교착상태가 발생할 가능성이 높은 곳은 알고리즘을 통해 적절하게 회피하는 것입니다.

세번째로 회복입니다. 교착상태를 탐지하고 이를 해결하는 것입니다.

마지막으로 무시입니다. 교착상태를 해결하는 것보다 부딪히는게 비용이 덜 든다고 판단되면 그냥 무시하는 것입니다.

 

7. 세마포어와 뮤텍스의 차이에 대해 설명해보세요.

더보기

뮤텍스는 Lock을 사용해 하나의 프로세스나 쓰레드를 단독으로 실행하게 합니다.

반면에 세마포어는 공유자원에 세마포어 변수만큼의 프로세스(또는 쓰레드)가 접근할 수 있습니다.

그리고 세마포는 다른 프로세스가 세마포어를 해제할 수 있지만, 뮤텍스는 락을 획득한 프로세스만 락을 해제할 수 있습니다.

 

8. 기아상태란 무엇인가요?

더보기

특정 프로세스의 우선 순위가 낮아서 계속해서 자원을 할당받지 못하는 상태를 의미합니다. 
비선점형 스케줄링 중 SJF를 예로 들어보면 실행시간이 가장 적은 프로세스가 먼저 할당됩니다. 이 때, 실행시간이 엄청 긴 프로세스가 있다면 계속해서 우선순위가 밀려 영원히 자원을 할당받지 못하는 상태가 될 수 있습니다. 이러한 상태를 기아상태라고 합니다.

 

9. 선점형 스케줄링과 비선점형 스케줄링의 차이를 설명해주세요.

더보기

선점형 스케줄링이란, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 방식입니다. 응답이 빠르다는 장점이 있지만, 처리 시간을 예측하기 힘들다는 단점이 있습니다.

선점형 스케줄링의 대표적인 방법은 라운드 로빈, SRT 등이 존재합니다.

(라운드 로빈: FIFO/FCFS 알고리즘을 선점 형태로 변형한 기법으로 순서대로 들어온 프로세스가 먼저 CPU를 할당받습니다. 이 때, 프로세스에 할당된 시간이 존재(time quantum)하는데, 이 시간 내에 작업을 완료하지 못하면 다음 프로세스가 CPU를 할당받습니다.

SRT(Shortest Remaining Time): SJF 알고리즘을 선점 형태로 변형한 기법으로 잔여시간이 낮은 것을 우선으로 하는 스케줄링 방법입니다. [starvation 문제] )

 

비전섬형 스케줄링이란 현재 프로세스를 중단시킬 수 없고 끝날 때까지 CPU를 사용할 수 없는 방식입니다. 처리 시간 예측이 용이하지만, 긴 작업의 경우 오래 기다려야 하는 단점이 있습니다.

비선점형 스케줄링의 대표적인 방법은 FIFO, SJF, Priority가 존재합니다.

(FIFO/FCFS: 먼저들어온것이 먼저 처리되는 방식입니다.

SJF(Shortest Job First): 실행시간이 가장 작은 프로세스가 먼저 처리되는 방식입니다. [starvation 문제]

우선순위: 프로세스에 우선순위를 부여하여 높은 우선순위를 가진 프로세스가 먼저 처리되는 방식입니다. [starvation 문제])

 

 

10. Critical Section(임계영역)에 대해 설명해주세요.

더보기

동시접근하려고 하는 자원에서 문제가 발생하지 않게 독점을 보장해야하는 영역을 임계 영역이라고 합니다. 임계 구역의 문제를 해결하기 위해서는 상호 배제, 진행, 유한 대기 조건을 충족해서 설계를 진행해야 합니다. 이를 해결하기 위한 방법으로는 Lock, 세마포어, 뮤텍스가 존재합니다.

 

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

더보기

내부단편화란 하나의 메모리 영역이 적재하고자하는 프로세스보다 커서 할당 후 사용되지 않고 남게 되는 현상입니다.

외부단편화란 남아있는 총 메모리 공간이 요청한 프로세스 작업 공간보다 크지만, 남아있는 공간이 연속적이지 않아 할당하지 못하는 현상입니다.

 

12. 페이징 기법에 대해 설명해주세요.

더보기

페이징 기법은 가상 메모리를 모두 같은 크기의 블록으로 분할하는 방식입니다. 이때 일정 크기를 가진 블록을 페이지라고 합니다. 그렇기 때문에 외부단편화가 절대 발생하지 않지만 여전히 내부단편화 문제는 발생할 수 있습니다.

(가상 메모리: 실제 모모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술)

 

페이징 교체 알고리즘은 FIFO, OPT, LRU, LFU, MFU, NUR가 존재합니다.

(FIFO: 가장 먼저 메모리에 올라온 페이지를 교체

OPT(Optimal): 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체

LRU(Least Recently Used): 가장 오랫동안 사용되지 않은 페이지 교체

LFU(Least Frequently Used): 참조 횟수가 가장 적은 페이지를 교체

MFU(Most Frequently Used): 참조 횟수가 가장 많은 페이지를 교체

NUR(Not Used Recently): 최근에 사용하지 않은 페이지를 교체)

 

'면접준비' 카테고리의 다른 글

[기술 면접] 스프링 / 보안  (0) 2022.12.23
[기술 면접] 데이터베이스  (0) 2022.12.22
[기술 면접] 자료구조  (0) 2022.12.21
[기술 면접] 네트워크  (0) 2022.12.19
[기술 면접] 객체 지향 프로그래밍  (0) 2022.12.16