2008년 4월 15일 화요일

입출력방법


입력: 입력장치 buffer에 있는 값을 memory에 써준다.
출력: memory의 값을 출력장치 buffer에 써준다.


입출력방법

  • Polling
    • busy waiting → process가 계속 검사
    • flag가 1이되면 process가 가져다가 memory에 쓴다.
    • 단점: 모든걸 process가 담당하므로 cpu가 아깝다.
  • Interrupt
    • process는 입출력 장치에게 일을 시켜놓고 다른일 한다.
    • 입출력 장치는 시킨 일을 다 하면 process에게 interrupt를 보낸다.
    • process는 하던일을 멈추고 memory의 데이타를 buffer에 혹은 buffer의 데이타를 memory에 옮겨준다.
    • 장점: busy waiting을 하지 않는다. process는 data만 옮겨준다.
    • 단점: interrupt handling을 위한 context switch overhead가 존재한다.
  • DMA(Direct Memory Access)
    • BUS에 DMAC를 달아두고 이것을 이용한다.
    • process가 DMA에게는 입출력 장치와 Memory의 위치를 알려주고, 입출력 장치에게는 DMA로 동작할 것을 알려준다.
    • 시킨 일을 다하면 입출력장치는 DMAC에게 일을 다했다고 한다.
    • DMAC는 process가 시킨일이 끝날 때까지 계속 입출력 장치에게 일을 준다.
    • DMAC는 BUS를 사용하겠다고 request를 보내고 BUS를 획득한 후 process가 지정해준 memory에 data를 쓴다.
    • process가 시킨일을 다하면 DMAC는 process에게 interrupt를 보낸다.

댓글 없음:

댓글 쓰기