운영체제와 커널

기술노트

운영체제와 커널

운영체제(Operating System, OS)는 컴퓨터 하드웨어와 사용자(또는 응용 프로그램) 사이에서 중재자 역할을 하는 시스템 소프트웨어입니다. 컴퓨터의 자원을 효율적으로 관리하고, 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공합니다. 커널(Kernel)은 이러한 운영체제의 가장 핵심적인 부분으로, 시스템의 모든 것을 통제합니다.


🖥️ 운영체제 (Operating System)의 역할

  • 자원 관리자 (Resource Manager)

> * 컴퓨터의 하드웨어 자원(CPU, 메모리, 디스크, I/O 장치 등)을 효율적으로 관리하고, 여러 프로세스가 자원을 공평하게 사용할 수 있도록 할당합니다. > * 프로세스 관리, 메모리 관리, 파일 시스템 관리, 장치 관리 등을 수행합니다.

  • 사용자 인터페이스 제공 (User Interface)

> * 사용자가 컴퓨터와 상호작용할 수 있는 환경을 제공합니다. > * GUI (Graphical User Interface) : 아이콘, 창 등을 통해 시각적으로 조작 (e.g., Windows, macOS) > * CLI (Command Line Interface) : 텍스트 명령어를 통해 시스템과 상호작용 (e.g., Linux Shell, DOS)

  • 시스템 콜 인터페이스 제공 (System Call Interface)

> * 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 막고, 운영체제가 제공하는 안전한 함수(시스템 콜)를 통해서만 자원을 사용할 수 있도록 합니다.


noyau 커널 (Kernel)의 역할과 종류

  • 역할 (Role) : 운영체제의 가장 핵심적인 부분으로, 하드웨어와 응용 프로그램 사이의 다리 역할을 합니다. 메모리에 항상 상주하며, 프로세스 관리, 메모리 관리, 장치 드라이버, 시스템 콜 처리 등 핵심 기능을 수행합니다.
  • 커널 모드 vs 사용자 모드 (Kernel Mode vs User Mode)

> * 커널 모드 : 시스템의 모든 자원에 접근할 수 있는 권한을 가진 실행 모드. 커널 코드가 이 모드에서 실행됩니다. > * 사용자 모드 : 일반 응용 프로그램이 실행되는 모드. 하드웨어에 직접 접근할 수 없으며, 자원 사용이 필요할 경우 '시스템 콜'을 통해 커널에 요청합니다. > * 이 이중 모드는 악의적인 프로그램이나 오류로부터 시스템 자원을 보호하는 역할을 합니다.

  • 종류 (Types)

> * 단일형 커널 (Monolithic Kernel) : 운영체제의 대부분의 서비스가 하나의 커널 코드에 통합된 구조. (e.g., Linux, UNIX) 효율적이고 빠르지만, 하나의 오류가 전체 시스템에 영향을 줄 수 있습니다. > * 마이크로 커널 (Microkernel) : 커널에는 필수 기능만 남기고, 나머지 서비스는 사용자 공간에서 모듈 형태로 실행. (e.g., QNX) 안정성이 높지만, 모듈 간 통신 오버헤드로 성능 저하가 있을 수 있습니다.


💡 개발자 핵심 Point

  • 운영체제는 컴퓨터 시스템의 추상화(Abstraction)를 제공합니다. 개발자는 복잡한 하드웨어 동작 원리를 몰라도, 운영체제가 제공하는 일관된 인터페이스(시스템 콜)를 통해 프로그램을 작성할 수 있습니다.
  • 우리가 작성하는 프로그램은 '사용자 모드'에서 실행되며, 파일 읽기/쓰기, 네트워크 통신 등 하드웨어 자원이 필요한 작업은 모두 '시스템 콜'을 통해 '커널 모드'로 전환되어 처리됩니다.
  • 리눅스(Linux)는 '커널'의 이름이며, 우분투(Ubuntu), CentOS 등은 이 리눅스 커널에 다양한 유틸리티와 GUI 환경을 추가한 '운영체제 배포판'입니다.