728x90

* 폰 노이만 구조

CPU(processor) <-> Memory

일반적인 OS는 메모리에 있는 수행해야할 작업들을 번갈아가면서 처리한다.

조금 했다가 다른거 넘어가고, 조금 했다가 다른거 넘어가고 ...

 

* 다중 프로세서 시스템 (병렬 시스템, 강결합 시스템 -> 메인메모리가 하나로 묶여있기때문)

CPU + CPU + CPU <-> Memory

왜 CPU를 여러개 달았을까?

-> 성능 향상

-> 비용 (비교적 값싼 CPU를 여러개하여, 비싼 CPU 하나보다 저렴하게)

-> 신뢰성 (단일 프로세서를 사용하면, 고장 발생시 불능이 되지만, 다중 프로세서를 사용하면 동작 가능)

 

다중 프로세서 OS를 이용하여 단일 프로세서에서 사용하는 OS와 다른 운영체제를 채택한다.

 

* 분산 시스템 (다중 컴퓨터 시스템, 소결합 시스템 -> 메인메모리가 흩어져있기 때문)

CPU + Memory                          CPU + Memory

--------------------------------------------------------------------------- LAN

                            CPU + Memory

 

위와 같은 구조로 구성하면 같은 랜에 있으므로

CPU 3개, RAM 3개를 각각 분할하여 처리 가능하다. 하나의 작업을 나누어서 하는 것이기 때문에

분산 OS를 이용하여 단일 프로세서에서 사용하는 OS와 다른 운영체제를 채택한다.

분산 시스템 또한 성능향상, 비용, 신뢰성 의 목적을 이룰수 있음

 

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

계산이 어떤 시간내에 반드시 끝나야 하는 시스템을 실시간 시스템 이라고 한다.

ex) 자동차 네비게이션 => 내 위치를 앞서 경로를 잡아주는 시스템

ex) 공장 자동화, 군사목적 등...

실시간 시스템에 대한 운영체제인 RTOS (Real-Time OS) 가 존재한다.

-> 일반적인 OS랑 뭐가 다를까?

=> CPU 스케줄링에서 차이가 나는데 작업을 끝내야 하는 프로세스를 우선적으로 처리한다.

 

* 인터럽트 기반 시스템

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

부팅이 끝나면 -> 운영체제는 메모리에 상주(Resident) -> 사건을 기다리며 대기(키보드, 마우스 ...)

 

1. 처음에 파워를 키면

2. ROM CODE(부트스트랩)가 Memory에 적재된다.

3. ROM CODE(부트스트랩)이 하는 기능은,

4. 하드디스크에 있는 OS를 찾아 메인메모리에 적재시킨다.

5. 이것이 부팅과정이다.

--------------------------------------------------------------------------

1. 부팅완료 후 마우스를 움직이면

2. 버스를 통해 CPU에 인터럽트 라인을 통해 전기적 신호를 보낸다.

3. 인터럽트를 받은 CPU는 지금 하는 일을 중지하고,

4. OS내부에 있는 마우스의 인터럽트 서비스 루틴(Interrupt Service Routine)을 확인 후 처리한다.

 

하드웨어 인터럽트 (HWI) => 마우스, 키보드 등등,,

소프트웨어 인터럽트 (SWI) => 애플리케이션이 실행되면서 인터럽트를 발생시킨다. 

 

! 운영체제는 평소에는 대기상태이다.

 - 하드웨어 인터럽트

 - 소프트웨어 인터럽트

 - 내부 인터럽트(Internal Interrupt) => divide by 0 처럼 잘못된 시도를 한 프로그램을 종료하는 루틴

 

* 인터럽트로 인해 ISR을 처리 완료하면 인터럽트 신호를 받았던 상태로 복귀한다.

728x90
복사했습니다!