인터럽트와 컨텍스트 스위칭

헬리코박도·2022년 4월 20일
0

운영체제

목록 보기
8/10

인터럽트 Interrupt

  • 예상치 못한 외부에서 발생한 이벤트

인터럽트 종류

  • I/O interrupt: I/O 동작 입력 시 발생
  • Clock interrupt: CPU 클럭에 따라 현재 프로세스가 타임아웃일 경우 발생
  • Console interrupt
  • Program check interrupt
  • Machine check interrupt
  • Inter-process interrupt
  • System call interrupt

인터럽트 처리 과정

  1. 인터럽트 발생
  2. 프로세스 중단
    2-1. Context Saving: 프로세스의 문맥을 PCB에 저장
  3. 인터럽트 처리 Interrupt handling
    3-1. 인터럽트 발생 장소, 원인 파악
    3-2. 인터럽트를 서비스할 것인지 무시할 것인지 결정
    3-3. 알맞은 인터럽트 서비스 루틴(Interrupt Service Routine) 호출 - 인터럽트 서비스도 프로세스임
  4. 인터럽트 완료
    4-1. Context restoring: 인터럽트가 완료되면 ready queue에 있는 프로세스 running

컨텍스트 스위칭 Context Switching

컨텍스트 Context

  • 프로세스와 관련된 정보들의 집합
    컨텍스트 종류
  • CPU register context: 프로세스 실행 시 CPU 레지스터에 저장된 값들
  • code, data, stack, pcb: 메모리에 저장된 값들

컨텍스트 세이빙 Context saving

  • 현재 running 중인 프로세스의 CPU Register context를 메모리에 저장하는 작업

컨텍스트 리스토어링 Context restoring

  • 저장된 프로세스의 context를 다시 프로세스의 레지스터로 불러오는 작업

컨텍스트 스위칭 Context Switching

  • 현재 실행 중인 프로세스 context saving, 실행할 프로세스의 context restoring
  • 커널의 개입으로 이루어짐

컨텍스트 스위칭 오버헤드

  • 컨텍스트 스위칭에 소모되는 비용을 오버헤드라고 함
  • 컨텍스트 스위칭 오버헤드는 os마다 다름
  • 자주 컨텍스트 스위칭이 발생하면 오버헤드가 os 성능에 영향을 주므로 가능하면 줄이는 것이 좋음
  • 스레드를 사용함으로써 줄일 수 있음

한기대 김덕수 교수님 강의

profile
Data Engineer

0개의 댓글