728x90
복습
인터럽트(Interrupt)
- 인터럽트는 컴퓨터 시스템에서 중요한 역할을 하는 메커니즘이다.
- 프로세서가 현재 실행 중인 작업을 일시적으로 중단하고 다른 작업을 수행하도록 하는 신호이다.
- 주로 하드웨어나 소프트웨어 이벤트에 의해 발생한다.
- 시스템의 효율적인 운영과 반응성을 높이는 데 중요한 역할을 한다.
하드웨어 인터럽트
- 하드웨어 인터럽트는 컴퓨터 외부 장치에서 발생하는 신호로 인해 발생한다.
- 주요 특징
- 비동기성
- 인터럽트는 예측할 수 없는 시간에 발생할 수 있다.
- 우선순위
- 다양한 장치가 인터럽트를 발생시킬 수 있으므로, 각 인터럽트는 우선순위가 부여되어 중요도가 높은 인터럽트가 먼저 처리된다.
- 비동기성
소프트웨어 인터럽트
- 운영 체제 내에서 발생하는 이벤트에 의해 생성된다.
- 시스템 호출(system call) 이나 예외(exception) 처리가 소프트웨어 인터럽트를 발생시킬 수 있다.
- 주요 특징
- 동기성
- 프로그램 코드의 특정 지점에서 의도적으로 발생한다.
- 시스템 호출
- 운영 체제가 제공하는 서비스를 사용하기 위해 프로그램이 발생 시키는 인터럽트이다.
- 예외 처리
- 프로그램 실행 중 오류가 발생했을 때 이를 처리하기 위한 메커니즘이다.
- 동기성
인터럽트 처리 과정
- 인터럽트 발생
- 하드웨어나 소프트웨어 이벤트로 인해 인터럽트가 발생한다.
- 현재 작업 중단
- CPU는 현재 수행 중인 작업을 일시적으로 중단한다.
- 인터럽트 벡터
- 인터럽트 벡터 테이블을 참조하여 해당 인터럽트에 대한 처리 루틴(인터럽트 핸들러)을 찾습니다.
- 인터럽트 핸들러 실행
- 인터럽트 핸들러가 실행되어 인터럽트에 대한 처리를 수행한다.
- 작업 복귀
- 인터럽트 처리가 완료되면 중단된 작업을 다시 수행한다.
인터럽트의 장점
- 신속한 반응
- 중요한 이벤트에 신속하게 반응할 수 있게 한다.
- 효율성
- CPU가 유휴 상태에서 기다리는 대신 인터럽트가 발생할 때만 작업을 수행함으로써 자원을 효율적으로 사용할 수 있다.
- 멀티태스킹
- 여러 작업을 동시에 수행하는 환경에서 인터럽트는 중요한 이벤트를 우선 처리하여 시스템의 전반적인 성능을 향상 시킨다.
세그멘테이션 폴트(Segmentation Fault)
- 프로그램이 허용되지 않은 메모리 영역에 접근하려 할 때 발생하는 오류이다.
- 주로 C, C++, 어셈블러어와 같은 저수준 프로그래밍 언어에서 발생하며, 메모리 접근이 직접적으로 이루어지기 때문에 발생할 가능성이 높다.
세그멘테이션 폴트의 원인
- 잘못된 포인터 사용
- 초기화되지 않은 포인터
- 초기화되지 않은 포인터는 임의의 메모리 주소를 가리킬 수 있어 접근 시 오류가 발생한다.
- 널 포인터 접근
- 널 포인터에 접근하려 할 때 발생한다.
- 해제된 메모리 접근
- 이미 해제된 메모리 영역을 다시 접근하려 할 때 발생한다.
- 초기화되지 않은 포인터
- 배열 인덱스 초과
- 배열의 범위를 벗어난 인덱스로 접근할 때 발생한다.
- 스택 오버플로우
- 재귀 호출이 너무 깊어져 스택 메모리가 넘치게 되는 경우 발생한다.
- 잘못된 함수 포인터 사용
- 함수 포인터가 잘못된 주소를 가리키고 있어 잘못된 메모리 주소로 점프 할 때 발생한다.
- 타입 캐스팅 오류
- 잘못된 타입 캐스팅으로 인해 메모리의 잘못된 부분을 읽거나 쓸 때 발생한다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.06.05 복습 (0) | 2024.06.06 |
---|---|
24.06.04 복습 (0) | 2024.06.04 |
24.06.02 복습 (0) | 2024.06.01 |
24.06.01 이력서 (0) | 2024.06.01 |
24.05.30 수료 (0) | 2024.06.01 |