CS

[CS/OS] 운영체제의 구성 요소와 역할 그리고 커널만 메모리에 상주하는 이유

yujinius 2025. 1. 14. 16:56

지난 글: https://yujinius45.tistory.com/146

 

[CS/컴퓨터구조] 컴퓨터 구조와 동작 과정: 전원 공급에서 프로그램 실행까지

컴퓨터는 우리가 전원 버튼을 누르는 순간부터 복잡한 과정을 거쳐 동작을 시작한다. 이 글에서는 컴퓨터의 동작 과정을 단계별로 살펴보고, 부팅에서 프로그램 실행까지의 과정을 이해해본다.

yujinius45.tistory.com


컴퓨터를 부팅할 때 운영체제는 다양한 구성 요소 중 '커널'만 메인 메모리에 상주시킨다는 사실을 알 수 있다. 나머지 구성 요소는 필요할 때 로드되는데, 왜 커널은 항상 메모리에 상주해야 할까?

커널은 운영체제의 핵심으로 시스템 자원을 관리하고 하드웨어와 소프트웨어 간의 중재 역할을 한다. 이번 글에서는 운영체제의 구성 요소와 주요 역할을 살펴보고, 커널이 메모리에 상주하는 이유와 그 중요성을 분석해 보겠다.


먼저 운영체제에 대해서 간략히 알아보고 넘어가자.

운영체제란?

  • 운영체제(Operating System, OS)는 컴퓨터 하드웨어와 소프트웨어 자원을 관리하고, 사용자와 컴퓨터 간의 상호작용을 원활하게 해주는 시스템 소프트웨어이다.
  • 사용자가 컴퓨터를 효율적이고 편리하게 사용할 수 있도록 환경을 제공하며, 응용 프로그램이 하드웨어를 직접 제어하지 않고도 다양한 기능을 수행할 수 있게 한다.

  • 위 이미지는 운영체제와 컴퓨터 하드웨어, 소프트웨어 간의 상호작용 구조를 보여준다. 운영체제는 하드웨어와 응용 프로그램 사이에서 중개 역할을 하며, 이 과정에서 커널이 핵심 역할을 한다.

운영체제의 주요 역할

운영체제의 주요 역할은 위의 그림과 같이 크게 4가지로 나뉘며 자세한 것은 아래와 같다.

 

  • 자원 관리: CPU, 메모리, 저장 장치, 입출력 장치 등 시스템 자원을 효율적으로 관리하여 여러 프로그램이 동시에 실행될 수 있도록 지원한다.
  • 프로세스 관리: 프로그램의 실행 단위인 프로세스의 생성, 스케줄링, 종료 등을 관리하여 시스템의 안정성과 효율성을 높인다.
  • 메모리 관리: 프로그램이 실행될 때 필요한 메모리를 할당하고, 사용이 끝나면 해제하여 메모리 자원을 효율적으로 활용한다.
  • 파일 시스템 관리: 데이터를 파일 형태로 저장하고 관리하며, 파일의 생성, 삭제, 읽기, 쓰기 등의 작업을 지원한다.
  • 입출력 관리: 키보드, 마우스, 프린터 등 다양한 입출력 장치와의 데이터 송수신을 관리하여 사용자와 시스템 간의 원활한 상호작용을 돕는다.
  • 사용자 인터페이스 제공: 명령어 해석기(CLI)나 그래픽 사용자 인터페이스(GUI)를 통해 사용자가 시스템을 쉽게 조작할 수 있도록 도와준다.

운영체제의 구성 요소

  1. 커널(Kernel):
    • 운영체제의 핵심 부분으로, 프로세스 관리, 메모리 관리, 저장 장치 관리 등 시스템 자원을 효율적으로 관리한다.
    • 커널은 하드웨어와 직접 상호작용하며, 사용자 모드와 커널 모드 간의 전환을 통해 시스템의 안정성과 보안을 유지한다.
    • 주요 역할: 프로세스 관리, 메모리 관리, 저장 장치 제어, 입출력 관리 등.
  2. 인터페이스(Interface):
    • 사용자와 응용 프로그램이 운영체제와 상호작용할 수 있도록 도와주는 부분이다.
    • 명령어 해석기(CLI)나 그래픽 사용자 인터페이스(GUI)가 이에 해당하며, 사용자 명령을 커널에 전달하고 실행 결과를 사용자에게 반환하는 역할을 한다.
  3. 시스템 콜(System Call):
    • 응용 프로그램이 운영체제의 서비스를 요청할 때 사용하는 인터페이스로, 함수 형태로 제공된다.
    • 시스템 콜을 통해 응용 프로그램은 파일 작업, 프로세스 생성 등 다양한 운영체제 기능을 활용할 수 있다.
    • 예: 파일 작업, 프로세스 생성, 네트워크 통신.
  4. 디바이스 드라이버(Device Driver):
    • 프린터, 키보드, 디스크 드라이브 등 하드웨어 장치와 운영체제 간의 통신을 가능하게 하는 소프트웨어이다.
    • 드라이버를 통해 운영체제는 다양한 하드웨어 장치를 제어하고, 사용자나 응용 프로그램이 직접 하드웨어에 접근하는 것을 방지하여 시스템의 안정성과 효율성을 높인다.

왜 커널만 메인 메모리에 상주하는가?

커널은 운영체제의 핵심으로, 항상 메모리에 상주해야만 운영체제가 안정적으로 동작할 수 있다. 그 이유는 다음과 같다:

  1. 실시간 처리 필요
    • 커널은 하드웨어 제어, 프로세스 스케줄링, 메모리 관리 등의 작업을 실시간으로 처리해야 한다. 디스크 접근보다 빠른 메모리에 상주하여 즉각적으로 접근할 수 있어야 한다.
  2. 시스템 안정성 확보
    • 커널이 디스크 대신 메모리에 상주함으로써 성능 저하를 방지하고 안정적인 시스템 동작을 보장한다.
  3. 보안 강화
    • 커널은 보호된 메모리 영역에서 실행되므로 외부의 불법 접근과 변경 시도를 차단한다. 이를 통해 시스템 보안을 유지한다.
  4. 운영체제의 핵심 역할 수행
    • 커널은 운영체제의 모든 자원 관리와 중재를 담당하므로, 항상 메모리에 상주하여 다른 모든 구성 요소가 안정적으로 동작하도록 지원한다.

커널의 종류


 

이와 같이 커널은 메모리에 상주하면서 CPU와 직접 통신하며 시스템 자원을 관리하고 명령을 처리한다. 다음 하위에 나오는 운영체제는 주로 커널에 대한 내용이라고 생각하면 된다.

 

 

운영체제(커널)와 CPU 간의 통신

 

커널은 CPU와 직접 통신하며 시스템 자원을 관리하고 프로세스 간 작업을 조정한다. 주요 통신 방식은 다음과 같다.

1. 시스템 호출(System Calls)

그림 출처 : https://hongong.hanbit.co.kr/운영체제란-커널의-개념-응용-프로그램-실행을-위한/

  • 응용 프로그램이 운영체제의 기능을 사용할 수 있도록 하는 인터페이스다. 시스템 호출은 커널 모드에서 실행되며, 커널이 자원 관리를 수행하도록 CPU의 실행 흐름을 제어한다.
  • 예를 들어, 파일을 열거나 네트워크 통신을 하는 등의 작업은 시스템 호출을 통해 이루어진다. 시스템 호출은 CPU의 특권 모드(커널 모드)에서 실행되며, 운영체제(커널)가 직접 자원 관리를 수행할 수 있도록 한다.

2. 인터럽트(Interrupts)

  • 하드웨어 또는 소프트웨어 이벤트가 발생하면 CPU의 현재 작업을 중단하고 해당 이벤트를 처리한다.
  • 인터럽트의 종류는 다음과 같다.
    • 하드웨어 인터럽트(Hardware Interrupt): 키보드 입력, 네트워크 패킷 수신 등 하드웨어 장치에서 발생
    • 소프트웨어 인터럽트(Software Interrupt): 시스템 호출, 예외 처리 등 소프트웨어에서 발생

3. 타이머(Timer)

  • 운영체제는 타이머를 설정하여 일정 시간이 지나면 인터럽트를 발생시킨다.
  • 이를 통해 프로세스 스케줄링을 수행하고, 특정 프로세스가 CPU를 독점하지 않도록 한다.

운영체제의 자원 관리 방법

운영체제(특히 커널)는 CPU와 통신하며 다음과 같은 자원 관리 작업을 수행한다:

  1. 프로세스 관리(Process Management)
    • 프로세스 생성 및 종료: 새로운 프로세스를 생성하고, 종료된 프로세스를 정리한다.
    • 프로세스 스케줄링: 여러 프로세스가 CPU를 공평하게 사용할 수 있도록 스케줄링 알고리즘을 사용하여 CPU 시간을 분배한다. 예를 들어, 라운드 로빈(Round Robin), 우선순위 기반 스케줄링 등이 있다.
    • 문맥 교환(Context Switching): 프로세스 전환 시 현재 프로세스의 상태를 저장하고, 다음 프로세스의 상태를 복원한다.
  2. 메모리 관리(Memory Management)
    • 메모리 할당 및 해제: 프로세스가 필요로 하는 메모리를 할당하고, 사용이 끝난 메모리를 해제한다.
    • 가상 메모리 관리: 실제 물리적 메모리보다 큰 주소 공간을 사용할 수 있도록 가상 메모리를 관리한다. 페이지 테이블(Page Table)을 사용하여 가상 주소를 물리 주소로 매핑한다.
  3. 입출력 관리(I/O Management)
    • 디바이스 드라이버: 각 하드웨어 장치와 통신하는 소프트웨어 구성 요소를 사용하여, 운영체제가 하드웨어를 제어하고 데이터를 주고받는다.
    • 입출력 스케줄링: 여러 입출력 요청을 효율적으로 처리하기 위해 스케줄링 알고리즘을 사용한다.
  4. 파일 시스템 관리(File System Management)
    • 파일 및 디렉토리 관리: 파일 생성, 삭제, 읽기, 쓰기 등의 작업을 수행한다.
    • 파일 권한 및 보안 관리: 파일에 대한 접근 권한을 관리하고, 파일 시스템의 보안을 유지한다.

마무리

운영체제는 컴퓨터 시스템의 자원을 효율적으로 관리하고 사용자와 하드웨어 간의 상호작용을 지원하는 핵심 소프트웨어이다. 운영체제의 핵심인 커널은 항상 메모리에 상주하며, 시스템 자원을 관리하고 CPU와 통신해 실시간 작업을 수행한다. 이를 통해 운영체제는 안정성과 보안을 유지하며, 사용자와 응용 프로그램이 효율적으로 동작할 수 있는 환경을 제공한다.