-
Operating System - Introduction(1)Computer Science/Operating System 2023. 3. 2. 20:42
현대 컴퓨터는 1개 이상의 CPU와 컨트롤러 들로 구성되어있다. 그리고 이들끼리 공통 버스(Common Bus)로 연결되어 메모리를 공유한다.
Interrupt ?
인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.
좀더 자세하게 말하면, 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
아래와 같이 두가지로 나눠 질 수 있다.
- H/W interupt
- Sending signal to CPU
- S/W interupt
- System call (=monitor call) : request from program
- I/O 접근, 메모리 할당
- Exception (예외 처리)
- Divide b zero, invalid memory accesss, I/O exception
Inter Processor Event-Vector Table Hardware Process
◼ Execution cycle of CPU
◼ PC: Program Counter
◼ IRQ: Interrupt ReQuest
◼ ISR: Interrupt Service RoutineInterruptRequest = FALSE; // interrupt request line ... while(haltFlag not set during execution){ IR = memory[PC]; // Fetch into the IR // Point the PC at the next instruction // Execute the current instruction PC++; execute(IR); if(InterruptRequest){ //Interruptthecurrentprocess save_PC(); // Save the PC restore_PC(IRQ); // Branch to the ISR for this IRQ } }
Interrupt Mechaninsm
- CPU가 하던 일을 멈추고 PC에 다음에 실행할 명령어 주소를 저장한다. Interrupt Handler 에게 실행을 요청한다.
- Interrupt vector를 읽고 ISR 주소값을 얻어 ISR로 점프하여 루틴을 실행한다.
- 해당 코드를 읽고 실행한다.
- 해당 코드를 실행한다.
- 해당 일을 다 처리하면 대피시킨 PC 값을 복원하여 이전 실행 위치로 복원한다.
Interrupt - based I/O
CPU가 작동하던중에 I/O decvice 에서 인터럽트가 발생하였을 때 CPU가 어떻게 인터럽트를 처리하는지 보여주는 그림이다.
I/O request가 있을 때 CPU는 다른일을 하고 있는다.. 쉬지 않는다..
Interrupt - Execution Cycle
- 메모리에서 명령을 가져와 명령 레지스터에 저장합니다.
- 그런 다음 명령어가 디코딩되고 피연산자가 메모리에서 가져와 일부 내부 레지스터에 저장될 수 있다.
- 피연산자에 대한 명령이 실행된 후, 결과는 메모리에 다시 저장될 수 있다.
Main Memory
Storage Structure
저장소의 구조다. 속도, volatile여부를 확인 하면된다. I/O Device Access
이번 수업에서는 3가지 I/O 접근 방식을 다뤘다. Busy Waiting
첫번째 방식으로는 Busy Waiting 이라는 방법이다. CPU가 끊임없이 Device에게 가서 일이 끝났는지 물어본다.
하지만 비싼 CPU를 그렇게 쓴다는 것은 비효율 적이다.
위와 같은 방법을 사용할 경우 CPU는 I/O Device를 기다리느라 아무것도 하지 못한다.
그래서 해결하기 위한 방법이 있는데 다음과 같다.
끝났으면 Interrupt를 통해 알려달라고 하기!
말그대로 I/O Device의 끝났다는 응답을 기다리는 동안 CPU는 다른 일을 처리하고 있게 하는 것이다.
DMA
그래서 고안된 방법은 바로 DMA라는 방법이다.
Direct Memort Access라는 말로 device 컨트롤러가 대량의 데이터를 메인 메모리에 직접 저장하는 방법이다.
Memory와 Device를 직접 연결 해준다. Computer System Architecture
아래와 같이 3가지로 나뉜다.
- Single processor systems
- 말 그대로 CPU가 하나다.
- Multi-processor systems
- CPU가 두개 이상이다.
- CPU가 많다고 처리속도가 빨라진다는 것은 아니다. 속도가 빨라 질 수 있지만, 처리할 수 있는 일의 양이 많아진다는 것에 집중해야 한다.
- CPU가 두개 이상이다.
위 그림과 같이 2개 이상의 CPU가 연결되어 있는 모습으로 나뉜다.
main memory를 공유하고 있다는 점에서는 같다.
하지만 왼쪽 그림은 각기 다른 CPU 2개를 연결한 것이고, 오른쪽은 각기 다른 CPU 2개가 캐쉬 또한 공유한다.
오른쪽과 같은 모습이 보통 듀얼코어, 쿼드쿼어에 해당한다.
멀티 프로세서 시스템은 위와 같이 두가지 카테고리로 나눌 수 있다.
1. Symmetric multiprocessing(SMP)
모든 프로세서(CPU)는 동등하게 일을 처리한다. 2. Asymmetric multiprocessing
- Master Slave 관계
- Master이 schedules하면 slaves 들이 allocate 하는 방법이다.
이렇게 멀티 프로세서 시스템의 장점으로는 throughput을 늘릴 수 있다.
Clustered Systems
여러대의 컴퓨터가 한꺼번에 일을 처리하는 모습을 상상하면된다.
- Storage-area network(SAN)을 통해 저장공간을 공유한다.
- Distributed lock manager(DLM)을 통해 실행되는 것들의 충돌을 막는다.
- 한사람이 다른 장치에 무언가를 저장하고 있는데 다른 사람이 또 저장하면 충돌이 생길 수 있다. 이러한 것을 막기 위해 lock을 거는 것 ... 그렇게 생각하면 된다.
여러대의 컴퓨터가 연결됨에 있어 아래와 같은 조건이 충족되어야 Clustered Systems이라 정의할 수 있다.
- peripheral 의 공유
- 두개 이상의 System clock
Clustered Systems의 목적은 다음과 같다.
- 결점이 덜한 모델을 만드는 것 ... (당연한 말... ㅎ)
- Asymmetric clustering은 장애 극복을 할 수는 하나의 machine을 갖고 있다.
- Symmetric clustering은 서로를 모니터링 해 줄 수 있는 여러개의 노드를 갖고 있다.
- 그리하여 의존성을 높여 주기..
- H/W interupt