Operating System : 운영체제

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

(4) I/O Operation - DMA I/O

@ DMA는 또 뭔가요?

    // Direct Memory Access의 줄임말입니다.

 

@ 이 때까지 Interrupt or pooling 등은 charactor I/O Operation이었는데요

    // 당시 I/O Transfer unit이 1-char였습니다.

        > one or two bite

 

@ 하지만 가끔 Block 데이터를 전송할 때에 위의 방식은 너무 느렸습니다.

    // 1byte를 보내도 interrupt에 걸리면 interrupt handler라는 코드가 수행되어 비효율적이지요.

        > 이와 같은 Action에서 CPU의 intervation을 최소로 하는 방법을 고안합니다.

        > 그것이 바로 DMA Operation 입니다.

 

@ CPU가 DMA Controller에게 DMA Operation은 initiation하기 위해서는 데이터와 command를 제공해야 합니다.

    // 지금 전송해야 할 데이터의 memory 상의 시작점(주소) 전달

        > Block Starting Adress

    // 얼마나 많은 데이터를 한 Block에 포함하고 있는지

        > Block Volume

    // Read or Write command

        > Operation Command

 

@ DMA Controller(Bus Master) 가 이렇게 수행하기 위해서는 Bus를 장악할 필요가 있습니다.

    // 1 word씩 메인 메모리(Bus Slave)에서 읽어오고,

    // 자기 Buffer에 저장해 두었다가 I/O Device에 전달합니다.

        > 이 모든 것이 끝나면 DMA Controller는 Interrupt Mechanism을 이용해서 

        > CPU에게 완료 시그널을 보냅니다.

    // 이렇게 Controller가 메모리에 바로 Access한다고 해서 'Direct Memory Access'라고 부릅니다.

 

@ DMA Block Data를 옮기는데에는 두가지 방식이 존재합니다.

    // Cycle Stealing 

        > CPU가 메모리에 엑세스하는 걸 간섭하지 않기 위해서

             .. CPU가 instruction을 수행하고 있고

             .. bus가 idle할 때에

        > DMA Controller가 위의 상황일 때에만, Bus를 사용하는 방식을 말합니다.

            .. 이를 이용해 Data를 1 word 당위로 옮겨가겠지요?

        > 장단점

            .. 장점 : CPU 성능에는 영향을 미치지 않습니다.

            .. 단점 : DMA에 시간이 오래걸리겠지요?

    // Block Transfer

        > CPU와 DMA Controller가 대등하게 경쟁하여 Bus를 사용하는 방식입니다.

        > 장단점

             .. DMA 시간이 빠릅니다.

             .. CPU 성능에 간섭이 생길 수 있습니다.

댓글

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