Skip to content

Latest commit

 

History

History
166 lines (120 loc) · 12.6 KB

김라윤.2장 - 운영체제 개요.md

File metadata and controls

166 lines (120 loc) · 12.6 KB

1. 운영체제의 정의

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

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

    -컴퓨터의 전원을 켜면 운영체제는 동시에 실행된다.

    • 하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심함
    • 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용하게 된다.
    • 이때 메모리에 상주하는 운영체제 부분을 커널(Kernel)이라고 하며 좁은 의미의 운영체제라고도 한다.
    • 이에 반해 넓은 의미의 운영체제는 커널뿐 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념 이것을 광의의 운영체제라고도 한다.

운영체제의 기능

운영체제의 역할

하드웨어를 위한 역할

  • 하드웨어 쪽에서는 사용자가 직접 다루기 힘든 각종 하드웨어를 운영체제가 관리하는 역할

사용자를 위한 역할

  • 사용자에게는 편리한 인터페이스를 제공하는 역할

운영체제의 주요 기능

컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공

  • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

컴퓨터 시스템의 자원을 효율적으로 관리

  • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
  • 운영체제를 자원관리자(resource manager)라고 부르기도 한다.
  • 운영체제는 사용자 및 프로그램들 간에 자원이 형평성 있게 분배되도록 하는 균형자 역할도 함께 수행해야 한다.

3. 운영체제의 분류

동시 작업 가능 여부

단일 작업

  • (single tasking) : 한 번에 하나의 작업만 처리 - ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음

다중 작업

  • (multi tasking) : 동시에 두 개 이상의 작업 처리 - ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음

    • CPU가 하나밖에 없어 매 순간 하나의 프로그램만 CPU에서 실행될 수 있더라도
    • CPU의 처리 속도가 워낙 빨라 수 밀리초(ms) 이내의 짧은 시간 규모로
    • 여러 프로그램들이 CPU에서 번갈아 실행되면
    • 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보인다.

-> CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템을 시분할 시스템 이라고 부른다.

사용자의 수

  • 다중 프로그래밍 시스템 : 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템
  • 대화형 시스템 : 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주는 것 같은 시스템 (개개인의 관점)

단일 사용자용 운영체제

  • 한번에 한명의 사용자만이 사용하도록 허용하는 운영체제 - ex) MS-DOS, MS Windows

다중 사용자용 운영체제

  • 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제 - ex) UNIX, NT server

처리 방식

  • 일괄 처리 (batch processing) - 작업 요청의 일정량 모아서 한꺼번에 처리 - 작업이 완전 종료될 때까지 기다려야 함 - ex) 초기 Punch Card 처리 시스템

  • 시분할 (time sharing) - 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할 하여 사용 - 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐 ex) UNIX - interactive한 방식

  • 실시간 (Realtime OS) - 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS - ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어

  • 실시간 시스템의 개념 확장

    • Hard realtime system (경성 실시간 시스템)
    • Soft realtime system (연성 실시간 시스템)

4. 운영체제의 예

  • MS 윈도우
  • 유닉스

MS 윈도우

  • 이전에 개발한 MS-DOS와 윈도우 3.1등을 한층 발전시킨, 개인용 컴퓨터를 위한 운영체제

  • 하지만 운영체제가 아닌 DOC 위에서 수행되는 프로그램이라는 한계는 여전하여, 컴퓨터 시스템을 완전히 제어할 수 없다는 점과 불안정하다는 등의 문제점이 있다.

  • 이에 DOS라는 운영체제 위에서 수행되는 프로그램이 아니라 그 자체가 하나의 온전한 운영체제가 되도록 제작한 것이 윈도우95.

  • 그 이후 윈도우98 을 거쳐 윈도우XP, 윈도우Vista, 윈도우7, 윈도우10 에 이르게 되었다.

  • MS윈도우의 큰 특징은 시스템에 새로운 하드웨어를 장착하면 운영체제가 자동으로 하드웨어를 감지하여 그에 맞게 설정된다 = 플러그 앤 플레이

유닉스

  • 유닉스는 프로그램 개발 환경을 위해 설계된 운영체제로서 이식성(portability)이 좋다.

  • 운영체제 커널의 크기가 작다.

  • 소스 코드가 공개되었다.

    • 소프트 웨어의 이식성 : 해당 소프트웨어를 다른 기종의 기계로 옮기는 것이 얼마나 용이한가를 나타내는 지표로서, 유닉스는 이러한 이식성이 높은 최초의 운영체제.
  • 유닉스는 대부분의 코드가 C언어로 작성되었다.

MS윈도우가 개인용 컴퓨터를 위한 운영체제로서 누구든지 손쉽게 사용할 수 있도록 하는 편리한 인터페이스와 각종 기능들을 특징으로 한다면, 유닉스는 오랜 전통을 지닌 운영체제로서 대형 컴퓨터 및 전문적인 목적의 컴퓨터에 사용되기에 적합하다.

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

하드웨어 자원

  • CPU와 메모리를 비롯해 주변장치 또는 입출력 장치라 불리는 장치들로 구성.

  • CPU : 통상적으로 컴퓨터 한대에 하나가 장착되기 때문에 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리되어야 한다.

  • 메모리 : 역시 시스템 내에 한정된 용량만 존재하기 때문에 서로 다른 다수의 프로세스들이 나누어 쓸 수 있도록 해야 한다.

  • CPU와 메모리는 전원이 꺼지면 처리 중이던 정보가 모두 지워지기 때문에 전원이 나가도 기억해야 하는 부분을 입출력 장치 중 한 종류인 보조기억장치에 파일 형태로 저장한다.

  • 보조 기억 장치로 사용되는 대표적인 매체로는 하드디스크가 있으며, 이외에도 키보드, 모니터 등이 입출력 장치로 운영체제의 관리 대상에 포함 된다.

CPU 관리하는 방법

  • CPU가 하나밖에 없는 가장 기본적인 컴퓨터 구조에서도 프로세스는 여러 개가 동시에 수행될 수 있다.

  • CPU 스케줄링 : 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일이 필요하다.

  • CPU 스케줄링의 목표는 CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.

    • 대표적으론 선입선출, 라운드 로빈, 우선순위 기법 등이 있다.

      • 선입 선출 기법 : CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식
      • 라운드 로빈 기법 : CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한
      • 우선순위 기법 : CPU 사용을 위해 대기 중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당한다.

메모리

  • 메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다.

  • 메모리 관리를 위해 운영체제는 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는지를 파악하여 이를 유지하게 되는데, 이러한 정보는 주소를 통해 관리된다.

  • 운영체제는 각 프로세스가 자신의 메모리 영역에만 접근할 수 있도록 관리해야 한다.

  • 물리적 메모리를 관리하는 방식에는 고정분할 방식, 가변분할 방식, 가상메모리 방식 등이 있다.

    • 고정분할 방식 : 물리적 메모리를 몇 개의 분할로 미리 나누어 관리한다. 단점) 융통성이 없다.

      • 분할이 고정적이기 때문에 분할의 크기보다 작은 프로그램이 적재되느 경우 해당 분할 내에 남는 영역이 발생하게 된다.
      • 이것을 내부조각이라고 하는데, 내부조각은 해당 분할에 올라온 프로그램에 의해서도 사용되지 않고, 다른 프로그램에도 할당될 수 없으므로 비효율적으로 낭비되는 공간이라 할 수 있다.
    • 가변분할 방식 : 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식

      • 분할의 크기와 개수가 동적으로 변하므로 기술적 관리 기법이 필요하다.
      • 이 방식을 사용하게 되면 고정분할 방식에서 발생하는 내부조각은 발생하지 않지만 외부조각이 발생할 수 있다.
        • 외부조각 : 프로그램에 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역
    • 가상메모리 기법 : 현대의 범용 컴퓨터 환경에서 가장 널리 사용되는 메모리 기법으로 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다.

      • 실행될 수 있는 프로그램의 크기는 가상메모리의 크기에 의해 결정된다.
  • 모든 프로그램은 물리적 메모리와는 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 가진다.

  • 운영체제는 이 가상메모리 주소를 물리적 메모리 주소로 매핑(mapping) 하여 주소를 변환시킨 후 프로그램을 물리적 메모리에 올린다.

  • 스왑영역(swap area) : 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취한다. 이때 사용되는 보조기억장치의 영역

  • 페이징(pageing) 기법 : 프로그램을 구성하는 가상 메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑영역에 일부분씩 저장되며 동일한 단위로 저장되는 기법

주변장치 및 입출력 장치는 CPU나 메모리와 달리 인터럽트(interrupt)라는 메커니즘을 통해 관리된다.

  • 인터럽트 : 주변장치들은 CPU의 서비스가 필요로 할 때 신호를 발생시켜 서비스를 요청하는데 이때의 신호를 인터럽트라 칭한다.

    • CPU는 CPU스케줄링에 따라 작업을 수행하다 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트의 요청 서비스를 수행한다.
    • 운영체제는 인터럽트를 처리한 후 원래 수행하던 작업으로 돌아오기 위해 인터럽트 처리 직전에 수행 중이던 작업의 상태를 저장해준다.
    • 인터럽트는 요청하는 장치와 발행 상황에 따라 다양한 종류가 있기 때문에 운영체제는 종류별 인터럽트 처리루틴을 가지고 있다. 인터럽트 처리루틴이란 인터럽트가 발행했을 때 해줘야 할 작업을 정의한 프로그램 코드인다.
    • 인터럽트 처리루틴은 운영체제 커널 내에 존재하는 코드로 CPU스케줄링, 메모리 관리루틴 등 다양한 기능을 위한 커널 코드의 일부분이라 할 수 있다.
  • _컨트롤러(comtroller, 제어기) : 주변장치는 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU

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