[운영체제-양희재 교수님]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가 여전히 작동될 것이다.
- performance
분산 시스템(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) 실행
- 마우스의 움직임이 인터럽트 선을 통해 CPU에 전기신호를 전송
- 인터럽트가 발생하면 CPU는 하던 일을 멈추고 OS 내부에 있는 마우스 인터럽트 서비스 루틴 실행
- 마우스가 바탕화면의 아이콘을 더블 클릭하면 OS 내부의 더블클릭 인터럽트 서비스 루틴 실행
- 더블클릭한 지점의 좌표를 통해 어떤 프로그램을 실행하는지 알아냄
- 하드디스크에서 해당하는 프로그램을 찾아서 메인 메모리로 올리고 프로그램 실행
- 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.