Post

[운영체제-양희재 교수님]3강 고등운영체제, 인터럽트 기반 운영체제

경성대학교 양희재 교수님의 운영체제 3강

고등 운영체제

  • 일반적인 OS는 하나의 CPU와 메모리를 다룬다.

다중 프로세서 시스템(Multiprocessor system)

  • 하나의 메모리에 여러 개의 CPU(processor) 연결
  • 병렬적으로 연결되어 있으므로 병렬 시스템(parallel system)이라고도 한다.
  • CPU가 메모리에 직접 연결되어 있으므로 강결합 시스템(tightly-coupled system)이라고도 한다.
  • 메모리에 올라간 프로그램을 어떤 CPU가 처리해야 하는지 결정해야 하므로 하나의 CPU를 위한 OS가 아닌 Multiprocessor OS를 사용
  • 장점
    • performance
      • CPU가 여러 개 있으니 더 많은 연산 가능 ⇒ 성능 향상
    • cost
      • 일반적으로 비싸고 좋은 CPU를 하나 사용하는 것보다 훨씬 저렴하고 성능은 그렇게 뒤떨어지지 않는 CPU를 여러 개 사용하는 것이 성능에 더 좋다.
    • reliability(신뢰성)
      • 여러 개의 CPU가 존재하니 그중 하나가 고장 나도 다른 CPU가 여전히 작동될 것이다.

분산 시스템(Distributed system)

  • 여러 개의 CPU-메모리 쌍을 LAN에 연결해서 사용 ⇒ 다중 컴퓨터 시스템 (multi-computer system)이라고도 한다.
    • CPU의 개수가 증가하는 만큼 메모리도 증가
  • 하나의 메인 메모리를 공유하는 게 아니라 분리된 채 LAN 상에서 느슨하게 연결 ⇒ 소결합 시스템(loosely-coupled system)이라고도 한다.
  • CPU끼리 서로 메세지를 주고받으며 하나의 일을 함께 할 수 있다.
  • Single CPU에서 사용하는 OS와는 다른, 분산 운영체제(Distributed OS)를 사용
  • 장점
    • performance
    • cost
    • reliability(신뢰성)

실시간 시스템(Real-time system)

  • 다중 프로세서 시스템과 분산 시스템이 높은 성능, 저렴한 가격, 신뢰성을 목표로 하지만 실시간 시스템의 목표는 특정 시간 내에 반드시 어떠한 작업을 끝내는 것이다.
    • 시간 제약이(Deadline) 존재하여, 제약 안에 계산을 끝내지 못하면 실패
  • 공장 자동화(Factory Automation), 군사, 항공, 우주 분야에서 주로 사용
  • 실시간 시스템을 위해서는 실시간 운영체제(Real-time OS, RTOS)를 사용
    • 곧 끝내야 하는 작업이 있다면 다른 작업을 희생하면서 해당 작업을 수행

인터럽트 기반 시스템(Interrupt-Based System)

  • 현대의 운영체제는 인터럽트 기반 시스템
  • 부팅이 끝나면 무슨 일이 벌어지는가
    • 메모리에 OS가 상주하며 컴퓨터를 제어하게 되고, 이때 OS는 대기 상태에 있음
    • 하드웨어 인터럽트(Hardware interrupt)가 발생하면 운영체제 내의 특정 코드(Interrupt Service Routine, ISR) 실행
      1. 마우스의 움직임이 인터럽트 선을 통해 CPU에 전기신호를 전송
      2. 인터럽트가 발생하면 CPU는 하던 일을 멈추고 OS 내부에 있는 마우스 인터럽트 서비스 루틴 실행
      3. 마우스가 바탕화면의 아이콘을 더블 클릭하면 OS 내부의 더블클릭 인터럽트 서비스 루틴 실행
        1. 더블클릭한 지점의 좌표를 통해 어떤 프로그램을 실행하는지 알아냄
        2. 하드디스크에서 해당하는 프로그램을 찾아서 메인 메모리로 올리고 프로그램 실행
    • ISR 실행 종료 후 OS는 다시 대기 상태 돌입
  • 소프트웨어 인터럽트(Software interrupt)
    • 인터럽트를 거는 명령어
    • 예) 하드디스크에 있는 프로그램을 실행하고 싶다면 OS는 소프트웨어 인터럽트를 걸고, 하드디스크를 읽는 코드를 실행
  • 내부 인터럽트(Internal interrupt)
    • 예) 0으로 나누라고 하면 CPU는 실행할 수 없어 내부적으로 인터럽트가 일어난 것으로 생각 → divide by zero를 처리하는 코드를 실행(일반적으로 프로그램을 강제 종료)

즉 ISR은 언제 실행되는가?

  • OS는 평소에 대기 상태
  • OS 내부의 ISR는 하드웨어/소프트웨어/내부 인터럽트로 인해 실행된다.
  • ISR 실행이 종료되면 인터럽트 발생 전에 하던 작업 또는 대기상태로 되돌아온다.
  • 즉 인터럽트 기반 운영체제는 하나의 프로그램을 실행할 때 사용자 프로그램과 OS를 왔다 갔다 하며 사용자 프로그램을 위한 작업과 인터럽트를 위한 작업을 반복한다.
This post is licensed under CC BY 4.0 by the author.