1-3.[os] 운영체제의 구조

커널

  • 프로세스 관리
  • 메모리 관리
  • 저장장치 관리
  • 자동차의 엔진
  • 운영체제의 성능을 좌우

인터페이스

  • 자동차의 계기판
  • 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려준다

image.png

  • 같은 커널이라도 다른 인터페이스를 끼울 수 있다

시스템 호출

  • 커널이 자신을 보호하기 위해 만든 인터페이스
  • 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근

image.png

image.png

a. 직접 접근: 두 응용 프로그램이 데이터 저장하려다 충돌남

b. 시스템 호출을 통한 접근: write() 함수로 데이터 저장 요청

시스템 호출:

  • 커널이 제공하는 시스템 관련 서비스를 모아놓은 것
  • 커널이 제공하는 서비스를 이용하기 위한 인터페이스
  • 응용 프로그램과 커널의 인터페이스
  • ex) print()

API(Application Programming Interface): 응용 프로그램 인터페이스

  • 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스 SDK(System Developer's Kit): 시스템 개발자용 키트
  • (API + API 사용 메뉴얼 + 코드 편집기, 에뮬레이터, 개발용 응용 프로그램) 개발툴
  • ex) 안드로이드 스튜디오

드라이버

  • 커널과 하드웨어의 인터페이스
  • 커널이 모든 하드웨어에 맞춰줄 수 없어
  • 기본 입출력만 제작하고, 하드웨어 제작자가 특성을 반영해 만듦
  • 하드웨어 제작자가 만든 소프트웨어 디바이스
  • 마우스, 키보드는 이미 커널에 포함되어있음
  • 그래픽카드, 프린터기는 사용자가 직접 설치

image.png

  • 커널이 제공하는 드라이버도 있고, 하드웨어 제작자가 제공하는 드라이버도 있다
  • 프로세스 관리 : 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다
  • 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
  • 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
  • 입출력 관리 : 필요한 입력과 출력 서비스를 제공한다.
  • 프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.

단일형 구조 커널:

Monolithic Architecture

  • 초창기 운영체제 구조
  • 커널의 핵심 모듈들이 구분없이 하나로 구성되어있다
  • ex) MS-DOS, VMS, 초기 유닉스
  • main()에 모든 기능을 구현 장점:
  • 모듈 간 통신 비용이 줄어 효율적인 운영 가능

image.png

단점:

  • 모듈이 하나로 묶여있어 오류를 처리하기가 어렵다
  • 모듈간 상호의존성이 높아 작은 결함이 시스템 전체로 확산될 수 있다
  • 이식성이 낮다: 다양한 환경의 시스템에 맞게 수정해 이식하기 어렵다
  • 현대의 운영체제는 복잡해서 단일형으로 구현하기 어렵다

계층형 구조 커널

Layered Architecture

  • 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만듦
  • 계층끼리 통신함
  • 오류 발생 시 해당 계층만 따로 수정

image.png

단점:

  • 계속 계층과 기능 추가 -> 하드웨어 용량↑
  • 커널 소스가 방대해짐 -> 오류잡기 힘듦

마이크로 구조 커널

Micro Architecture

  • 가장 기본적인 기능만 제공
  • 다른 커널에 비해 운영체제의 많은 부분이 사용자 영역에 구현되어 있다
  • 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다
  • 이식하기 쉽고 커널이 가벼워 CPU 용량이 작은 시스템에도 적용 가능

image.png

가상머신

  • 운영체제와 응용 프로그램 사이에서 작동하는 프로그램
  • 가상머신을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하 는 것처럼 보임
  • 하나의 코드만 만들면 여러 운영체제에서 똑같이 실행 가능

image.png

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!