[운영체제] I/O subsystem, Interrupt

SeongWon Oh·2021년 11월 7일
0

Computer Science

목록 보기
3/3
post-thumbnail

I/O subsystem

  • I/O device들은 device driver와 device controller를 갖고 있다.

Device controller (HW)

  • Controller as a small CPU for a device
  • 각각의 device마다 있는 하나의 작은 CPU이다.
  • I/O장치로부터 읽어온 data를 임시로 저장하는 Local buffer라는 작은 메모리도 존재한다.

Device Driver (SW)

  • OS는 Device마다 해당하는 명령어들을 몰라서 OS는 각각의 Device를 제어할 수 있는 각각의 Device driver라는 SW를 생성하고 driver를 통해서 device controller에 명령을 내린다.
  • device controller와의 interface제공한다.

I/O 작업의 실행 과정

  1. I/O request가 발생하면 device driver를 통해서 해당 device controller에 명령을 내린다.
  2. device controller가 명령받은 동작한다.
  3. 작업이 끝나면 interrupt를 통해서 CPU에게 요청한 작업이 끝났다는 신호를 보낸다. (interrupt line에 쌓는다.)
  4. OS는 Interrupt line에 interrupt내용이 있으면 받으면 실행중인 process를 멈추고 interrupt를 다루는 작업을 실시한다.

Interrupt

  • Device controller는 요청한 작업이 끝나면 interrupt를 발생시켜 interrupt line에 쌓아 둔다.
  • CPU는 각각의 instruction이 끝날 때마다 interrupt line이 setting됐는지 확인을 하고 setting됐으면 CPU는 instruction의 수행을 멈추고 interrupt handler를 통해 interrupt를 처리한다.

Interrupt Handler

Interrupt가 발생하면 CPU는 interrupt vector로 실행을 전송한다. Interrupt vector는 interrupt service routine의 address를 알고 있어 해당 address를 알려주고 CPU는 해당 service routine을 실행시킨다. 실행이 끝나면 기존의 수행 중이던 process를 이어서 수행한다.

ex) 키보드, 디스크 등 interrupt가 발생했을때 각각의 interrupt를 어떻게 처리를 해야하는지? 처리하는 함수는 어디에 있는지? 등을 찾아서 처리해야한다. 그러한 내용은 interrupt vector를 통해 찾는다. interrupt vector는 서비스(device driver)의 주소를 갖고 있으며 이를 통해 해당하는 주소로 가서 interrupt service routine(device driver)를 실행시키고 그 서비스 처리가 끝나면 원래 실행중이던 instruction을 다시 이어서 시행한다.

  • OS는 interrupt driven이며 interrupt는 OS-hardware interaction의 중요한 부분이다.
  • Interrupt는 발생한 순서대로 실행이 되지만 우선순위에 따라 뒤에 들어온 것이 먼저 시행될 수도 있다
  • Interrupt는 크게 Hardware Interrupt와 Software Interrupt로 나뉜다.

Hardware Interrupt vs Software Interrupt

Hardware Interrupt

  • 각각의 I/O device에서 일어난 interrupt를 hardware interrupt라고 한다.
  • Disk작업의 완료, 마우스의 이동, 키보드 타이핑 등이 존재한다.

Software Interrupt

  • System calls: User program이 Kernel function을 사용하기 위해 OS에게 특정 일들을 수행해달라고 요청하는 것이다..
  • Exceptions: 0으로 나누는 것과 같이 여러 예외상황이 발생하면 interrupt를 발생시켜 CPU가 process를 중단시킨다.
profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글