공룡책 1.2.1 Interrupts 도입부 공부

ino5·2022년 7월 5일

1.2.1 Interrupts 처음 도입부만 정리함..

📖 책 내용 해석해보기

책 내용

입출력(I/O)을 수행하는 프로그램 생각해보자. 입출력 동작을 시작하기 위해 장치 드라이버는 장치 컨트롤러에 있는 적당한 레지스터를 로드한다. 그리고 장치 컨트롤러는 무슨 액션을 취해야할지 결정하기 위해 이 레지스터들의 내용을 조사한다. 컨트롤러는 장치에서 그것의 로컬 버퍼로 데이터를 전송한다. 데이터 전송이 끝나면, 장치 컨트롤러는 장치 드라이버에게 그것의 동작이 끝났음을 알린다. 장치 드라이버는 그 때 운영체제의 다른 부분에 통제권을 준다. 만약 그 동작이 읽는 거라면 데이터 또는 데이터의 포인터를 리턴하면서 말이다. 다른 동작일 때에는 장치 드라이버는 상태 정보를 리턴한다. 예를들면 "성공적으로 읽음" 또는 "장치가 바쁨" 과 같은 정보이다. 그런데 컨트롤러는 장치 드라이버에게 동작이 끝났음을 어떻게 알릴까? 이것은 interrupt를 통해 수행된다.

책 내용 정리

  • 장치를 통해 입력이 이루어진다.
  • 장치 드라이버는 장치 컨트롤러가 입력에 대해 행동을 취할 수 있도록 한다.
  • 장치 컨트롤러는 버퍼로 입력 데이터를 전송한다.
  • 장치 컨트롤러는 장치 드라이버에게 전송이 끝났음을 알린다.
  • 이 때 컨트롤러가 드라이버에 알리기 위해 사용하는 것이 interrupt이다.

📖 이해 안가는 부분 공부

버스와 컴퓨터 아키텍처 구조

PCI bus의 역할

  • 컴퓨터 내부의 장치들이 서로 소통을 할 수 있도록 데이터 전송의 길 역할을 해줌

장치 컨트롤러의 역할

  • 장치마다 다른 프로토콜의 bus 규격을 가지는데 이 bus간의 소통을 위해
  • 여러개 연결된 장치의 데이터를 보내기 위해
  • 효율적인 데이터 전송을 위해

장치 드라이버와 장치 컨트롤러의 연결 구조

장치 드라이버란?

  • 운영체제가 각각의 장치에 접근할 수 있도록 인터페이스 역할을 하는 소프트웨어

장치 소통 과정

  1. 장치 드라이버는 디스크 데이터를 주소가 X인 버퍼로 전달하라는 명령을 받는다.
  2. 장치 드라이버는 디스크 컨트롤러에게 C bytes를 디스크에서 주소 X인 버퍼로 전달하라고 명령한다.
  3. 디스크 컨트롤러는 DMA(메모리 직접 참조) 전송을 시작한다.
  4. 디스크 컨트롤러는 각각의 바이트를 DMA 컨트롤러에 보낸다.
  5. DMA 컨트롤러는 바이트들을 주소가 X인 버퍼에 보낸다. 이 때 메모리 주소가 증가하면서 C는 0이 될 때까지 감소하면서 보낸다.
  6. C가 0이되면, DMA는 CPU에게 인터럽트를 걸어 전송이 완료됐다고 신호를 보낸다.

인터럽트

  • CPU가 프로그램을 실행하는 도중, 입출력 장치로부터의 처리 등 예외상황이 발생했을 때 CPU에게 알려 CPU가 처리할 수 있도록 하는 것이다.

입출력 버퍼

  • CPU와 보조기억장치 사이에서 사용되는 임시 저장 공간
  • 보조기억장치는 CPU에 비해 속도가 매우 느린데 여기서 발생하는 효율성 문제를 해결하기 위해 존재
  • 버퍼에 쌓아뒀다가 한번에 CPU가 처리하도록 하는 식으로 효율성 문제를 해결한다.

📖 참고 글

장치 컨트롤러, 장치 드라이버에 대해 잘 설명되어 있는 글

https://melonicedlatte.com/computerarchitecture/2020/01/01/234600.html

📖 읽어볼 글

컴퓨터 구조와 I/O

https://jongmin92.github.io/2019/02/18/Programming/computer-structure/

  • 로컬 버퍼에 대해 검색하다 찾은 글인데 내용 정리가 잘되어 있는 것 같다. 아직 안읽었는데 내일 읽어보기!!
profile
지금은 네이버 블로그만 해요... https://blog.naver.com/chero77

0개의 댓글