<청춘> 격정적으로 사는 것

밤을 새고 공부한 다음 날 새벽에 느꼈던 생생한 환희와 야생적인 즐거움을 잊을 수 없다

운영체제 OS (Operating System)

[운영체제] #02-3 고등운영체제, 인터럽트 기반 운영체제

수학도 2021. 7. 20. 00:42

출처

https://www.youtube.com/watch?v=CsnNdw4qDUw&list=PLK4xviZcdB9ieuusJ5j1UYZMFTuAgZCq8&index=3 

 

고등 운영체제 

컴퓨터는 CPU(=processor)가 있고 메인 메모리가 있다. 그리고 CPU와 메모리를 연결하는 버스가 있다.

컴퓨터 구조는 이런 구조밖에 없는가?

아니다.

  1. 다중 프로세서 시스템 (Multiprocessor system)
  2. 분산 시스템 (Distributed system)
  3. 실시간 시스템 (Real-time system)

도 존재한다.

 

 

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

CPU가 여러개이고, 메인 메모리가 한개인 구조이다.

다른 말로는 병렬 시스템(parallel system) 혹은 강하게 결합한 시스템(tightly-coupled system)이라고도 한다.

이런 시스템을 왜 만들었을까? 3가지 장점 

  1. performance (성능 향상) : CPU는 계산하는 역할을 하는데, CPU가 여러개 있으면 한번에 더 많은 계산을 할 수 있기 때문에 성능이 향상된다.
  2. cost (비용 절감) : 하나의 강한 CPU 보다 여러개의 덜 강한 CPU를 두는게 일반적으로 전체 비용은 더 싸다.
  3. reliability (신뢰성) : 하나의 CPU가 고장나더라도 다른 CPU가 여전히 동작할 수 있기 때문에 신뢰도 면에서 훨씬 낫다.

CPU가 여러개일 때에는 O/S가 다를 수 밖에 없다.

다중 프로세서 운영체제(Multiprocessor OS)를 사용한다.

 

 

분산 시스템 (Distributed system)

CPU와 메인 메모리를 가진 여러 개의 컴퓨터들을 근거리 통신망(LAN)으로 연결한 구조이다.

다른 말로는 다중 컴퓨터 시스템(multi-computer system) 혹은 소결합 시스템(loosely-coupled system)이라고도 한다.

이런 시스템을 왜 만들었을까? 3가지 장점

  1. performance (성능 향상) 
  2. cost (비용 절감) 
  3. reliability (신뢰성) 

분산 운영체제(Distributed OS)를 사용한다.

 

 

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

실시간 시스템이란 어떤 시간(시간 제약 : Deadline) 내에 반드시 끝나야 되는 시스템을 말한다.

그 시간 내에 끝나지 않으면 그 계산은 실패한 것이다.

예) 네비게이션 - 내가 어떤 지점에 도착하기 전까지 다음 경로를 계산하여 알려주어야 한다. 어떤 지점을 지나고 나서 다음 경로를 알려주면 실패한 네비게이션이다. 

실시간 시스템은 공장 자동화(FA), 군사, 항공, 우주 등에 주로 사용된다.

  • 군사 : 미사일 잡는 미사일, 적군 미사일이 날아오기 전에 계산을 끝내야 한다.
  • 우주 : 우주선 카운트다운

실시간 운영체제 (Real-time OS = RTOS)를 사용한다.

 


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

인터럽트(Interrupt)는 '가로채다'라는 뜻으로, CPU가 하던 일을 중단하고 다른 일로 점프하는 것을 의미한다.

 

전원을 키면 프로세서(Processor) 는

  1. ROM에 있는 instruction을 읽어온다. 
  2. POST 를 실행한다.
  3. Boot loader 를 실행한다. → 운영체제가 메인 메모리로 올라온다.

 

부팅(Booting)

하드디스크에서 운영체제를 찾아서 메인 메모리로 가져오는 과정.

 

 

부팅이 끝나면?

운영체제(O/S)는 메모리에 상주하며 사건(event)을 기다리며 대기하고, 모니터 화면에 아이콘들과 마우스 커서가 나타난다.

더보기

사건(event) : 키보드를 입력하거나 마우스를 움직이거나 클릭하는 행위

 

하드웨어 인터럽트 (Hardware interrupt)

  • 하드웨어 인터럽트 결과 운영체제 내의 특정 코드(ISR)가 실행된다.
  • ISR(Interrupt Service Routine) 종료 후 다시 대기한다.

 

마우스를 움직이면?

마우스에서 전기신호가 발생하여 CPU의 인터럽트 라는 선으로 전달된다. 전기신호가 전달되면, CPU는 하던 일을 중단하고, O/S 안에 있는 mouse interrupt service routine 으로 점프한다.

mouse interrupt service routine 안에는 마우스가 움직이는대로 모니터의 커서를 옮기는 코드가 들어있다.

 

 

마우스를 더블클릭하면?

마찬가지로, 전기신호가 발생하여 인터럽트(interrupt)가 걸려서 CPU는 하던 일을 중단하고, O/S 안에 있는 mouse interrupt service routine(ISR) 으로 점프한다. 그리고 그 안에 더블 클릭을 할 때 일어나는 이벤트를 수행한다.

 

예를 들어 화면에서 (x, y) = (50, 100) 에 위치한 한글 파일을 더블 클릭했다면, mouse interrupt service routine(ISR) 내의 코드는 하드디스크에서 한글 파일을 찾아 메인 메모리로 가져온다. 그리고 모니터 화면에 한글창이 실행된다.

모니터
컴퓨터 구조

 

 

키보드를 입력하면?

키보드에서 전기신호가 발생하여 인터럽트(interrupt)가 걸려서 CPU는 하던 일을 중단하고, O/S 안에 있는 keyboard interrupt service routine 으로 점프한다.

 

 

 

소프트웨어 인터럽트 (Software interrupt)

  • 사용자 프로그램이 실행되면서 소프트웨어 인터럽트(운영체제 서비스 이용을 위해)가 걸린다.
  • 인터럽트 결과 운영체제 내의 특정 코드(ISR)가 실행된다.
  • ISR 종료 후 다시 사용자 프로그램으로 돌아간다.

 

예를 들어?

- 명령어 중에서 swi(softwareinterrupt)나 int(interrupt)를 실행하면 인터럽트가 걸린다.

 

- 또는 하드디스크 안에 있는 memo.hwp를 읽어오고 싶다면, hwp프로그램에서 인터럽트를 걸어 O/S 안에 있는 하드디스크에 있는 파일을 읽어오는 코드를 가진 ISR로 점프한다. 다 읽으면 다시 hwp 프로그램으로 돌아온다.

 

결론

운영체제는 평소에는 대기 상태였다가

  • 하드웨어 인터럽트에 의해 
  • 소프트웨어 인터럽트에 의해
  • 내부 인터럽트(Internal interrupt)에 의해
  • 내부 인터럽트(Internal interrupt) 
    
    예를 들어, i = 5, j = 0 일 때, i/j 연산을 하는 코드가 실행된다면
    5 / 0 = ∞(무한대) 이기 때문에, 
    CPU에서 내부적으로 인터럽트가 걸려서 O/S 안에 있는 divide interrupt service routine 으로 점프한다.

운영체제 코드(ISR)가 실행된다.

 

이처럼 O/S 안에 있는 여러가지 코드들은 인터럽트가 걸려왔을 때 실행된다.

 현대 운영체제는 인터럽트 기반 시스템이다.