[운영체제와 정보기술의 원리] 2. 운영체제의 개요

'운영체제와 정보기술의 원리' 스터디를 진행하며 정리한 내용이다.


1. 운영체제의 정의

  • 운영체제란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어

    Untitled (67)

    • 운영체제에 시스템이라는 용어가 사용된 것은 하드웨어가 운영체제와 한 몸이 되어야만 사용자에게 쓰일 수 있는 진정한 컴퓨터 시스템이 되기 때문.
    • 사용자 입장에서는 하드웨어 자체를 다룬다는 것이 쉽지 않으므로, 하드웨어 위에 기본적으로 운영체제를 탑재해 전원을 켰을 때 손쉽게 사용할 수 있는 상태가 되도록 하는 것.
  • 운영체제도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라감

    • 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용하게 됨.

      • 메모리에 상주하는 부분을 커널(kernel)이라고 부름. 좁은 의미의 운영체제. 핵심적인 부분을 뜻함.
      • 넓은 의미의 운영체제는 커널뿐 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념. ex) MS 윈도우 환경에서 파일을 복사하는 프로그램 등

2. 운영체제의 기능

  • 운영체제의 두 가지 주요 기능은 컴퓨터 시스템 내의 자원(resource)을 효율적으로 관리하는 것과 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것.

    • 두 기능 중 중요한 핵심 기능은 컴퓨터 시스템 내의 자원을 효율적으로 관리하는 것. 그래서 운영체제를 자원관리자라고 부르기도 한다.
    • 운영체제는 사용자 및 프로그램들 간에 자원이 형평성 있게 분배되도록 하는 균형자 역할도 함께 수행해야함.
    • 효율성 + 형평성
  • 이밖에도 사용자와 운영체제 자신을 보호하는 역할을 담당함.

3. 운영체제의 분류

  • 운영체제는 동시 작업을 지원하는지의 여부에 따라 단일작업(single tasking)용 운영체제와 다중작업(multi tasking)용 운영체제로 나누어볼 수 있다.

    • 단일작업용 운영체제는 한 번에 하나의 프로그램만 실행시킬 수 있는 운영체제. 초창기 운영체제는 대개 단일작업용 운영체제에 해당. ex) 도스(Disk Operating System: DOS)
    • 최근에는 대부분의 운영체제가 동시에 2개 이상의 프로그램을 처리할 수 있는 다중작업을 지원함. ex) MS 윈도우, 유닉스 환경 등
  • 운영체제가 다중작업을 처리할 때에는 여러 프로그램이 CPU와 메모리를 공유하게 됨.

    • 여러 프로그램들이 CPU에 번갈아 실행되면 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보임.
    • CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(time sharing system)이라고 부름.
  • 메모리 공간을 분할하여 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템을 다중 프로그래밍 시스템(multi-programming system)이라고 부른다.
  • 다중작업용 운영체제의 경우 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주는데 이를 대화형 시스템(interactive system)이라고도 부름.
  • 다중처리기 시스템(multi-processor system)은 하나의 컴퓨터 안에 CPU가 여러 개 설치된 경우를 뜻함.
  • 다중 사용자에 대한 동시 지원 여부

    • 한 번에 한명의 사용자만이 사용하도록 허용하는 운영체제를 단일 사용자용 운영체제

      • DOS(단일작업), MS 윈도우(다중작업) 등
    • 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제를 다중 사용자용 운영체제

      • 이메일 서버나 웹서버 등 흔히 서버라고 부르는 컴퓨터.
  • 작업을 처리하는 방식에 따라.

    • 일괄처리(batch processing) 방식

      • 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식
      • 처리해야 할 작업들을 모아 일정량이 쌓이면 일괄적으로 처리하고, 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있음.
      • 사용자 입장에서는 응답시간이 길다는 단점이 있음.
      • ex) 펀치 카드(punch card) 처리 시스템
    • 시분할 방식

      • 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식.
      • 사용자들은 일괄처리 방식에 비해 짧은 응답시간을 갖게 된다.
      • 사용자 요청에 대한 결과를 곧바로 얻을 수 있는 시스템을 대화형 시스템이라고 표현하며, 이는 시분할 방식의 대표적인 특징.
    • 실시간(real time) 운영체제

      • 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용.
      • ex) 원자로, 공장 제어 시스템, 미사일 제어 시스템 등
      • 경성 실시간 시스템(hard realtime system) - 주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래할 가능성이 있는 로켓, 원자로 제어 시스템 등을 말함.
      • 연성 실시간 시스템(soft realtime system) - 멀티미디어 스트리밍 시스템과 같이 데이터가 정해진 시간 단위로 전달되어야 올바른 기능을 수행할 수 있는 시스템.

4. 운영체제의 예

  • MS 윈도우

    • 마이크로소프트에서 이전에 개발한 MS-DOS와 윈도우 3.1 등을 한층 발전시킨, 개인용 컴퓨터를 위한 운영체제
    • 윈도우 XP부터 인터페이스 측면에서 그래픽 환경과 아이콘 방식을 기본적으로 채택
    • 시스템에 새로운 하드웨어를 장착하면 운영체제가 자동으로 그 하드웨어를 감지하여 그에 맞게 설정되는 기능인 플러그 앤 플레이(plug and play) 제공.
  • 유닉스

    • 프로그램 개발 환경을 위해 설계된 운영체제로서 이식성(portability)이 좋고, 운영체제 커널의 크기가 작으며, 소스 코드(source code)가 공개되었다는 점 등으로 인해 학계를 바탕으로 많은 연구와 함께 그 사용이 확대되어 이제는 가장 널리 사용되는 운영체제 중 하나로 자리 잡음.
    • 리눅스(Linux)의 등장으로 대형 서버뿐 아니라 개인용 컴퓨터에서도 유닉스를 널리 사용할 수 있게 됨.

5. 운영체제의 자원 관리 기능

  • 운영체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것.
  • 자원은 하드웨어 자원과 소프트웨어 자원으로 나뉨

    • 하드웨어 자원 - CPU와 메모리(memory)를 비롯해 주변장치 또는 입출력 장치라 불리는 장치들로 구성됨.
  • CPU 관리하는 방법
  • CPU가 하나밖에 없는 가장 기본적인 컴퓨터 구조에서도 여러 개의 프로세스가 동시에 수행될 수 있으므로 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일이 필요함.

    • 이를 CPU 스케줄링(CPU scheduling) 이라고 한다.
    • CPU 스케줄링의 목표는 CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것.
    • 선입선출 기법(First Come First Served)

      • CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식.
      • CPU 자체의 효율적인 사용 측면에서는 문제가 없지만 전체 시스템 입장에서는 비효율적인 결과를 초래할 가능성이 있다.
    • 라운드 로빈 기법(Round Robin)

      • CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한함.
      • 일반적으로 1회 할당시간은 밀리초 단위를 사용해 다수의 사용자가 동시에 접속할 때에도 각자 1초 이하의 응답시간을 보장받을 수 있게 된다.
    • 우선순위 스케줄링(priority)

      • CPU 사용을 위해 대기 중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당한다.
      • 상대적으로 더 중요한 프로세스의 우선순위를 높게 하여 CPU를 먼저 획득할 수 있도록 한다.
      • 지나치게 오래 기다리는 프로세스가 발생하지 않도록, 기다린 시간이 늘어날수록 우선순위를 점차 높여주는 방안도 활용될 수 있음
  • 중요 관리 대상으로 메모리도 있다.
  • 메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치로 한정된 메모리 공간에 여러 프로그램을 수용하려면 효율적인 관리 메커니즘이 필요함.
  • 메모리의 어떤 부분이 어떤 프로그램에 의해 사용되고 있는지를 파악하여 이를 유지하게 되는데, 이러한 정보는 주소(address)를 통해 관리됨.
  • 프로그램에 메모리가 필요할 때 할당하고, 더 이상 필요하지 않을 때 회수하는데 이를 잘 판단해 전체 메모리 공간이 효율적으로 사용될 수 있도록 해야 하며, 각 프로세스가 자신의 메모리 영역에만 접근할 수 있도록 관리해야 함.

    • 고정분할 방식(fixed partition)

      • 물리적 메모리를 몇 개의 분할로 미리 나누어 관리. 나뉜 분할에는 하나의 프로그램이 적재될 수 있음.
      • 융통성이 없다. 최대 프로그램의 수가 분할 개수로 한정되어 있고 분할의 크기보다 큰 프로그램은 적재가 불가능.
      • 효율적인 사용 측면에서 바람직하지 않음. 분할의 크기보다 작은 프로그램이 적재될 경우 내부조각(internal fragmentation)이라는 비효율적으로 낭비되는 공간이 생김.
    • 가변분할 방식(variable partition)

      • 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식
      • 물리적 메모리의 크기보다 더 큰 프로그램의 실행은 여전히 불가능.
      • 프로그램에는 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역인 외부조각(external fragmentation)이 발생할 수 있다.
    • 가상메모리 기법(virtual memory)

      • 현대의 범용 컴퓨터 환경에서 가장 널리 사용되는 메모리 관리 기법
      • 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원함.
      • 가상메모리 기법에서는 물리적 메모리의 크기와 상관없이, 사용할 수 있는 메모리의 크기가 충분히 크다고 가정하고 프로그램을 개발할 수 있음.

        • 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취함.
      • 동일한 단위로 메모리를 나누는 기법을 페이징(paging) 기법이라고 함.
  • 주변장치 및 입출력 장치
  • CPU나 메모리와 달리 인터럽트(interrupt)라는 메커니즘을 통해 관리가 이루어진다.
  • 주변장치들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청함. 이때 발생시키는 신호를 인터럽트라고 한다.
  • CPU는 작업을 수행하다 인터럽트가 발생하면 하던 일을 멈추고 인터럽트에 의한 요청 서비스를 수행한다.
  • ex) 키보드 입력
  • 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있기 때문에 운영체제는 인터럽트의 종류마다 서로 다른 인터럽트 처리루틴을 가지고 있다.

    • 이는 운영체제 커널 내에 존재하는 코드.
    • 인터럽트가 발생하면 운영체제는 해당하는 인터럽트 처리루틴을 찾아서 정의된 코드에 따라 일을 수행하게 된다.
  • 주변장치들은 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU인 컨트롤러(controller)를 가지고 있음.

    • 컨트롤러는 해당 장치에 대한 업무를 처리하고, 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.