본문 바로가기
개발공부 개발새발/OS

OS ) 운영체제의 구성

by 휴일이 2023. 10. 23.

 

 

 

운영체제는 커널인터페이스로 구성되어 있다.

 

 

 

커널

운영체제의 핵심 기능을 구현한 프로그램.

  • 프로세스 관리, 메모리 관리, 저장장치 관리 등의 기능.
  • 운영체제의 성능은 커널이 좌우한다.

유닉스 계열 커널

  • 빠르고 안정적이다.
  • 사용자 인터페이스는 보잘것 없다.
  • 주로 문자로 명령을 내린다.
    • 셸 sh
  • Mac OS 도 유닉스 커널을 사용한다.

윈도우 계열 커널

  • 윈도우에도 MS-DOS 가 사용했던 문자 기반 인터페이스가 남아있다.
    • 명령 프롬프트 cmd

인터페이스

커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려준다.

시스템 호출

커널이 자신을 보호하기 위해 만든 인터페이스.

  • 커널은 컴퓨터 자원을 보호하기 위해 사용자나 응용 프로그램의 직접 접근을 차단한다.
  • 대신 함수 형태의 시스템 호출 인터페이스를 이용하여 접근해야 한다.
  • 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단.

응용 프로그램 인터페이스 API

응용 프로그램이 자신과 연관된 프로그램을 개발할 수 있도록 제공하는 인터페이스.

  • 예) 구글 맵을 이용해 배달 서비스를 개발하려면 구글이 제공하는 다양한 함수를 사용해야 한다.
    • 이 함수 집합이 API

시스템 개발자용 키트 SDK

프로그램 개발자를 위해 API 및 API 메뉴얼, 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴.

  • 예) 비주얼 스튜디오, 안드로이드 스튜디오.

디바이스 드라이버

커널과 하드웨어의 인터페이스.

  • 주변 장치와 데이터를 주고 받는 표준 방식을 정하고 있다.
    • 그래서 꽂기만 하면 바로 사용 가능.
  • 일반 인터페이스와 달리 커널 제공 드라이버(인터페이스)와 하드웨어 제작자 제공 드라이버도 존재한다.
    • 성능 향상이나 편리성을 위해 표준 외 기능을 수행한다면, 장치 제작자가 디바이스 드라이버를 따로 준비한다.
    • 예 ) 그래픽 카드, 프린터, 타블렛.

커널의 역할

핵심 기능 설명
(주요) 프로세스 관리 프로세스에 CPU를 배분하고 작업에 필요한 제반환경을 제공.
메모리 관리 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 공간을 제공.
입출력 관리 필요한 입력과 출력 서비스를 제공. (키보드, 마우스 같은 주변 장치)
프로세스간 통신 관리 공동 작업을 위한 각 프로세스간 통신 환경을 지원.

커널의 종류

단일형 구조 커널

초창기 운영체제 구조, 커널의 핵심 기능을 구현하는 모듈이 구분없이 하나로만 구성되어 있다. 예) MS-DOS, VMS, 초기 유닉스.

  • 함수를 거의 사용하지 않고 main() 에 모든 기능을 구현한 형태.

장점

  • 모듈이 거의 분리되지 않아 모듈 간의 통신 비용이 줄어든다.
    • 효율적인 운영 가능.

단점

  • 모든 모듈이 하나로 묶여 있어 버그나 오류 처리가 어렵다.
  • 여러 기능이 서로 연결되어 상호 의존성이 높아 기능상의 작은 결함이 시스템 전체로 확산될 수 있다.
  • 단일형 구조는 수정이 어려워 다양한 환경의 시스템에 적용하기 어렵다. 이식성이 낮다.
  • 현대의 운영체제는 매우 크고 복잡하여 완전한 단일형 구조 운영체제를 구현하기 어렵다.

계층형 구조 커널

비슷한 기능을 가진 모듈을 묶어 하나의 계층을 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식.

장점

  • 비슷한 기능을 모아 모듈화해 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있다.
    • 해당 계층만 따로 수정하면 되어 디버깅이 쉽다.
  • 윈도우를 비롯한 오늘날의 운영체제 대부분이 이 구조를 가지고 있다.

마이크로 구조 커널

계층형과는 반대로 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다.

  • 운영체제의 많은 부분이 사용자 영역에 구현되어 있다.
  • 각 모듈은 세분화되어 존재하며, 모듈간의 정보 교환은 프로세스 간 통신으로 이루어진다.
    • 각 모듈은 독립적으로 작동한다.

장점

  • 하나의 모듈이 실패해도 전체 운영체제가 멈추지 않는다.
  • 커널 이식이 쉽고 가벼워 CPU 용량이 작은 시스템에도 적용이 가능하다.
    • 예) 마하 운영체제 → OS X 와 iOS 의 커널.

가상머신 VM

응용 프로그램의 호환성을 위해 운영체제와 응용 프로그램 사이에서 작동하는 프로그램.

  • C 언어는 윈도우처럼 유닉스와 다른 커널을 가진 운영체제와의 호환성이 떨어진다.
    • 한 쪽에서 만든 소스코드가 다른 운영체제에서는 동작하지 않는다.
  • 자바는 JVM을 이용해 가상 머신 위에 응용 프로그램이 동작해 모두 동일한 환경에서 작동한다.

응용

  • 윈도우에서 유닉스를 사용하고 싶을 때.
    • 두 운영체제를 같이 설치한다면 부팅할 때 어떤 운영체제를 사용할지 선택해야 한다.
    • 하지만 유닉스는 가끔만 사용한다면 두 가지를 다 설치하기 좀 부담스럽다.
  • 윈도우 운영체제에 유닉스 가상 머신을 설치해 사용하자!

장점

  • 호환성이 높아진다.

단점

  • 응용 프로그램이 가상머신을 통해서만 작동해 느려진다.
728x90

'개발공부 개발새발 > OS' 카테고리의 다른 글

OS ) 시스템콜, 코루틴, 그리고 이벤트 루프란?  (0) 2024.10.29
OS ) CPU와 메모리  (0) 2023.11.02
OS ) 컴퓨터의 기본 구성  (1) 2023.10.23
OS ) 운영체제의 발전  (1) 2023.10.22
OS ) 운영체제 소개  (0) 2023.10.21