☁️ 🏗️

클라우드/인프라 엔지니어가 되는 과정을 기록합니다.

CS

OS 계층 구조를 알아보자 (feat. 커널, 쉘, System Call)

d4eh0 2026. 4. 3. 18:22

🔹 왜 OS가 필요한가?

컴퓨터는 CPU, 메모리, 저장장치 같은 HW로 이루어진다.
사용자가 메모리를 잘못 건드리면 시스템이 죽고, CPU를 잘못 제어하면 다른 프로세스가 망가진다.
그래서 운영체제(OS) 가 중간에서 HW를 대신 관리해준다.


🔹 전체 계층 구조

사용자
  ↓
응용 프로그램
  ↓
셸 / 라이브러리
  ↓
시스템 호출 (System Call)
  ↓
커널 (Kernel)
  ↓
하드웨어 (HW)

// OS = 커널 + 셸 + 라이브러리

🔹 각 계층 설명

- 커널 (Kernel)

  • OS의 심장. HW를 직접 제어하는 유일한 존재
  • 항상 메모리에 존재
  • 사용자는 커널에 직접 접근불가

- 시스템 호출 (System Call)

  • 커널로 들어가는 유일한 문이다.
  • 응용 프로그램이 "파일 열어줘", "메모리 줘", "CPU 할당해줘" 같은 요청을 할 때
    : System Call 발생, 커널 모드로 전환되고 커널이 대신 하드웨어를 제어한다.
응용 프로그램 → 시스템 호출 → 커널 → 하드웨어

- 셸 (Shell)

  • 사용자가 명령어로 커널에게 작업을 요청할 수 있게 해주는 명령어 해석기
  • 터미널에서 ls, cd, mkdir 같은 명령어를 입력하면 셸이 이를 해석해서 System Call을 발생시킴
  • ex) bash, zsh
사용자 입력(ls) → 셸이 해석 → 시스템 호출 → 커널이 디렉토리 읽어서 반환
  • 터미널(Terminal) ≠ 셸
  • 터미널은 입출력을 담당하는 응용 프로그램, 셸은 그 안에서 실행되는 해석기다.

- 라이브러리 (Library)

  • 자주 발생하는 시스템 호출을 묶어놓은 함수
  • ex) C언어의 'printf()'
  • 셸은 사용자, 라이브러리는 프로그램(개발자)
    → 둘 다 결국 시스템 호출을 발생시킴

🔹 정리

계층 역할
응용 프로그램 사용자가 직접 사용하는 프로그램
명령어 해석기, 사용자  커널
라이브러리 시스템 호출을 함수로 묶음, 개발자   커널
시스템 호출 커널로 들어가는 유일한 문
커널 OS의 핵심, HW 직접 제어
HW CPU, 메모리, 디스크 등 물리 장치