Skip to content

Latest commit

 

History

History
213 lines (190 loc) · 8.89 KB

03-OPERATING_SYSTEM.md

File metadata and controls

213 lines (190 loc) · 8.89 KB

운영체제

1. 시스템 콜이 무엇인지 설명해 주세요.

  • 우리가 사용하는 시스템 콜의 예시를 들어주세요.
  • 시스템 콜이, 운영체제에서 어떤 과정으로 실행되는지 설명해 주세요.
  • 시스템 콜의 유형에 대해 설명해 주세요.
  • 운영체제의 Dual Mode 에 대해 설명해 주세요.
  • 서로 다른 시스템 콜을 어떻게 구분할 수 있을까요?

2. 인터럽트가 무엇인지 설명해 주세요.

  • 인터럽트는 어떻게 처리하나요?
  • Polling 방식에 대해 설명해 주세요.
  • HW / SW 인터럽트에 대해 설명해 주세요.

3. 프로세스가 무엇인가요?

  • 프로그램과 프로세스, 스레드의 차이에 대해 설명해 주세요.
  • PCB가 무엇인가요?
  • 그렇다면, 스레드는 PCB를 갖고 있을까요?
  • 리눅스에서, 프로세스와 스레드는 각각 어떻게 생성될까요?
  • 자식 프로세스가 상태를 알리지 않고 죽거나, 부모 프로세스가 먼저 죽게 되면 어떻게 처리하나요?
  • 리눅스에서, 데몬프로세스에 대해 설명해 주세요.

4. 프로세스 주소공간에 대해 설명해 주세요.

  • 초기화 하지 않은 변수들은 어디에 저장될까요?
  • 일반적인 주소공간 그림처럼, Stack과 Heap의 크기는 매우 크다고 할 수 있을까요? 그렇지 않다면, 그 크기는 언제 결정될까요?
  • Stack과 Heap 공간에 대해, 접근 속도가 더 빠른 공간은 어디일까요?
  • 다음과 같이 공간을 분할하는 이유가 있을까요?
  • 스레드의 주소공간은 어떻게 구성되어 있을까요?

5. 단기, 중기, 장기 스케쥴러에 대해 설명해 주세요.

  • 현대 OS에는 단기, 중기, 장기 스케쥴러를 모두 사용하고 있나요?
  • 프로세스의 스케쥴링 상태에 대해 설명해 주세요.
  • preemptive/non-preemptive 에서 존재할 수 없는 상태가 있을까요?
  • Memory가 부족할 경우, Process는 어떠한 상태로 변화할까요?

6. 컨텍스트 스위칭 시에는 어떤 일들이 일어나나요?

  • 프로세스와 쓰레드는 컨텍스트 스위칭이 발생했을 때 어떤 차이가 있을까요?
  • 컨텍스트 스위칭이 발생할 때, 기존의 프로세스 정보는 커널스택에 어떠한 형식으로 저장되나요?
  • 컨텍스트 스위칭은 언제 일어날까요?

7. 프로세스 스케줄링 알고리즘에는 어떤 것들이 있나요?

  • RR을 사용할 때, Time Slice에 따른 trade-off를 설명해 주세요.
  • 싱글 스레드 CPU 에서 상시로 돌아가야 하는 프로세스가 있다면, 어떤 스케쥴링 알고리즘을 사용하는 것이 좋을까요? 또 왜 그럴까요?
  • 동시성과 병렬성의 차이에 대해 설명해 주세요.
  • 타 스케쥴러와 비교하여, Multi-level Feedback Queue는 어떤 문제점들을 해결한다고 볼 수 있을까요?

8. 뮤텍스와 세마포어의 차이점은 무엇인가요?

  • 이진 세마포어와 뮤텍스의 차이에 대해 설명해 주세요.

9. Deadlock 에 대해 설명해 주세요.

  • Deadlock 이 동작하기 위한 4가지 조건에 대해 설명해 주세요.
  • 그렇다면 3가지만 충족하면 왜 Deadlock 이 발생하지 않을까요?
  • 어떤 방식으로 예방할 수 있을까요?
  • 왜 현대 OS는 Deadlock을 처리하지 않을까요?
  • Wait Free와 Lock Free를 비교해 주세요.

10. 프로그램이 컴파일 되어, 실행되는 과정을 간략하게 설명해 주세요.

  • 링커와, 로더의 차이에 대해 설명해 주세요.
  • 컴파일 언어와 인터프리터 언어의 차이에 대해 설명해 주세요.
  • JIT에 대해 설명해 주세요.
  • 본인이 사용하는 언어는, 어떤식으로 컴파일 및 실행되는지 설명해 주세요.

11. IPC가 무엇이고, 어떤 종류가 있는지 설명해 주세요.

  • Shared Memory가 무엇이며, 사용할 때 유의해야 할 점에 대해 설명해 주세요.
  • 메시지 큐는 단방향이라고 할 수 있나요?

12. Thread Safe 하다는 것은 어떤 의미인가요?

  • Thread Safe 를 보장하기 위해 어떤 방법을 사용할 수 있나요?
  • Peterson's Algorithm 이 무엇이며, 한계점에 대해 설명해 주세요.
  • Race Condition 이 무엇인가요?

13. Thread Pool, Monitor, Fork-Join에 대해 설명해 주세요.

14. 캐시 메모리 및 메모리 계층성에 대해 설명해 주세요.

  • 캐시 메모리는 어디에 위치해 있나요?
  • L1, L2 캐시에 대해 설명해 주세요.
  • 캐시에 올라오는 데이터는 어떻게 관리되나요?
  • 캐시간의 동기화는 어떻게 이루어지나요?
  • 캐시 메모리의 Mapping 방식에 대해 설명해 주세요.
  • 캐시의 지역성에 대해 설명해 주세요.
  • 캐시의 지역성을 기반으로, 이차원 배열을 가로/세로로 탐색했을 때의 성능 차이에 대해 설명해 주세요.

15.메모리의 연속할당 방식 세 가지를 설명해주세요. (first-fit, best-fit, worst-fit)

  • worst-fit 은 언제 사용할 수 있을까요?
  • 성능이 가장 좋은 알고리즘은 무엇일까요?

16. Thrashing 이란 무엇인가요?

  • Thrashing 발생 시, 어떻게 완화할 수 있을까요?

17. 가상 메모리란 무엇인가요?

  • 가상 메모리가 가능한 이유가 무엇일까요?
  • Page Fault가 발생했을 때, 어떻게 처리하는지 설명해 주세요.
  • 페이지 크기에 대한 Trade-Off를 설명해 주세요.
  • 페이지 크기가 커지면, 페이지 폴트가 더 많이 발생한다고 할 수 있나요?

18. 세그멘테이션과 페이징의 차이점은 무엇인가요?

  • 페이지와 프레임의 차이에 대해 설명해 주세요.
  • 내부 단편화와, 외부 단편화에 대해 설명해 주세요.
  • 페이지에서 실제 주소를 어떻게 가져올 수 있는지 설명해 주세요.
  • 어떤 주소공간이 있을 때, 이 공간이 수정 가능한지 확인할 수 있는 방법이 있나요?
  • 32비트에서, 페이지의 크기가 1kb 이라면 페이지 테이블의 최대 크기는 몇 개일까요?

19. TLB는 무엇인가요?

  • TLB를 쓰면 왜 빨라지나요?
  • MMU가 무엇인가요?
  • TLB와 MMU는 어디에 위치해 있나요?

20. 동기화를 구현하기 위한 하드웨어적인 해결 방법에 대해 설명해 주세요.

  • volatile 키워드는 어떤 의미가 있나요?
  • 싱글코어가 아니라 멀티코어라면, 어떻게 동기화가 이뤄질까요?

21. 페이지 교체 알고리즘에 대해 설명해 주세요.

  • LRU 알고리즘은 어떤 특성을 이용한 알고리즘이라고 할 수 있을까요?
  • LRU 알고리즘을 구현한다면, 어떻게 구현할 수 있을까요?

22. File Descriptor와, File System에 에 대해 설명해 주세요.

  • I-Node가 무엇인가요?

23. 동기와 비동기, 블로킹과 논블로킹의 차이에 대해 설명해 주세요.

  • 그렇다면, 동기이면서 논블로킹이고, 비동기이면서 블로킹인 경우는 의미가 있다고 할 수 있나요?
  • I/O 멀티플렉싱에 대해 설명해 주세요.