[OS]운영체제의 개요

Updated:

운영체제의 개요

1. 운영체제란

사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층으로, 컴퓨터는 운영체제가 없으면 고철덩이나 다름 없으며 이를 동작하기 위한 기본적인 소프트웨어이다.

  • 커널: 운영체제 중 핵심적으로 필요한 부분만이 메모리에 상주하는 부분이다. 좁은 의미의 운영체제라고도 한다. 이에 반에 넓은 의미의 운영체제는 커널뿐 아니라 각종 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념이다. (보통은 운영체제라고 하면 커널을 말하게 된다.)

2. 운영체제의 기능

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

3. 운영체제의 분류

  • 단일 작업용 운영체제: 한번에 하나의 프로그램만 실행시킬 수 있는 운영체제이다.
  • 다중 작업용 운영체제: 동시에 두개 이상의 프로그램을 처리할 수 있는 운영체제이다.

  • 시분할 시스템: CPU 의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템
  • 다중 프로그래밍 시스템: 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템. 사용자 개개인의 관점에서는 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주기 때문에 대화형 시스템(interative system)이라고도 부른다.
  • 다중처리기 시스템: 하나의 컴퓨터 안에 CPU 가 여럿 설치된 시스템

  • 단일 사용자용 운영체제: 한 번에 한 명의 사용자만이 사용하도록 허용하는 운영체제
  • 다중 사용자용 운영체제: 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제

  • 일괄처리 방식: 요청된 작업을 일정량씩 모아 한꺼번에 처리하는 방식이다. 사용자 입장에서는 응답시간이 걸리는 단점이 있다.
  • 시분할 방식: 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식이다. 시분할 방식은 대화형 시스템이다.
  • 실시간 운영체제: 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용된다.
    • 경성 실시간 시스템: 주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래할 가능성이 있는 시스템.
    • 연성 실시간 시스템: 멀티미디어 스트리밍 시스템과 같이 데이터가 정해진 단위로 전달되어야 올바른 기능을 수행할 수 있는 시스템.

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

운영체제에서의 자원은 하트웨어 자원과 소프트웨어 자원으로 나뉜다.

  • CPU 스케줄링: 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일
    • CPU 스케줄링의 목표: CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는것.

    • CPU 스케줄링 기법

      • 선입선출(First Come First Served)
        CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식이다. 먼저온 프로세스가 작업을 완료할 때까지 다른 프로세스들은 CPU를 사용할 수 없다.
      • 라운드 로빈(Round Robin)
        CPU를 한번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한한다. 적어도 긴 작업을 수행하는 프로세스 때문에 짧은 작업을 가진 프로세스들이 오래 기다리는 상황은 피할 수 있다.
      • 우선순위(Priority)
        대기중인 프로세스들에게 우선순위를 부여하고 우선순위가 높은 프로세스에게 CPU를 먼저 할당한다. 지나치게 오래 기다리는 프로세스가 발생하지 않도록, 기다린 시간에 비례하여 우선순위를 점차 높여주는 방안도 활용될 수 있다.
  • 메모리
    • 다수의 사용자 프로그램이 동시에 메모리에 올라간 경우 서로 다른 프로세스의 영역을 침범하지 않도록 보안을 유지하는 역할도 운영체제의 몫이라고 할 수 있다.
    • 물리적 메모리를 관리하는 방식
      • 고정분할(fixed partition)
        물리적 메모리를 몇개의 분할로 미리 나누어 관리한다. 메모리에 동시 적재되는 최대 프로그램의 수가 분할 갯수로 한정된다. 분할의 크기보다 큰 프로그램은 적재가 불가능하다. 또한 내부조각(inernal fragmentation)이 생길수 있다. 내부 조각이란 해당 분할에 올라온 프로그램에 의해서도 사용되지 않고, 다른 프로그램에도 할당될 수 없으므로 비효율적으로 낭비되는 공간이다.
      • 가변분할(variable partition)
        매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식이다. 분할의 크기 때문에 큰 프로그램의 실행이 제한되는 문제는 없다. 그러나 물리적 메모리의 크기보다 더 큰 프로그램의 실행은 여전히 불가능하다. 분할의 크기와 갯수가 동적으로 변하므로 기술적 관리가 필요하다. 내부조각은 발생하지 않지만 외부 조각(external fragmentation)이 발생할 수 있다. 외부조각이란 프로그램에 할당되지는 않지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역이다.
    • 가상 메모리(virtual memory)
      물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다. 이때 실행될 수 있는 프로그램의 크기는 가상 메모리의 크기에 의해 결정된다. 모든 프로그램은 가상 메모리 주소를 갖는다. 운영체제는 이 가상 메모리의 주소를 물리적 메모리 주소로 매핑(mapping)하는 기술을 이용해 주소를 변환시킨 후 프로그램을 물리적 메모리에 올리게 된다.
      • 스왑 영역(swap area)
        프로그램의 전체 크기가 2G byte 일지라도 전체가 항상 동시에 사용되는 것이 아니다. 그러므로 현재 사용되는 부분만 메모리에 올리고, 나머지는 하드 디스크와 같은 보조 기억장치에 저장해 두었다가 필요할 때 적재하는 방식을 취한다. 이때 사용되는 영역을 스왑 영역이라 한다.
      • 페이징(paging) 기법
        프로그램을 구성하는 가상 메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다. 이렇게 동일한 단위로 메모리를 나누는 기법이다.
    • 인터럽트(interrupt) : 주변 장치들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청하는데 이때 발생시키는 신호이다. 인터럽트 처리 완료 후에는 원래 하던 일을 계속 한다.

    • 인터럽트 처리루틴: 인터럽트가 발생했을 때 해 주어야 할 작업을 정의한 프로그램 코드이다. 인터럽트가 발생하면 운영체제는 해당하는 인터럽트 처리루틴을 찾아서 정의된 코드에 따라 일을 수행한다.

    • 컨트롤러(controller): 주변 장치들은 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU를 가지고 있다. 이를 ‘컨트롤러’라고 한다. 컨트롤러는 해당 장치에 대한 업무를 처리하고, 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.



참고

  • 서적 ‘운영체제와 정보기술의 원리’

Categories:

Updated:

Leave a comment