현대 컴퓨터 시스템의 프로토타입
프로그램을 저장하는 컴퓨터
프로세싱 유닛은 오직 메인 메모리랑만 소통 가능하다.
폰 노이만 보틀넥?
해결 방법?
OS는 두개의 모드로 전환된다. mode bit의 설정을 통해!
Mode bit은 H/w의 flag이다. 시스템의 상태를 기록(PSW 레지스터)
어떠한 모드를 실행해야할지 지칭
왜 2개의 모드를 사용하는가??
특정 시간 주기 이후 CPU를 인터럽트한다!
시간이 흐르면 카운터는 줄어든다.
사용자 프로그램이 CPU를 독점하지 않도록 하기 위해 사용된다.
시간 공유 시스템에 사용된다.
EX)
프로그램1 실행(유저 모드) -> timer interrupt -> OS(커널 모드) 스케줄링-> 프로그램2(유저 모드)-> timer interrupt -> OS(커널 모드) 스케줄링-> 프로그램1 실행(유저 모드)
를 반복!!!
device controller = interface!
I/O device controller
컴퓨터의 입출력 버스에 존재하며 컴퓨터와 입출력 장치에 인터페이스를 제공하는 하드웨어이다.
작은 CPU의 다른 타입이다 -> control 레지스터, 상태 레지스터
Local buffer이다. 메모리와 같은(저장을 한다)
입출력 프로세싱이 끝나면, 디바이스 controller는 CPU에 인터럽트를 보낸다.
Device driver
특정 사건에 대한 OS에 대한 control 전달
프로세서의 외부 이벤트로 부터 발생된다.(Ex 입출력 장치)
EX)
Timer interrupt
- ms마다 외부 타이머는 interrupt를 촉발한다.
- 유저 프로그램에서 제어권을 얻기위해 커널에 의해서 사용이 된다.
I/O interrupt (외부 장치로 부터)
- 컨트롤 씨
- 네트워크로 부터 온 패킷
- 입출력 장치로 부터 온 데이터
실행되고 있는 인스트럭션과 CPU 자신으로 부터 event가 발생된다.
(software interrupt or internal interrupt)
Trap
Faults
Aborts
1. 디바이스 or cpu에서 인터럽트 요청을 받는다.
-IRQ
2. PCB에 현재 상황(레지스터, 프로그램카운터)을 저장하고 context switch 한다.
3. CPU는 Interrupt 벡터(ISR의 주소)를 보고 프로그램 카운터에 주소를 넣는다.
- interrupt vector table: interrupt 핸들러에 대한 메모리 공간
- interrupt에 따라 pc 값이 달라짐!
4. CPU는 ISR(interrupt service routine, interrupt handler)을 실행시킨다.
- ISR: 인터럽트를 다루는 방법을 지시하는 특별한 커널 함수이다. => 논리적 인터럽트 값을 반환함.
5. 레지스터의 값을 복구한다.
6. ISR의 마지막에 IRET이 사용됨, IRET은 특별한 반환 인스트럭션(프로세서의 상태를 되돌리는) 그래서 원래의 프로그램으로 돌아옴.
폰 노이만씨와 이웃지간이던 그 때가 그립네요..
아침마다 담소를 나누곤 했죠