운영체제의 구조

GwanMtCat·2023년 9월 11일
0

운영체제의 구조

  • 커널과 인터페이스
    • 커널은 프로세스, 메모리, 저장장치 등을 관리하는 운영체제의 핵심적인 기능을 모아 놓은 것
      • 운영체제의 성능은 커널이 좌우한다.
    • 인터페이스는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다.
    • 운영체제는 커널과 인터페이스를 분리하여, 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작이 가능하다.

시스템 호출과 디바이스 드라이버

  • 시스템 호출(system call)
    • 커널이 자신을 보호하기 위해 만든 인터페이스 이다. 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.
    • 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다.
    • 커널이 제공하는 시스템 관련 서비스를 모아 놓은 것으로 함수형태로 제공 된다.
  • 드라이버(driver)
    • 커널과 하드웨어의 인터페이스로 커널은 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 한다. 이 소프트웨어를 디바이스 드라이버라고 부른다.
    • 마우스, 키보드 같은 복잡하지 않은 디바이스 드라이버는 커널에 포함되어 있으나 그래픽카드, 프린터 같이 복잡 디바이스 드라이버는 직접 설치해야 한다.
    • 위의 그림을 보면 시스템 호출은 커널을 전부 덮고 있으나, 드라이버는 아닌데 이는 커널이 제공하는 드라이버도 있고, 하드웨어 제작자가 제공하는 드라이버도 있다는 뜻이다.

커널의 구성

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

커널 구조의 종류

  1. 단일형 구조 커널

  • 초창기의 운영체제 구조 커널의 핵심 기능을 구현하는 모듈들이 구본 없이 하나로 구성되어 있다.

  • 장점

    • 모듈이 거의 분리되지 않았기 때문에 프로그램 main() 에 모든 기능을 넣으면 함수를 호출하는 오버헤드가 없어서 프로그램이 빨라진다.
  • 단점

    • 모든 모듈이 하나로 묶여 있어 버그나 오류를 처리하기 어렵다.
    • 여러 기능이 서로 연걸되어 있어, 상호 의존성이 높아 기능상의 작은 결함이 시스템 전체로 확산 가능하다.
    • 다양한 환경의 시스템에 적용하기 어렵다. 이식성이 낮다.

  1. 계층형 구조 커널

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

  • 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있고, 오류가 발생했을 때 해당 계층만 따로 수정하면 되기 때문에 디버깅하기도 쉽다.

  • 오늘날의 운영체제는 대부분 이 구조로 이루어져 있다.


  1. 마이크로 구조 커널

  • 계층형 구조의 커널에서 사용자의 다양한 요구를 수용하기 위해 계속 계층과 기능을 추가했더니 커널의 크기가 커지고 필요한 하드웨어 용량이 늘어나 커널 소스가 방대해짐에 따라 오류를 잡기 어려웠다.

  • 이러한 계층형 구조의 접근 방식과 반대로 개발된 커널이 마이크로 구조 커널이다.

  • 운영체제는 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공하고 나머지 영역은 사용자 영역에 구현되어 있다.
    - 메모리 관리, 포로세스 간의 동기화 서비스를 커널이 제공, 둘의 동기화 모듈은 프로세스 간 통신 모듈로 연결되어 있다.

  • 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.

  • 많은 컴퓨터에 이식하기 쉽고, 커널이 가벼워 CPu 용량이 작은 시스템에서도 적용이 가능하다.


  1. 가상머신

  • 언어의 호환성이 떨어져 한쪽 운영체제에서 만든 소스코드가 다른 운영체제에서는 작동하지 않는 문제가 있었고, 그러한 호환성 문제를 해결한 것이 바로 자바이다.

  • 자바가 작동하는 원리는 매우 간단한데, 운영체제 위에 가상머신(virtual machine)을 만들고, 그 위에서 응용 프로그램이 동작하는 것이다.

  • 가상머신은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 가상머신을 설치하면 모두 동일한 환경에서 작동하는 것처럼 보인다.

  • 예로 윈도우 운영체제 환경에서 유닉스를 사용하고 싶을 때 유닉스 가상머신을 설치하면 된다.

  • 가상머신을 사용하면 호환성이 높아지지만, 응용 프로그램이 가상머신을 통해서만 작동하기 때문에 느려진다는 단점이 있다.


참조한 책 및 링크

쉽게 배우는 운영체제
https://math-coding.tistory.com/80
https://wonit.tistory.com/80
https://velog.io/@hi4656/%EA%B0%80%EC%83%81-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%99%80-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EA%B0%80-%EC%9D%BC%ED%95%98%EB%8A%94-%EB%B2%95
``
    
 
   
    
    

0개의 댓글