부팅과 인터럽트 기반 운영체제

Woosung Kim·2022년 1월 8일
0

부팅

메인 메모리(Main Memory)에 전원 공급시 메인 메모리 ROM의 bootloader가 하드디스크(Hard Disk)의 OS를 찾아 메인 메모리의 RAM에 올린다.
한번 RAM에 로드된 OS는 전원이 공급되는 한, 메인 메모리에 상주한다. (다른 프로그램은 실행 시에만 메인 메모리에 로드)

인터럽트

CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것

인터럽트의 종류

  • 하드웨어 인터럽트
    - 입출력장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생
    ex) 전원 이상, 입출력
  • 내부 인터럽트
    - 잘못된 명령이나 데이터를 사용할 때(Trap)
    ex) Divide by 0, Overflow
  • 소프트웨어 인터럽트
    - 입출력장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생
    ex) SVC 인터럽트

인터럽트의 처리 과정

인터럽트 발생 시 실행 중인 프로그램을 중지한다. 이후, 추후에 다시 복귀해야 하므로 실행 중이던 프로그램에 대한 PC(Program Counter)와 SR(Status Register)를 저장한다.

(인터럽트 벡터 : 인터럽트 서비스 루틴에 대한 정보를 모아놓은 영역)

인터럽트 처리 완료 시, 저장해둔 복귀 주소를 로드하여 기존 실행하던 프로그램을 다시 실행한다.

인터럽트가 필요한 이유

프로세스의 수행 효율 향상
인터럽트를 사용하는 경우 이벤트 발생 여부에 별도의 신경을 쓰지 않고 인터럽트 요청이 왔을 경우에만 확인 후 수행해주면 되므로 프로세스 수행 효율이 향상된다.

인터럽트를 사용하지 않으면, CPU는 스스로 이벤트 발생여부를 일정시간마다 확인해야 함(폴링 Polling)
이 경우, 상대적으로 프로세스 수행 효율이 떨어짐

profile
개발하는 강아지

0개의 댓글