운영체제 스터디 도중 쉽게 배우는 운영체제를 읽고 요약한 내용입니다. 자세한 내용은 책을 구매하여 확인 부탁드립니다.
인터럽트 처리
인터럽트
- 프로그래밍의 비유
- 순차적 프로그래밍 에서는 버튼이 눌렸는지, 안눌렸는지 주기적으로 직접 확인 → 비효율적
- 버튼이 눌리면 시스템에 알려줌 → event driven 방식
- 운영체제 입출력 처리
- 입출력 장치가 별로 없었을 때는 주기적으로 직접 모두 확인 → 폴링
- 입출력을 요청하고, 완료되면 이벤트를 발생시켜 이벤트를 알림 → 인터럽트
- 인터럽트의 용도
- 입출력 용도 뿐만 아니라, Ctrl + c로 프로세스 멈추는 것도 인터럽트
- 어떤 프로세스가 다른 프로세스의 메모리 영역에 침범 하는 것도 인터럽트
동기적 인터럽트 / 비동기적 인터럽트
- 동기적 인터럽트 : 실행 중인 명령어로 인해 발생 하는 인터럽트
- 예시
- 프로그램 상의 문제 때문에 일어나는 인터럽트 ( 다른 프로세스의 메모리에 접근 … )
- 입출력 장치의 조작
- 수를 0으로 나눔
- 예시
- 비동기적 인터럽트 : 실행 중인 명령어와 무관하게 발생하는 인터럽트, 하드웨어와 관련된 것이 다수
- 예시
- 하드디스크 읽기 오류
- 메모리 불량
- 예시
인터럽트 처리 과정
- 인터럽트 = 인터럽트 번호 ( IRQ ) + 번호에 붙어있는 함수 ( Interrupt handler )
- 윈도우 화면의 최소화 버튼에는 창을 작게 만드는 함수가 정의되어 있음
- 종료 버튼에도 함수가 정의 되어 있음
- 최대화 함수를 지우면, 눌러도 반응이 없음
- 인터럽트는 종류가 많음 → 이를 구분하기 위해 각 인터럽트별 고유번호가 존재 ( IRQ )
- 인터럽트가 여러개 동시에 발생 할 수 도 있음 → 인터럽트 벡터 자료구조를 사용하여 하나로 묶어서 보냄
- 예시
- 인터럽트 발생
- 프로세스 일시정지 상태로 전환, 재시작 하기 위해 현재 프로세스 관련 정보를 임시로 저장
- 인터럽트 컨트롤러가 실행되어 처리 순서를 결정
- 여러개의 인터럽트가 동시에 발생했다면, 인터럽트의 우선순위를 고려하여 중요한 인터럽트 부터 처리하도록 순서를 결정
- 인터럽트 벡터에 등록된 인터럽트 핸들러가 실행
- 모든 인터럽트 처리를 마치면, 일시 정지된 프로세스가 다시 실행되거나 종료 ( 메모리 침범 인터럽트 : 종료, 입출력 완료 : 재실행 )
인터럽트와 이중 모드
- 프로세스 → 커널 프로세스 / 사용자 프로세스로 나눌 수 있음
- 커널 프로세스가 실행되는 상태 → 커널 모드
- 사용자 프로세스가 실행되는 상태 → 사용자 모드
- 이중 모드 ( dual mode )
- 사용자 프로세스에서, 하드디스크 입출력, 프로세스 생성 등 커널의 기능을 사용하기 위해서 사용자모드 → 커널모드로 전환 하며 일 처리를 하는 모드
- 운영체제가 자원을 보호하기 위해 사용하는 기법
- 커널은 시스템 호출을 통해서만 자원에 접근하도록 허용
- 사용자 프로세스가 커널 모드에서 실행되지 못하도록 막음
- 이러한 시스템 호출 위해 API를 제공
- 이렇게 사용자가 커널 모드로 진입 하는 경우는, 시스템 호출을 사용 한 경우, 인터럽트를 발생 시킨 경우로 두가지 경우가 있음
"Operation System" 카테고리의 최근 포스팅
카테고리 모든 글 보기운영체제 스터디 (13) - 네트워크와 분산 시스템 | 2021. 03. 14 |
---|---|
운영체제 스터디 (12) - 파일 시스템 | 2021. 03. 14 |
운영체제 스터디 (11) - 입출력 시스템과 저장 장치 | 2021. 03. 11 |
운영체제 스터디 (10) - 가상 메모리 관리 | 2021. 03. 10 |
운영체제 스터디 (9) - 가상 메모리의 기초 | 2021. 03. 08 |
운영체제 스터디 (8) - 물리 메모리 관리 | 2021. 03. 07 |
운영체제 스터디 (7) - 교착상태 | 2020. 12. 04 |
운영체제 스터디 (6) - 프로세스 동기화 | 2020. 11. 10 |
운영체제 스터디 (5) - interrupt | 2020. 10. 20 |
운영체제 스터디 (4) - CPU 스케줄링 | 2020. 10. 19 |