◎ 인터럽트
- 폴링 : 입풀력을 요청하면 운영체제가 주기적으로 입출력 장치를 직접 확인하여 처리하는 방식
- 인터업트 : 입출력을 요청하고 입출력이 완료되면 이벤트를 발생시켜 알림
◎ 동기적 인터럽트, 비동기적 인터럽트
-
동기적 인터럽트
- 프로세스가 실행중인 명령어로 인해 발생
- 예시
- 프로그램상의 문제 (다른 사용자의 메모리 영역 접근, 오버플로우나 언더플로우)
- 컴퓨터 작업자가 의도적으로 프로세스 중단 ([Ctrl] + [C])
- 입출력장치 같은 주변장치 조작에 의한 인터럽트
- 산술 연산 중 발생하는 인터럽트 ( 0으로 나누기)
-
비동기적 인터럽트
- 하드웨어적인 오류로 발생함
- 하드디스크 읽기 오류, 메모리 불량, 키보드 인터럽트, 마우스 인터럽트
◎ 인터업트 처리 과정
- 인터럽트가 발생하면 현재 실행 중인 프로세스는 일시 정시상태가 됨
재시작하기 위해 현재 프로세스 관련 정보를 임시 저장
- 인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서를 결정
- 인터럽트 벡터에 등록된 인터럽트 핸들러가 실행
- 인터럽트 처리를 마치면 일시정지된 프로세스가 다시 실행되거나 종료함
◎ 인터럽트와 이중 모드
- 커널 모드 : 운영체제와 관련된 커널 프로세스가 실행되는 상태
- 사용자 모드 : 사용자 프로세스가 실행되는 상태
- 이중 모드
- 운영 체제가 커널 모드와 사용자 모드를 전환하며 일 처리를 하는 것
- 궁극적인 목적은 자원 보호에 있음
- 시스템 호출
- 사용자 프로세스가 자원에 접근하려면 시스템 호출을 이용해야 함
- 사용자 프로세스는 API가 준비해놓은 다양한 함수를 이용하여 시스템 자원에 접근