1 minute read

운영체제의 구조

크게 인터페이스와 커널로 나뉨

커널과 인터페이스를 분리하여 같은 커널에도 다른 인터페이스를 가진 형태로 제작할 수 있음

- 커널과 인터페이스
    - 커널

        프로세스 관리, 메모리 관리, 저장장치 관리, 파일 시스템 관리, 입출력 관리, 프로세스 간 통신(공동 작업을 위한 각 프로세스 간 통신 환경, Inter-Process-Communication, IPC)과 같은 운영체제의 핵심적인 기능

    - 인터페이스

        커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할

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

    커널 내부에 있음

    - 시스템 호출

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

        커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근 차단

        자원 이용 시 시스템 호출이라는 인터페이스 이용하여 접근

        커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공됨

        - 직접 접근

            사용자가 직접 컴퓨터 자원에 접근하는 작업 방식

            사용자가 모든 것을 처리해야 함

            사용자나 프로그램에 의해 운영체제가 망가질 수 있음

        - 시스템 호출을 통한 접근

            누군가에게 요청하여 작업의 결과만 받는 방식

            사용자나 프로그램이 하드웨어에 직접 접근하지 못하게 막아서 컴퓨터 자원 보호

            커널이 제공하는 함수를 사용하여 데이터에 접근 및 접근

            - API 와 SDK
                - API

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

                - SDK

                    프로그램 개발자를 위해 API, 메뉴얼, 코드 편집기 등을 한대 묶어서 배포하는 개발 툴

    - 드라이버

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

        커널의 입출력의 기본적인 부분만 제작하고 하드웨어의 특성을 반영한 소프트웨어인 드라이브를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 함

        하드웨어는 커널과 직접 연결되기도 하고 드라이버를 통해 연결되기도 함

- 커널의 구성

    커널의 기능을 어떻게 구현하는가에 따라 구분됨

    - 단일형 구조 커널

        핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성됨

        - 장점

            모듈이 거의 분리되지 않아 모듈 간의 통신 비용 줄어듦

        - 단점

            유지보수 힘듦

            다양한 환경의 시스템에 적용하기 힘듦

            현대의 운영체제는 매우 크고 복잡해 구현하기 힘듦

    - 계층형 구조 커널

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

        유지보수 쉬움

    - 마이크로 구조 커널

        프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등의 가장 기본적인 기능만 제공

        다른 부분들은 사용자 영역에 구현됨

        메모리 관리와 프로세스 간의 동기화 서비스 제공하며 메모리 관리자와 동기화 모듈은 프로세스 간 통신 모듈로 연결됨

        각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신 이용하여 이루어 짐

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

- 가상 머신

    운영체제 위에 가상머신을 만들고 그 위에서 응용 프로그램이 작동하게 하는 것

    하나의 코드로 여러 운영체제에서 똑같이 실행할 수 있음

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