본문 바로가기

면접준비

CS 지식 정리 - 운영체제(1)

운영체제 기본 개념

  1. OS(운영체제)란?
  2. 커널이 무엇?
  3. 프로세스와 쓰레드의 차이
  4. 컨텍스트 스위칭이 무엇이며, 왜 필요한지 설명해주세요

 

 

  1. 운영체제(OS, Operating System)는 하드웨어와 소프트웨어를 관리하고, 사용자가 컴퓨터를 효율적으로 사용할 수 있도록 인터페이스를 제공하는 시스템 소프트웨어이다.
    주요 역할로는 프로세스 관리, 메모리 관리, 파일 시스템 관리, 디바이스 제어 등이 있다.

→ Windows, macOS, Linux와 같은 운영체제가 있으며, 사용자 프로그램이 하드웨어에 직접 접근하지 못하도록 보호하면서도, 효율적인 자원 관리를 가능하게 한다.

 

2. 커널(Kernel)은 운영체제의 핵심 구성 요소로, 하드웨어와 소프트웨어 간의 중재자 역할을 한다.

 

주요기능

- 프로세스 관리 : 여러 프로그램이 CPU를 번갈아 사용할 수 있도록 차례를 정리하고 관리 ( → 게임과 브라우저를 동시에 실행해도 컴퓨터가 멈추지 않는 이유) 
- 메모리 관리 : 프로그램이 필요한 메모리를 적당히 나눠주고, 쓴 메모리를 정리한다. ( → 앱이 실행될 때 메모리가 부족해지지 않도록 관리)
- 장치 제어 : 키보드, 마우스, 디스크 같은 하드웨어가 잘 작동하도록 명령을 내리고 통제한다. ( → 마우스 클릭이 제대로 작동하는 이유)
- 시스템 호출 처리 : 프로그램이 운영체제 기능을 요청할 때 다리를 놓아주는 역할을 한다. ( → 파일 저장, 네트워크 연결 같은 작업)
  1. 프로세스(Process)는 실행 중인 프로그램 하나를 독립된 단위로 생각하면 된다. 각각 자신만의 메모리 공간을 가지고 다른 프로세스와는 철저히 분리되어 있다. ( → 여러 개의 Word 파일을 각각 열면, 각 파일이 별도의 프로세스로 실행된다. )

쓰레드(Thread)는 프로세스 안에서 실행되는 작업의 흐름이다. 같은 프로세스 안에서는 메모리와 자원을 공유한다. ( → 웹 브라우저를 켰을 때, 하나의 창은 프로세스지만, 각 탭은 쓰레드로 실행된다. 이 덕분에 한 탭이 멈춰도 브라우저 전체가 멈추지 않는다.)

 

2. 컨텍스트 스위칭(Context Switching)는 CPU가 실행 중인 프로세스나 쓰레드의 상태를 저장하고, 새로운 프로세스의 상태를 불러와 실행하는 과정을 말한다.

왜 필요..?

→ 멀티태스킹! 여러 작업(프로세스/쓰레드)을 번갈아 가며 실행해야 하기 때문 (컴퓨터가 음악을 재새앟면서 동시에 문서를 편집하거나 파일을 다운로드하는 경우)

→ 공정성! 특정 작업이 CPU를 독점하지 않도록, CPU 시간을 모든 작업이 공평하게 나눠 쓰게 해준다. (게임도 하고 있는데, 백그라운드에서 바이러스 검사도 진행 중인 상황)

→ 응답성! 사용자 프로그램이 즉각적으로 반응하도록 빠르게 다른 작업으로 전환할 수 있다

 

컨텍스트 스위칭은 필수적이지만, 상태를 저장하고 불러오는 데 시간이 들기 때문에 오버헤드(비용)가 발생하므로 효율적인 스케줄링 알고리즘이 중요하다

 

 

메모리 관리

  1. 메모리의 구조를 영역별로 설명
  2. 힙 영역과 스택 영역의 차이
  3. 가상 메모리가 무엇인지
  4. 페이징과 세그멘테이션의 차이
  5. 내부 단편화와 외부 단편화의 차이
  6. 페이지 교체가 무엇이고, 교체 알고리즘의 예를 설명해주세요.

 

 

  1. 코드 영역, 데이터 영역, 힙 영역, 스택 영역
    코드 영역(Text Segment)은 프로그램의 실행 명령어(코드)가 저장되는 곳
  • 주로 읽기 전용이라 코드를 수정할 수 없고, CPU는 코드 영역에 저장된 명령어들을 하나씩 가져가서 실행한다.

데이터 영역(Data Segment)은 프로그램 실행 전부터 메모리에 올라가는 전역 변수와 정적 변수들이 저장된다.

  • 메인 함수 전에 선언되어 프로그램의 시작과 동시에 할당되고 프로그램이 종료돼야 메모리가 소멸된다.

힙 영역 (Heap Segment)은 해당 공간에 메모리 할당하는 것을 동적 할당이라고 부른다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

스택 영역 (Stack Segment)은 함수 호출 시 생성되는 지역 변수, 매개변수, 함수 호출 정보들이 저장된다. 함수가 끝나면 해당 메모리가 자동으로 해제된다.

  • LIFO(Last In, First Out) 구조로, 가장 나중에 넣은 것이 가장 먼저 제거된다.

 

 

2. 힙은 동적 메모리 할당을 위한 공간으로, 런타임에 사용자가 명시적으로 메모리를 할당하고 해제해야 하며 유연하지만 속도가 느리고, 잘못 관리하면 메모리 누수가 발생할 수 있다. 반면, 스택은 함수 호출 시 자동으로 메모리가 할당되고, 함수가 끝나면 자동으로 해제되어 빠르고 효율적이지만, 크기가 고정되어 있고 동적 할당은 어렵다.

힙은 유연성이 장점이고, 스택은 속도와 관리 편리성이 강점이다.

 


 

3. 가상 메모리는 컴퓨터가 실제 물리적 메모리보다 더 큰 메모리를 사용하는 것처럼 보이게 만드는 기술로, 실제로 필요한 부분만 물리적 메모리에 올리고, 나머지는 디스크에 저장하여 메모리 부족 문제를 해결하고 여러 프로그램을 동시에 실행할 수 있게 한다.


 

프로세스 및 동기화

  1. 멀티 쓰레드 환경에서 주의해야 할 점을 설명
  2. Race Condition(경쟁 상태)과 이를 방지하기 위한 방법을 설명
  3. Deadlock(교착 상태)에 대해 설명하고, 해결 방법을 제시
  4. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이를 설명

스케줄링 및 성능

  1. CPU 스케줄링이 무엇인지
  2. 선점(Preemption)과 비선점(Non-preemption)의 차이를 설명
  3. 동시성(Concurrency)과 병렬성(Parallelism)의 차이를 설명

시스템 호출 및 인터럽트

  1. System Call이 무엇?
  2. Interrupt(인터럽트)가 무엇인지 설명

+추가

  1. 크롬 브라우저에서 각 탭이 오류가 나더라도 다른 탭에 영향을 끼치지 않는 이유를 설명
  2. '식사하는 철학자 문제'에서 교착 상태가 발생하는 조건과 해결 방법을 설명