02. 운영체제 구조

YeJi Kim·2023년 1월 13일
0

운영체제

목록 보기
2/7

사용자 인터페이스

운영체제의 세 가지 사용자 인터페이스

  • CLI: 명령어 라인 인터페이스
  • GUI: 그래픽 유저 인터페이스
  • Batch Interface: 일괄처리 인터페이스


운영체제 기능

  • 사용자에게 도움을 주기 위해 (사용자 관점)
    • 사용자 인터페이스
    • 프로그램 수행
    • 입출력 연산
    • 파일 시스템 조작
    • 통신 (공유 메모리, 메시지 전달 기법)
    • 오류 탐지
  • 시스템 자체의 효율적인 동작을 보장하기 위해 (시스템 관점)
    • 자원 할당 (효율적인 시스템 사용을 위해 자원을 할당하는 다양한 루틴이 존재)
    • 기록 작성 (logging)
    • 보호와 보안
      • 한 프로세스가 다른 프로세스나 운영체제를 방해해서는 안된다.

운영체제 구조

운영체제는 규모가 매우 크고 복잡한 소프트웨어이다.
따라서, 설계 시 소프트웨어의 구조를 신중히 고려해야 한다.

  • Layering

    • OS의 복잡도를 낮추기 위한 방안
    • 하나의 Layer는 인접한 Layer와만 통신
    • 설계의 복잡도를 낮출 수는 있으나(서로 다른 layer끼리 끼치는 영향이 줄어듬), 그로 인해 오버헤드가 발생한다. (C에 접근하기 위해서 B에도 접근해야 함)
    • 각각의 Layer는 다른 Layer와 독립적이라는 장점을 갖는다.
    • 불완전한 Layering이 만들어 낼 수 있는 치명적인 단점이 존재한다.
  • 시스템 콜: User Mode에서 Kernel Mode로 진입하기 위한 통로. Kernel에서 제공하는 보호된 서비스(하드웨어에 접근하는 서비스)를 이용하기 위해 필요

  • 시스템 콜의 유형

    1. 프로세스 제어
      실행 중인 프로그램을 정상적으로(end()) 또는 비정상적으로(abort()) 멈출 수 있어야 한다.
      만약 프로그램에 문제가 발생해 오류 트랩을 유발할 경우, 메모리 덤프가 일어나고 오류메시지가 생성된다.
    2. 파일 조작
    3. 장치 관리
    4. 정보 유지
    5. 통신
  • Kernel 구조

    • Monolithic Kernel
      • Kernel의 모든 서비스가 같은 주소 공간에 위치
      • 어플리케이션은 자신의 줏 공간에 커널 코드 영역을 매핑하여 커널 서비스를 이용
      • 하드웨어 계층에 관한 단일 인터페이스 제공
      • 장점
        • 어플리케이션과 모든 커널 서비스가 같은 주소 공간에 위치하기 때문에, 시스템 콜 및 커널 서비스 간의 데이터 전달 시 오버헤드가 적음 (하드웨어에 접근하기 위해서 한번의 system call만으로도 가능)
      • 단점
        • 모든 서비스 모듈이 하나의 바이너리로 이루어져 있기 때문에 일부분의 수정이 전체에 영향을 미침
        • 각 모듈이 유기적으로 연결되어 있기 때문에 커널의 크기가 커질수록 유지 및 보수가 어려움
        • 한 모듈의 버그가 시스템 전체에 영향을 끼침
    • Micro Kernel
      • 커널 서비스를 기능에 따라 모듈화하여 각각 독립된 주소 공간에서 실행
      • 이러한 모듈을 서버라 하며, 서버들은 독립된 프로세스로 구현
      • 장점
        • 각 커널 서비스가 따로 구현되어 있기 때문에 서로 간의 의존성이 낮다.
        • 커널 서비스 서버의 간단한 시작/종료가 가능하다. (불필요한 서비스의 서버는 종료)
        • 이론적으로 micro kernel이 monolithic보다 안정적이다.
      • 단점
        • Monolithic kernel보다 낮은 성능을 보인다. (독립된 서버들 간의 통신 및 Context Switching이 발생하기 때문)
    • Hypervisor
      • 가상화된 컴퓨터 하드웨어 자원을 제공하기 위한 관리 계층
      • 게스트 OS와 하드웨어 사이에 위치
      • 각 게스트 OS들은 각각 서로 다른 가상 머신에서 수행되며, 서로의 존재를 알지 못한다. (하드웨어에 대한 접근은 하이퍼바이저에게 할당 받은 자원에 대해서만 수행)
      • 하이퍼바이저는 각 게스트 OS 간의 CPU, 메모리 등 시스템 자원을 분배하는 등 최소한의 역할을 수행
      • 장점
        • 하나의 물리 컴퓨터에서 여러 종류의 게스트 OS 운용이 가능
      • 단점
        • 하드웨어를 직접적으로 사용하는 다른 운영체제에 비해 성능이 떨어진다.
  • 운영체제 설계 방식 요약

    • monolithic 운영체제
      • 모놀리식 운영체제는 구조가 없다. 모든 기능은 하나의 주소 공간에서 실행되는 단일 정적 바이너리 파일로 제공된다. 이러한 시스템을 수정하기는 어렵지만 주요 이점은 효율성이다.
    • 계층화된 운영체제
      • 계층화된 운영체제는 여러 개의 개별 층으로 나뉜다. 여기서 하위층은 하드웨어 인터페이스이고 최상위층은 사용자 인터페이스이다. 계층화된 소프트웨어 시스템이 어느정도 성공을 거두었지만(ex. 네트워크 7계층) 이 방법은 일반적으로 성능 문제로 인해 운영체제를 설계하는 데 적합하지 않다.
    • 마이크로 커널
      • 마이크로커널 운영체제는 최소한의 커널을 사용한다. 대부분의 서비스는 사용자 수준 응용프로그램으로 실행된다. 메시지 전달을 통해 통신이 이루어진다.
    • 모듈식 운영체제
      • 모듈식 운영체제는 실행 시간 중에 적재 및 제거 할 수 있는 모듈을 통해 운영체제 서비스를 제공한다.
      • 전체적으로 계층적 구조와 유사하다. 하지만 모듈에서 다른 임의의 모듈을 호출할 수 있다는 점에서 계층 구조보다 훨씬 유연하다.(계층 구조는 자신의 하위 계층만 호출 가능)
      • 그리고 마이크로커널과도 유사하다(중심 모듈은 핵심기능만을 가지고 있고, 다른 모듈의 적재방법과 모듈들과 어떻게 통신하는지 안다는 점에서). 하지만 모듈간의 통신을 위해 메시지 전달 시스템 콜을 호출할 필요가 없기 때문에 더 효율적이다.
    • 하이브리드 시스템
      • 엄격하게 정의된 하나의 구조를 선택한 운영체제는 없다. 대신에 다양한 구조를 결합하여 성능, 보안 및 편리성 문제를 해결하려는 혼용 구조로 구성된다.
      • 현대의 많은 운영체제는 모놀리식 커널과 모듈의 조합을 사용하여 하이브리드 시스템으로 구성된다.
  • 운영체제

    • 멀티 프로그래밍: 여러 프로그램을 메모리에 로드해 두고 한 프로세스가 대기 상태가 되면 다른 프로세스의 작업을 수행하는 시스템
    • 멀티 태스킹: 프로세스마다 작업 시간을 정해두고 번갈아가며 작업하는 방식. 프로세스들이 빠르게 번갈아가며 메모리를 사용하면 사용자 입장에서는 마치 동시에 작동하는 것처럼 보인다.
    • 듀얼 모드: 이중 모드 방식을 사용하면 나쁜 의도를 가진 사용자로부터 운영체제, 하드웨어를 비롯한 시스템과 사용자를 보호할 수 있다.
      • 커널 모드 (하드웨어의 모드 비트가 0)
      • 유저 모드 (하드웨어의 모드 비트가 1)

[참고자료]
혼자 공부하는 컴퓨터구조+운영체제(저자: 강민철, 출판사: 한빛미디어)

profile
이전의 기록들 👉 https://blog.naver.com/reviewerkyj

0개의 댓글