개념
cpu가 어떤 프로그램을 실행하고 있는데 당장 처리해야하는 프로그램이 생겼을 경우
인터럽트 신호를 보내서 먼저 처리해야하는 프로그램을 처리하고
다시 에전 프로그램으로 돌아가는 것
-> 어떤 사건이 발생했음을 알려주는 신호로 하드웨어, 소프트웨어가 발생시킨다.
*발생이란?
- cpu 제어권이 인터럽트서비스루틴(ISR)으로 자동으로 넘어감
->하드웨어적으로 그렇게 설계됐음
- 넘어간 뒤에는 핸들러코드 실행됨
-> 프로그램 코드로 해당 인터럽트를 처리함
*cpu는 인터럽트 요청을 받으면 현재 수행중인 프로그램을 일시중단하고,
cpu 정보를 안전한 장소(스택) 에 저장한 후 ISR을 실행한 후 다시 복귀함.
*인터럽트 실행 중 또 인터럽트 오면
1. 블락
2. 급한 것 먼저 처리함
인터럽터 벡터
- 인터럽트 발생시 처리해야할 인터럽트 핸들러의 주소를 인터럽트 별로 보관하고 있는 테이블
ex) 인터럽트[2] 발생시 [2] 벡터로 가서 거기에 적힌 주소값으로 찾아가서 isr 실행하고 실행 후에 복귀함
*필요한 이유
1. i/o 연산이 cpu 명령 속도보다 현저히 느려서 os는 i/o 장치의 동작과 자신의 시스템 동작을 보다 수월하게 조정하기 위함
2. 예외상황 핸들링
3. 선점형 스케쥴러 구현 : 프로세스가 언제 실행을 중지or 계속할지
인터럽트 타임라인
1. cpu가 어떤 user process 실행중인데 i/o 연산을 요청해서 시작하게 되면 i/o 장치가 데이터를 전송함
2. i/o 연산 종료되면 cpu에게 알려줌
3. cpu는 현재 실행중인 작업을 중단하고, 즉시 i/o 연산을 실행함 == ISR 루틴
4. ISR 완료되면 cpu는 다시 user process 복귀
I/O구조 입출력 과정
read
- input 장치에서 읽어서 i/o 컨트롤러의 로컬버퍼에 데이터를 적재
- 다 읽으면 컨트롤러는 cpu에게 인터럽트 발생시킴
- cpu는 자료를 컨트롤러의 로컬 버퍼로부터 가져옴
- cpu는 dma가 컨트롤러의 로컬버퍼에 있는 것을 메인메모리의 주소로 이동시키라고 명령
DMA
- 컨트롤러가 cpu 개입없이 메인메모리로 직접 데이터 블록 전송
- 사이클스틸링: cpu와 dma는 동시에 시스템 버스 사용 불가, cpu에게 우선권 있음
'OS' 카테고리의 다른 글
Multi Programmed System : Dual- Mode, protection 기법 (0) | 2024.10.26 |
---|---|
저장 구조 및 입출력 (3) | 2024.10.26 |
Virtual Memory 가상 메모리 (0) | 2024.10.25 |
OS란? , 컴퓨터 시스템 작동 방식 (0) | 2024.10.25 |
컴퓨터 시스템 유형 (0) | 2024.10.25 |