Study/TIL(Today I Learned)

24.06.03 복습

에린_1 2024. 6. 4. 21:51
728x90

복습

인터럽트(Interrupt)

  • 인터럽트는 컴퓨터 시스템에서 중요한 역할을 하는 메커니즘이다.
  • 프로세서가 현재 실행 중인 작업을 일시적으로 중단하고 다른 작업을 수행하도록 하는 신호이다.
    • 주로 하드웨어나 소프트웨어 이벤트에 의해 발생한다.
    • 시스템의 효율적인 운영과 반응성을 높이는 데 중요한 역할을 한다.

하드웨어 인터럽트

  • 하드웨어 인터럽트는 컴퓨터 외부 장치에서 발생하는 신호로 인해 발생한다.
  • 주요 특징
    • 비동기성
      • 인터럽트는 예측할 수 없는 시간에 발생할 수 있다.
    • 우선순위
      • 다양한 장치가 인터럽트를 발생시킬 수 있으므로, 각 인터럽트는 우선순위가 부여되어 중요도가 높은 인터럽트가 먼저 처리된다.

소프트웨어 인터럽트

  • 운영 체제 내에서 발생하는 이벤트에 의해 생성된다.
  • 시스템 호출(system call) 이나 예외(exception) 처리가 소프트웨어 인터럽트를 발생시킬 수 있다.
  • 주요 특징
    • 동기성
      • 프로그램 코드의 특정 지점에서 의도적으로 발생한다.
    • 시스템 호출
      • 운영 체제가 제공하는 서비스를 사용하기 위해 프로그램이 발생 시키는 인터럽트이다.
    • 예외 처리
      • 프로그램 실행 중 오류가 발생했을 때 이를 처리하기 위한 메커니즘이다.

인터럽트 처리 과정

  1. 인터럽트 발생
    1. 하드웨어나 소프트웨어 이벤트로 인해 인터럽트가 발생한다.
  2. 현재 작업 중단
    1. CPU는 현재 수행 중인 작업을 일시적으로 중단한다.
  3. 인터럽트 벡터
    1. 인터럽트 벡터 테이블을 참조하여 해당 인터럽트에 대한 처리 루틴(인터럽트 핸들러)을 찾습니다.
  4. 인터럽트 핸들러 실행
    1. 인터럽트 핸들러가 실행되어 인터럽트에 대한 처리를 수행한다.
  5. 작업 복귀
    1. 인터럽트 처리가 완료되면 중단된 작업을 다시 수행한다.

인터럽트의 장점

  • 신속한 반응
    • 중요한 이벤트에 신속하게 반응할 수 있게 한다.
  • 효율성
    • CPU가 유휴 상태에서 기다리는 대신 인터럽트가 발생할 때만 작업을 수행함으로써 자원을 효율적으로 사용할 수 있다.
  • 멀티태스킹
    • 여러 작업을 동시에 수행하는 환경에서 인터럽트는 중요한 이벤트를 우선 처리하여 시스템의 전반적인 성능을 향상 시킨다.

세그멘테이션 폴트(Segmentation Fault)

  • 프로그램이 허용되지 않은 메모리 영역에 접근하려 할 때 발생하는 오류이다.
    • 주로 C, C++, 어셈블러어와 같은 저수준 프로그래밍 언어에서 발생하며, 메모리 접근이 직접적으로 이루어지기 때문에 발생할 가능성이 높다.

세그멘테이션 폴트의 원인

  1. 잘못된 포인터 사용
    1. 초기화되지 않은 포인터
      1. 초기화되지 않은 포인터는 임의의 메모리 주소를 가리킬 수 있어 접근 시 오류가 발생한다.
    2. 널 포인터 접근
      1. 널 포인터에 접근하려 할 때 발생한다.
    3. 해제된 메모리 접근
      1. 이미 해제된 메모리 영역을 다시 접근하려 할 때 발생한다.
  2. 배열 인덱스 초과
    1. 배열의 범위를 벗어난 인덱스로 접근할 때 발생한다.
  3. 스택 오버플로우
    1. 재귀 호출이 너무 깊어져 스택 메모리가 넘치게 되는 경우 발생한다.
  4. 잘못된 함수 포인터 사용
    1. 함수 포인터가 잘못된 주소를 가리키고 있어 잘못된 메모리 주소로 점프 할 때 발생한다.
  5. 타입 캐스팅 오류
    1. 잘못된 타입 캐스팅으로 인해 메모리의 잘못된 부분을 읽거나 쓸 때 발생한다.
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