[면접 예상 질문] 운영체제(1/3)
1. 프로세스와 스레드의 차이?
- 프로세스는 메모리에 올라와 실행되고 있는 프로그램의 인스턴스이다.
- 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위이다.
2. 멀티 프로세스보다 멀티 스레드를 지양하는 이유?
스레드 간 컨텍스트 스위칭이 프로세스 간 컨텍스트 스위칭보다 빠르다. 따라서 처리 비용이 감소되고, 응답 시간이 단축된다. 또한, 멀티 스레드를 이용하면, 프로세스를 생성하여 자원을 할당하는 작업이 없어 자원을 효율적으로 관리할 수 있다.
3. 스레드의 장점
- 스레드는 프로세스보다 생성 및 종료 시간, 스레드 간 전환 시간이 짧다.
- 스레드는 프로세스의 메모리, 자원 등을 공유하므로, 커널 도움 없이 상호간의 통신이 가능하다.
4. 멀티 스레드의 장점과 단점
장점
- 하나의 프로세스 내에 다수의 실행 단위들이 존재하여 작업의 수행에 필요한 자원들을 공유하기 때문에, 자원의 생성과 관리가 중복되는 것을 줄일 수 있다.
단점
- 교착 상태를 발생시킬 수 있다.
- 동기화에 주의해야 한다.
- 하나의 스레드가 블럭당하면, 프로세스 내의 모든 스레드도 봉쇄될 수 있다.
5. 스레드의 동기화 문제는 어떻게 해결하나?
뮤텍스, 세마포어, 모니터를 이용해 동기화한다.
6. 컨텍스트 스위치란?
이전 프로세스의 상태를 보관하고, 새로운 프로세스의 보관된 상태를 복구하는 작업을 말한다.
7. 임계 구역(Critical Region)이란? 임계 구역 문제를 해결하는 방법은?
공유 메모리를 접근하는 프로그램 부분을 말한다. 한 프로세스가 임계 구역에 들어가 있다면 다른 프로세스는 들어갈 수 없게 하는 상호 배제의 기법인 세마포어와 뮤텍스를 사용해 처리한다.
8. 세마포어와 뮤텍스의 차이
세마포어와 뮤텍스는 공유 메모리에 동시에 접근할 수 있는 프로세스 및 쓰레드의 개수에 차이가 있다. 뮤텍스는 오직 하나의 프로세스만이 공유 메모리에 접근할 수 있으며, 세마포어는 그 값만큼의 프로세스들이 접근할 수 있다.
9. 교착 상태
교착 상태는 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 각각 자원을 점유한 상태에서, 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리며 대기 상태에서 벗어날 수 없는 상황을 의미한다.
10. 경쟁 조건이란?
둘 이상의 프로세스가 공유 자원을 읽거나 기록하는데, 최종 결과는 누가 언제 수행되는가에 따라 달라지는 상황을 말한다.
11. 스레드 풀이란?
프로세스를 시작할 때 미리 일정 수의 스레드를 만들어 두는 것을 말한다. 스레드 생성과 수거에 대한 비용을 줄일 수 있으며, 다수의 사용자 요청에 좋다.
12. 동시성에 대해 설명해라
서로 독립적인 작업을 작은 단위의 연산으로 나누고, 시간 분할 형태로 연산하여 마치 동시에 실행되는 것처럼 보여주는 것을 말한다. CPU 스케줄러가 프로세스를 빠르게 전환함으로써 구현된다.
13. 비선점형, 선점형 스케줄링 알고리즘이란?
- 비선점형 스케줄링 알고리즘 : I/O나 다른 프로세스를 기다리기 위해 대기하거나 자발적으로 CPU를 반환할 때까지 계속 수행할 수 있다.
- 선점형 스케줄링 알고리즘 : 정해진 시간이 끝나면 프로세스는 중단되고, 스케줄러는 다음에 실행할 프로세스를 선정한다.
14. 비선점형 알고리즘의 예는?
- FCFS
- SJF
- HRN(Highest Response ratio Next)
- 실행 시간이 긴 프로세스에 불리한 SJF 기법 보완을 위함.
- 우선순위 계산 결과 값이 높은 것부터 우선순위가 부여된다.
- 우선순위 = (대기 시간 + 서비스 시간) / 서비스 시간
15. Round Robin 스케줄링 알고리즘에 대해 설명해라
모든 프로세스에 최대 CPU 사용 시간 할당량(time quantum)을 동일하게 정해주고, 처리중인 프로세스의 CPU 실행 시간이 점유 시간을 초과하면 강제로 회수하여 다음 프로세스에 할당하는 방식의 알고리즘이다.
time quantum을 너무 짧으면 잦은 문맥 교환으로 오버헤드가 발생해 CPU 효율이 떨어진다. 너무 길면 FCFS와 같아져 대화식 요청의 응답의 질이 떨어진다.
16. 교착 상태가 일어나는 필수 조건 4가지를 말해라
- 상호 배제 : 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.
- 점유와 대기 : 최소 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
- 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
- 환형 대기 : 공유자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어, 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.
위 네 가지 조건 중 하나라도 충족되지 않으면 교착상태는 발생하지 않는다.
17. 상호 배제란?
한 프로세스가 공유 자원을 사용중이면, 다른 프로세스들은 사용하지 못하도록 하는 것을 말한다.
18. 힙과 스택 영역에 대해 설명해라
- 힙 : 사용자가 직접 관리할 수 있는 메모리 영역이다. 사용자에 의해 메모리 공간이 동적으로 할당된고 해제된다.
- 스택 : 함수의 호출과 관계되는 함수 매개변수, 복귀 주소 및 지역변수가 저장되는 영역이다. 함수의 호출과 함께 할당되며, 호출이 종료될 때 해제된다.
- 힙의 크기는 런 타임에, 스택의 크기는 컴파일 타임에 결정된다.
19. 비동기 스레딩과 동기 스레딩에 대한 차이점을 설명해라
- 비동기 스레딩 방식 : 스레드 생성 후, 자식 스레드의 작업 수행 결과를 기다리지 않고 부모 스레드는 이후 코드를 수행한다.
- 동기 스레딩 방식 : 스레드 생성 후, 자식 스레드가 작업 수행을 마칠 때까지 부모 스레드는 이후 작업을 하지 않고 기다린다.
20. 비동기 작업이 끝났는 지 판별하는 방법으로 뭐가 있나?
- 폴링 : 호출 종료를 지속적으로 검사하는 방법이다.
- 콜백 : 스레드 작업이 끝났을 때 자신을 생성한 클래스를 호출하여 메인 스레드에게 결과를 알려주는 방법이다.
21. 기아 상태를 해결하는 방법은?
시스템에서 오래 대기하고 있는 프로세스들의 우선순위를 점진적으로 증가시키는 aging 기법을 활용해 해결한다.
22. 디스패처란?
프로세스의 준비(ready) 상태에서 실행(running) 상태로 상태가 전이되는 현상을 디스패칭이라고 하고, 해당 작업을 디스패처가 수행한다.
댓글남기기