나의 브을로오그으

#3. 고등운영체제, 인터럽트 기반 시스템 본문

Computer Science/운영체제

#3. 고등운영체제, 인터럽트 기반 시스템

__jhp_+ 2022. 6. 26. 16:31

다중 프로세서 시스템 (MultiProcessor System) 

- 병렬 시스템(parallel system)

- 강한결합 시스템 (tightly-coupled system)

- 장점 : Performance, cost, reliability

(cpu를 여러개로 처리하기 때문에 성능 향상을 기대 할 수 있고, 

일반적으로 엄청나게 비싼 cpu 한개보다는 그것보다 조금 저렴한 cpu 여러개를 사용하는게

비용적으로나 성능적으로 큰 차이가 없으므로 비용적으로 유리하다, 

cpu가 만약 고장나면, 단일 CPU의 경우 올 스탑 되지만, 다중 프로세서를 사용하면

하나가 고장나더라도 나머지가 정상적으로 동작하므로 신뢰성이 올라간다.)

- 다중 프로세서 운영체제(Multiprocessor OS)

 

(Linux OS도 다중 프로세스를 지원 한다.)

 

분산 시스템 (Distributed System)

- 다중 컴퓨터 시스템 (Multi-Computer System)

(여러 processor-memory 단위로 LAN을 통해 연결해 놓은 시스템,

어떤 큰 데이터를 처리 할 때 다중 프로세서 시스템의 경우 해당 프로그램을 메모리에 올리면

연결되어 있는 CPU가 처리를 하는 것에 비해 분산 시스템은 각 구성 별로 일을 나누어서 처리하도록 배치한다 . 이들은 LAN으로 연결되어 있으므로 메시지를 서로 주고 받으며 상호작용 한다.)

- 느슨한  결합 시스템 (loosely-coupled system)

- 분산 운영체제 (Distributed OS)

(당연히 각 unit마다 OS가 메모리에 올라와 있으며, 이들은 서로 하나의 job을 나누어서 처리하므로 일반적인 OS(단일 OS)와는 다르다. 이를 분산 운영체제 (Distributed OS)라고 한다.

(다중 프로세서 시스템이나, 분산 시스템이나 사실 구현 방식이 다를 뿐 목적은 같다.

그런데 실시간 시스템은 목적이 다르다.)

 

실시간 시스템 (Real-Time System)

- 시간 제약 : Deadline

실시간 시스템은 어떤 작업이 반드시 특정 시간 내에 처리되어야 하는 시스템이다.

- 공장 자동화 (FA: Factory Automation), 군사, 항공, 우주

- 실시간 운영체제 (Real-time OS = RTOS)

 

 

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

- 인터럽트? : 가로채기

 

- 현대 OS는 인터럽트 기반 시스템이다.

  * 부팅이 종료되면 운영체제는 메모리에 상주(resident)하며,

사건(event)을 기다리며 대기하고, 키보드, 마우스 등의  인터럽트 서비스 루틴 코드를 실행.

 

- 하드웨어 인터럽트 (Hardware Interrupt)

  * 인터럽트 결과 OS내의 특정 코드 실행 (ISR : Interrupt Service Routine)

  * Interrupt Service Routine 종료 후 다시 대기

(부팅후에 마우스가 움직이면 인터럽트 선으로 전기 신호를 프로세서에게 보낸다.

그러면 Processor(CPU)는 지금 하던 일을 일시중지하고, OS안에 있는 Mouse Interrupt Service Routine이 동작한다.)

그렇다면 Mouse Interrupt Service Routine안에는 어떤 코드가 들어있을까??

마우스를 움직이면 화면에 출력된 마우스 커서도 동시에 움직인다.

(키보드도 마찬가지, 키보드 입력을 하게되면 Processor가 일시중지하고, OS안에 있는 Keyboard Interrupt Service Routine이 실행된다.

즉, OS안의 많은 코드들이 있는데, 이 코드들은 Interrupt가 발생했을 때 실행된다.

 

- 소프트웨어 인터럽트 (Software Interrupt)

  * 사용자 프로그램이 실행되면서 소프트웨어 인터럽트 (운영체제 서비스 이용 위해)

  * 인터럽트 결과 운영체제 내의 특정 코드 실행 (ISR)

  * ISR 종료 후 다시 사용자 프로그램으로

(어셈블리어에 ADD, SUB, MOV, LDR등의 명령어가 있는데, ARM CPU에는 SWI라는 명령어도 있다.

이 명령어는 Software Interrupt이다. 이 명령어가 실행되면 인터럽트가 발생한다.

팬텀계통의 명령어에는 INT라는 명령어가 있다. Interrupt의 약자인데, 이 명령어는 내부적으로 인터럽트가 온것처럼 처리된다.) 

 

(또 다른 예로 만약 memo.hwp라는 파일을 읽어서 메모리에 올린다고 했을 때, 이 읽어오는 작업은 어떻게 이루어질까?? HWP프로세스가 직접 해당 파일을 읽어오는 걸까??? 아니다.!!

이 작업은 OS내부에 HardDisk를 읽는 코드가 존재한다. 그리고 이 코드 또한 인터럽트 코드이다!

정리하면, HWP프로그램이 memo.hwp파일을 읽으려고 할 때, 소프트웨어 인터럽트를 건다.

1. HWP는 memo.hwp 파일을 읽어오는 시점에 소프트웨어 인터럽트를 건다.

2. 인터럽트가 걸리면, OS내부의 HardDisk를 읽는 루틴으로 점프하게 된다.

3. OS가 해당 파일을 읽어온다. 그리고 다시 원래의 HWP 프로그램으로 돌아온다.

(그런데 왜 OS안에 HardDisk의 파일 읽기, 쓰기 루틴이 들어있는 걸까? 일반적인 프로그램에 해당 코드가 존재한다면 수많은 프로그램마다 해당 코드가 있어야 하므로 중복이다.)

 

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

- 하드웨어 인터럽트에 의해 운영체제 코드 (ISR) 실행

- 소프트웨어 인터럽트에 의해 운영체제 코드 (ISR) 실행

- 내부 인터럽트(Internal Interrupt)에 의해 운영체제 코드 (ISR) 실행

(내부 인터럽트는 다음과 같은 예시가 있음.

5 / 0과같은 divide by zero의 경우, 값이 무한대이다. 즉, processor(CPU)에서는

무한적으로 실행되는데, 이값은 저장도 안되고, 연산이 끝나지 않는다. 따라서 이러한 경우

내부적으로 인터럽트가 발생한걸로 간주하여 OS안에는 divide by zero routine에 해당하는

interrupt service routine 이 존재한다.

그래서 이 루틴이 실행된 프로그램을 강제로 종료한다. 따라서 이런걸 내부 인터럽트라고 한다.

당연히 내부 인터럽트에 해당하는 ISR이 종료되면 프로그램을 종료하고, 정상적으로 다시 동작한다.

 

ISR 종료되면

- 원래의 대기상태 또는 사용자 프로그램으로 복귀

 

 

 

 

 

 

 

 

'Computer Science > 운영체제' 카테고리의 다른 글

#6. 프로세스 관리  (0) 2022.06.29
#5. 운영체제 서비스  (0) 2022.06.28
#4. 이중모드, 하드웨어 보호  (0) 2022.06.27
#2. 운영체제 역사  (0) 2022.06.26
#1. 운영체제 개요  (0) 2022.06.25