728x90
반응형
1. 시스템 콜을 설명해 보세요.
2. 프로세스의 메모리 구조를 설명해 보세요.
3. 프로세스와 스레드의 차이점을 설명해 보세요.
4. 스택 오버플로와 힙 오버플로에 관해 설명해 보세요.
5. PCB가 무엇인지 설명해 보세요.
6. 멀티 프로세스와 멀티 스레드의 차이점을 설명해 보세요.
7. 동시성과 병렬성을 비교해 설명해 보세요.
8. 콘텍스트 스위칭이 무엇인지 설명해 보세요.
9. 멀티 프로세스에서 콘텍스트 스위칭과 멀티 스레드에서 콘텍스트 스위칭의 차이점을 설명해 보세요.
10. 프로세스 동기화에 대해 설명해 보세요.
11. 뮤텍스와 세마포어의 차이점을 설명해 보세요.
12. 스레드 안전의 의미가 무엇이며 이를 구현하는 방법은 무엇인가요?
13. 비선점형 스케줄링 알고리즘과 선점형 스케줄링 알고리즘을 설명해 보세요.
14. OS의 메모리 관리 전략 중 페이징과 세그먼테이션을 비교해서 설명해 보세요.
15. 가상 메모리가 무엇인지와 가상 메모리가 필요한 이유를 설명해 보세요.
16. 스레싱이 무엇인가요?
17. 캐시 메모리에 대해 설명해 보세요.
답안
- 시스템 콜을 설명해 보세요.
시스템 콜은 커널 모드와 사용자 모드 간의 필요한 정보를 주고 받기 위해 호출하는 함수를 말한다.
OS는 사용자가 하드웨어의 주요 자원에 쉽게 접근할 수 없도록 커널 모드와 사용자 모드로 나뉘는데, 프로세스가 자원에 접근해 처리가 필요할 때 시스템 콜로 필요한 요청을 하고 그에 대한 결과 값을 돌려 받게 된다. - 프로세스의 메모리 구조를 설명해 보세요.
스택, 힙, 데이터, 코드 영역으로 이루어져 있다.- 스택: 지역 변수, 함수의 매개변수가 저장된다.
- 힙: 동적 메모리 할당이 이루어진다.
- 데이터: 전역 변수, 정적 변수, 배열, 구조체 등이 저장된다.
- 코드: 기계어가 저장된다.
- 프로세스와 스레드의 차이점을 설명해 보세요.
- 프로세스는 실행 중인 하나의 프로그램을 뜻하고, 실행의 단위이다.
- 독립적인 메모리 영역을 가진다.
- 스레드는 프로세스 내에서 실행되는 흐름의 단위이다.
- 독립적인 스택 영역 외 나머지 영역은 다른 스레드와 공유한다.
- 프로세스는 실행 중인 하나의 프로그램을 뜻하고, 실행의 단위이다.
- 스택 오버플로와 힙 오버플로에 관해 설명해 보세요.
- 스택 오버플로: 스택 영역이 힙 영역을 침범할 때
- 과도한 재귀 호출
- 힙 오버플로: 힙 영역이 스택 영역을 침범할 때
- 과도한 메모리 동적 할당
- 스택 오버플로: 스택 영역이 힙 영역을 침범할 때
- PCB가 무엇인지 설명해 보세요.
Process Control Block 으로, 프로세스에 대한 정보를 저장하는 구조체이다.
프로세스의 고유 아이디인 PID, 프로세스가 다음으로 실행할 명령어의 주소값인 PC 등 정보를 가지고 있다. - 멀티 프로세스와 멀티 스레드의 차이점을 설명해 보세요.
- 멀티 프로세스: 하나의 응용 프로그램에 여러 개의 프로세스를 구성하는 것
- 독립적인 메모리 영역을 가지기 때문에 자원을 공유하거나 통신할 때 IPC가 필요하다.
- 멀티 스레드: 하나의 프로세스 내부에 여러 개의 스레드로 작업을 처리하는 것
- 자원 공간을 공유하므로 스레드 간 자원 공유와 통신이 간단하고 프로세스보다 콘텍스트 비용이 적게 들지만 동기화가 필요하다.
- 독립적인 메모리 영역을 가지기 때문에 자원을 공유하거나 통신할 때 IPC가 필요하다.
- 멀티 프로세스: 하나의 응용 프로그램에 여러 개의 프로세스를 구성하는 것
- 동시성과 병렬성을 비교해 설명해 보세요.
- 동시성: 하나의 코어에서 여러 작업을 번갈아가면서 실행하는 것을 의미한다.
CPU가 처리 중인 작업을 변경해야 하기 때문에 오버헤드가 발생한다. - 병렬성: 여러 개의 코어에서 여러 작업을 실행하는 것을 의미한다.
물리적인 시간 관점에서 여러 작업이 동시에 처리되는 방식이다.
- 콘텍스트 스위칭이 무엇인지 설명해 보세요.
CPU가 처리 중인 프로세스를 변경하는 것을 의미한다.
CPU는 하나의 프로세스만 처리할 수 있으므로, 멀티 프로세스 환경에서 콘텍스트 스위칭이 발생한다.
CPU 스케줄러에 의해 인터럽트가 발생하면 실행 중인 프로세스가 대기나 준비 상태로 변경되고, 레지스터에 저장되어 있는 프로세스 정보가 변경되면서 오버헤드가 발생한다. - 멀티 프로세스에서 콘텍스트 스위칭과 멀티 스레드에서 콘텍스트 스위칭의 차이점을 설명해 보세요.
멀티 프로세스에서는 프로세스마다 각 고유의 독립적인 메모리 영역을 가지지만, 멀티 스레드에서는 동일한 프로세스 내에서 스택 외 나머지 영역을 공유하므로, 레지스터에 로드할 데이터 양이 적어서 멀티 프로세스보다 오버헤드가 적게 발생한다. - 프로세스 동기화에 대해 설명해 보세요.
여러 프로세스나 스레드가 공유 자원에 접근해도 데이터의 일관성을 유지하는 것을 의미한다.
공유 자원이 접근하는 코드를 임계 영역이라고 하고, 임계 영역에 대한 상호배제 기법이 잘 이루어져야 프로세스 동기화를 할 수 있다. 상호배제 기법으로는 뮤텍스, 세마포어가 있다. - 뮤텍스와 세마포어의 차이점을 설명해 보세요.
프로세스 동기화를 위해 사용하는 상호배제 기법이다.- 뮤텍스: 락을 가지고 있는 하나의 프로세스만 임계 영역에 접근할 수 있는 방식이다.
임계 영역에 접근하려는 프로세스가 반복문을 돌면서 접근 가능한지 확인하는데, 이 방식을 스핀락이라고 한다. - 세마포어: 임계 영역에 특정 개수의 프로세스가 접근할 수 있도록 제어하는 방식이다.
임계 영역에 접근한 프로세스가 이미 최대 수인 경우, 접근하려는 프로세스는 대기 상태에 들어가게 된다.
처리 중이던 프로세스가 임계 영역을 빠져나가면서 프로세스가 대기 상태인 프로세스를 깨운다.
- 뮤텍스: 락을 가지고 있는 하나의 프로세스만 임계 영역에 접근할 수 있는 방식이다.
- 스레드 안전의 의미가 무엇이며 이를 구현하는 방법은 무엇인가요?
하나의 자원 또는 객체에 대해 여러 스레드가 접근해도 프로그램을 실행하는 데 문제가 없는 것을 의미한다.
자바에서는 Synchronized 를 사용해서 블록 단위의 임계 영역에서 하나의 스레드만 접근할 수 있도록 한다.
블록 단위로 락의 획득 및 해제가 발생한다.
임계 영역을 크게 잡을 경우 성능 저하 문제가 생길 수 있기 때문에 임계 영역을 최소화 해야 한다. - 비선점형 스케줄링 알고리즘과 선점형 스케줄링 알고리즘을 설명해 보세요.
- 비선점형 스케줄링 알고리즘: 실행 중인 프로세스가 있는 경우 해당 프로세스가 종료될 때까지 다른 프로세스가 실행될 수 없다.
FCFS, SJF 알고리즘이 있다. - 선점형 스케줄링 알고리즘: 실행 중인 프로세스를 중단시키고 다른 프로세스를 실행할 수 있다.
RR, SRTF 알고리즘이 있다.
- 비선점형 스케줄링 알고리즘: 실행 중인 프로세스가 있는 경우 해당 프로세스가 종료될 때까지 다른 프로세스가 실행될 수 없다.
- OS의 메모리 관리 전략 중 페이징과 세그먼테이션을 비교해서 설명해 보세요.
페이징과 세그먼테이션은 비연속 메모리 할당 방식이다.- 페이징: 논리 메모리 영역과 물리 메모리 영역을 동일한 크기로 나누고, 각각의 영역은 페이지, 프레임이라고 부른다. 내부 단편화 문제가 발생할 수 있다.
- 세그먼테이션: 프로세스를 논리적 단위로 분할하는 기법이다. 프로세스의 메모리 영역을 분할해 메모리가 보호되지만, 외부 단편화 문제가 발생할 수 있다.
- 가상 메모리가 무엇인지와 가상 메모리가 필요한 이유를 설명해 보세요.
가상 메모리는 프로세스 중 일부만 메모리 영역으로 옮기고 나머지는 디스크에 옮겨 실제 메모리 영역보다 더 큰 영역을 사용하는 것처럼 보이게 하는 방식이다.
한정된 메모리의 영향을 덜 받고, 여러 프로세스를 실행하기 위해서 필요하다.
가상 메모리를 구현하는 방식으로는 요구 페이징이 있다.
요구 페이징은 필요한 페이지만 메모리에 로드하는 방식이다.
필요한 페이지를 물리 메모리에 로드하고, 필요하지 않은 페이지는 디스크에 저장한다. - 스레싱이 무엇인가요?
가상 메모리 환경에서 다중 프로그래밍 정도가 높아지면서 페이지 폴트(물리 메모리에 필요한 페이지가 없는 경우)가 빈번히 발생해 CPU 이용률이 낮아지는 현상이다.
스레싱을 해결하기 위해 워킹 세트를 설정할 수 있는데, 워킹 세트는 지역성을 기반으로 자주 사용하는 페이지를 저장해둔다. - 캐시 메모리에 대해 설명해 보세요.
CPU와 메모리 간 처리 속도를 좁히기 위해서 사용한다.
CPU에서 자주 사용하는 데이터를 접근 속도가 빠른 캐시 메모리에 저장하고, 적중률을 높이기 위해 지역성 원리를 사용한다.
728x90
반응형
댓글