인터럽트가 운영체제를 구동시키는 원리, 인터럽트의 한 종류인 시스템콜,동기식/비동기식 입출력에서의 인터럽트, DMA를 이용한 인터럽트 조절, 계층구조에 의해 I/O에서 입출력명령어가 다름
사용자 프로그램이 하고싶은데 자기 혼자 못해서 OS한테 부탁하는거. ex) I/O작업
OS의 서비스를 받기 위해 커널 함수를 호출함
인터럽트 당한 시점의 레지스터와 PC를 저장하고 CPU의 제어를 인터럽트 처리 루틴에 넘김
- Interrupt(하드웨어 인터럽트) : HW가 발생시킨 인터럽트
- Trap(소프트웨어 인터럽트)
- Exception : 프로그램이 오류를 발생함
- System call : 프로그램이 커널 함수를 호출함
인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
인터럽트 처리 루틴 : 해당 인터럽트를 처리하는 커널 함수
현대의 운영체제는 인터럽트에 의해 구동된다.
디바이스 컨트롤러는 하드웨어임
제어 정보를 위해 Control Register, Status Register를 가짐, Local Buffer를 가짐
I/O가 끝나면 인터럽트로 CPU에 알림
- Device Driver : 소프트웨어임. OS 내부에 있는 코드 중. CPU가 실행하는 기계어
- Firmware펌웨어 : Device Controller 내부에 있는 코드
동기식 입출력(Synchronous I/O)
- I/O 요청 후 그 작업이 끝나야 제어가 사용자 프로그램한테 넘어감
- I/O 완료는 인터럽트로 알려줌
비동기식 입출력(Asynchronous I/O)
- I/O가 시작된 후 작업 끝날때까지 기다리지않고 제어가 사용자 프로그램한테 즉시 넘어감
- I/O 완료는 인터럽트로 알려줌
인터럽트가 너무 잦은게 싫음.
특정 block 단위의 작업을 메모리에 저장해두고 그게 다 차면 DMA controller가 CPU에 인터럽트 검