Operating System : 운영체제

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

(2) Interrupt Operation - Interrupt H/W (ii)

@ 이와 같은 Interrupt mechanism이 동작하게 하기 위해서는 어떻게 Circuit을 구성해야 할까요?

     

        > 이 형태는 각각의 interrupt source가 각각의 pin에 연결이 되어있는 형태입니다. (그림은 두개)

            .. 사실 마음에 드는 구성은 아닙니다.

            .. microprocessor는 굉장히 다양한 시스템에서 사용될 수 있는데, 

            .. 각각의 시스템마다는 상황이 다를 것입니다.

            .. 이 때 interrupt source가 늘어날 때마다 pin을 늘리는 것은 불가능합니다. (Scalability 문제)

 

@ 이런 문제를 해결하기 위해서, 실제로는 이런 interrupt source를 pin에 바로 연결하지 않습니다.

    // Programmable Interrupt Controller(PIC) 라는 장치를 고안하게 됩니다.

        > 이는 interrupt source와 CPU 사이에 존재하는 하나의 Programmable한 Circuit입니다.

            Programmable Interrupt Controller

            .. CPU의 Interrupt pin에 인가되는 그런 선을 가지고 있습니다 (Output line)

            .. Interrupt Source에 연결되는 그런 여러개의 Input line을 가지고 있습니다. (보통 16개)

 

@ 그런데 만약 I/O의 개수가 16개가 넘으면 어떻게 하면 될까요?

    // 중첩을 시켜서 Programmable Interrupt Controller를 두개를 사용합니다.

        > 그래서 하나의 Interrupt Controller의 경우는 다음 Interrupt Controller의 input을 생성합니다. 

            .. Cascading을 한다고 말합니다.

            .. 이렇게 하면 임의의 I/O Device의 개수를 다 지원할 수 있게 됩니다.

 

@ 또 주목해야 할 점은 Programmable Interrupt Controller는 'Programmable'하다는 것입니다.

    // 이 의미는 S/W적으로 동작에 영향을 미칠 수 있다는 의미를 가집니다.

        .. Sync나 Scheduling의 이유로 잠시동안 특정 Interrupt Source를 disable시켜야 하는 경우가 있어요.

        .. PIC 안에 각 Source와 연결되는 부분에 있는 1bit Flag register들을 0으로 masking을 하면 됩니다.

        .. 반대로는 1로 바꾸면 되겠지요.

    // 이런 모든 활동을 S/W적으로 할 수 있다는 얘기가 됩니다.

    // 그래서 CPU는 부분적으로 0 혹은 1로 Flag들을 Setting하는 것이 가능합니다. 

 

@ 이런 Flag Register를 전문용어로

    // Interrupt mask register라고 합니다. 

        > 특정 Interrupt Source의 Interrupt를 무시하거나 향후에 처리할 수 있도록 하는 기술입니다.

 

@ 이 mask register는 I/O Operation이 필요하게 됩니다.

    // mask register의 Port Number(mask register I/O address)를 타겟으로 해서 Output Operation을 해야 합니다.

    // 이런식으로 어떤 특정 Interrupt의 특성을 변형시키는 작업을 S/W적으로 구현하는 것이 가능합니다.

 

@ 위의 이유들로, 우리가 'Programmable' 하다고 얘기합니다.

    // 그렇기에 PIC안에 있는 register들은 전부  I/O address안에  mapping이 되어있어야 하고, 이는 Port address를 가지고 있어야 합니다.

 

@ 또한 CPU는 IRQ 번호를 어디에서 얻어오는 것일까요?

    // PIC 안에 있는 register에서 얻어오게 됩니다. 

 

@ 이렇게 장황하게 설명된 것이 I/O Programming의 기본입니다.

    // 해결된 문제는 두가지입니다.

        > Scalability

        > 특정 Interrupt Source를 on/off 할 수 있게 됩니다.

댓글

댓글 본문
버전 관리
박천명
현재 버전
선택 버전
graphittie 자세히 보기