사진과 음악을 좋아하는 개발자 지망생의 블로그

운영체제와 커널 본문

CS/운영체제

운영체제와 커널

devculture309 2024. 12. 17. 12:38
반응형

1. 운영체제(Operating System)

운영체제란?

  • 정의: 하드웨어와 사용자 및 각종 어플리케이션들을 연결해주는 소프트웨어 계층
  • 좁은 의미: 커널 – 운영체제의 핵심 부분으로, 전원 투입 시 메모리에 항상 상주
  • 넓은 의미: 커널을 포함한 다양한 시스템 유틸리티(메모리에 상주하지 않는 프로그램 포함)

 

 

운영체제의 역활

  1. 운영체제 ↔ 하드웨어
    • 자원 관리
      • 성능을 최대화함과 동시에 사용자(또는 어플리케이션) 간 형평성을 고려하여 컴퓨터 시스템의 자원 관리
      • 자원
        • 하드웨어 자원: 프로세서, 기억장치, 입출력 장치
        • 소프트웨어 자원: 프로세스, 파일, 메시징
      • 성능만 추구하면 특별 소프트웨어 및 사용자가 차별받는 상황이 발생할 수 있음
      • 형평성을 고려하여 컴퓨터 시스템의 자원 관리
    • 사용자 및 운영체제 자신의 보호
  2. 편리한 사용자 환경 제공 (운영체제 ↔ 소프트웨어/사용자)
    • 다중 사용자/프로그램들이 독립적으로 수행되는 것처럼 보이게 함
    • 하드웨어의 복잡한 처리를 운영체제가 대신 처리

 

 

운영체제의 분류

  1. 동시 작업 가능 여부
    • 단일 작업: 한 번에 하나의 작업만 처리 (예: MS-DOS)
    • 다중 작업: 여러 작업을 동시에 처리 (예: Windows, UNIX, iOS)
  2. 사용자 수 (동시 접속 가능자 수)
    • 단일 사용자: 한 명의 사용자만 접근 가능 (예: MS-DOS, Windows)
    • 다중 사용자: 여러 사용자가 동시 접속 가능 (예: UNIX, NT 서버)
  3. 처리 방식
    • 일괄 처리 (Batch Processing): 작업을 모아 한꺼번에 처리, 응답 대기 시간 필요 (예: 초기 펀치 카드)
    • 시분할 (Time Sharing): 일정 시간 단위로 자원 분할, 짧은 응답 시간 제공 (예: UNIX)
      • 입력 즉시 출력이 나오는 인터랙티브 방식
      • 사용자에게 빠른 응답 제공, 자원 효율 최대화
    • 실시간 처리 (Real-Time Processing): 정해진 시간 내 작업 완료 보장
      • Hard Real-Time: 미사일, 원자로 등 엄격한 시간 준수 필수
      • Soft Real-Time: 데드라인은 있으나 일정 지연이 허용 (예: 일부 산업 제어 시스템)

 

 

구조

  1. 커널
    • 하드웨어와 직접 소통하면서, 컴퓨터 시스템의 핵심 기능들(CPU, 메모리 관리, 입출력 제어 등)을 수행
    • 저수준 API를 통해 하드웨어와 밀접하게 상호작용함
    • 운영체제의 성능은 커널의 성능에 의해 좌우됨
  2. 인터페이스(Shell, GUI 등)
    • 사용자가 커널에 명령을 전달하고 그 결과를 받을 수 있도록 해줌
  3. 시스템 호출(System Call) 과 디바이스 드라이버(Device Driver)
    • 시스템 호출(System Call)
      • 커널을 보호하기 위해 만든 인터페이스
      • 사용자나 프로그램이 커널에 직접 접근하는 것을 막고, 호출을 통해 커널의 기능을 사용할 수 있도록 함
      • 프로그램은 커널에게 요청만 하고, 커널이 작업을 대신 수행하는 방식
    • 디바이스 드라이버(Device Driver)
      • 커널과 하드웨어 사이의 인터페이스 역활을 하는 소프트웨어
      • 하드웨어 제조업체가 제공하는 소프트웨어로, 커널이 이 드라이버를 사용해 하드웨어를 제어함

 

 

 

2. 커널(Kernel)

정의

  • 운영체제의 핵심이자 하드웨어와 소프트웨어를 연결하는 역할을 하는 소프트웨어
  • 항상 메모리에 상주하여 각 장치(CPU, 메모리, 저장장치 등)를 관리하고 제어함

 

 

기능

  1. 프로세스 관리
    • CPU 자원을 여러 프로그램(프로세스)에게 효율적으로 배분하고, 작업할 환경을 제공
  2. 메모리 관리
    • 프로그램이 사용할 메모리를 관리하고, 실제 메모리보다 더 큰 가상 메모리를 제공
  3. 파일 시스템 관리
    • 데이터를 저장하고, 불러올 수 있는 방법을 제공
  4. 입출력 관리
    • 마우스, 키보드, 프린터 등의 장치와 데이터를 주고받는 과정을 관리함
  5. 프로세스 간 통신 관리
    • 여러 프로그램이 서로 데이터를 주고 받을 수 있는 환경을 제공

 

 

종류

  1. 모노리틱 커널(단일형 커널)
    • 정의
      • 초창기의 구조로 커널에서 제공할 수 있는 다양한 기능을 한 덩어리로 묶은 형태(단일한 커널 공간에 구현)의 커널
    • 장점
      • 모듈들이 분리되어 있지 않기 때문에 모듈 간의 통신 비용이 줄어 성능이 좋다
    • 단점
      • 오류 발생 시 여러 기능들이 상호 의존하기 때문에 작은 결함에도 시스템 전체가 위험해짐
      • 유지보수가 어려움
      • 운영체제가 커지고 복잡해져 구현하기가 매우 어려움
    • 사용하는 운영체제
      • 유닉스, 리눅스, BSD, 윈도 NT 등
  2. 마이크로 커널
    • 정의
      • 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공하고 나머지는 사용자 영역에 구현하는 구조
    • 장점
      • 모듈 크기가 굉장히 작아져서 안정성이 높음
      • 각 모듈이 독립적으로 작동하기 때문에 결함이 발생해도 전체 운영체제가 멈추지 않음
      • 일부 서비스만으로 작은 운영체제를 구성하여 임베디드 시스템에 사용할 수 있음
    • 단점
      • 잦은 통신이 필요하기 때문에 성능 저하 우려가 있다
    • 사용하는 운영체제
      • AmigaOS, Haiku, 심비안 OS 등
  3. 하이브리드 커널
    • 모노리킥 커널과 마이크로 커널의 혼합 형태
반응형