일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- CPU
- ALU
- network
- addressing mode
- ack
- cache
- 사설 IP
- 리펙토링
- 명령어
- TCP
- 코드 컴플릿
- 공인 IP
- osi 7
- 가독성
- L2 switch
- Code complete
- Sector
- page
- floating point
- refactoring
- register
- Clean code
- Public IP
- MMU
- L3 Router
- float
- interrupt
- private ip
- physical address
- 클린 코드
- Today
- Total
목록컴퓨터 구조/DMA(Direct Memory Access) (3)
Software Lab

Cycle stealig 방식의 DMA Reading 과정을 알아보자. 메모리의 "HELLO!" 데이터를 읽어와서 Disk에 기록되는 과정이다. 1. 준비 단계 ① : CPU는 Process A를 실행중이다. 이때 char *buf의 데이터("HELLO!")를 Disk로 저장하는 write가 실행 된다. buf는 6byte 이고 시작 주소는 0x000A번지이다. ② : write는 system_call이므로 Internal 인터럽가 발생하고 Process A에서 OS로 Context Switching 된다. ③ : CPU는 IDTR에서 인터럽트 번호(0x80)에 해당하는 OS의 ISR 함수 포인터를 가져온다. ④ : 인터럽트 번호가 0x80이므로 system_call을 실행한다. system_call 안..

Cycle stealig 방식의 DMA Writing 과정을 알아보자. Disk에서 "HELLO!" 데이터를 읽어와서 메모리에 올라가는 과정이다. 1. 준비 단계 ① : CPU는 Process A를 실행중이다. 이때 Disk 데이터("HELLO!")를 char buf[0x06]로 읽어 들이는 read가 실행 된다. buf는 6 byte이고 시작 주소는 0x000A번지이다. ② : read는 system_call이므로 Internal 인터럽가 발생하고 Process A에서 OS로 Context Switching 된다. ③ : CPU는 IDTR에서 인터럽트 번호(0x80)에 해당하는 OS의 ISR 함수 포인터를 가져온다. ④ : 인터럽트 번호가 0x80이므로 system_call을 실행한다. system_c..

메모리와 I/O Decvices 간에 데이터를 전송하는 방식은 PIO, DMA 두가지가 있다. 전송량이 많을수록 PIO에 비해 DMA가 CPU 사용량이 적다. 그렇기 때문에 DMA 방식에서 CPU는 다른 작업을 할 수 있으므로 효율성이 좋아진다. PIO(Programmed Input/Output) : 중간에 CPU를 거쳐서 데이터를 전송하는 방식이다. DMA(Direct Memory Access) : 중간에 CPU 개입 없이 바로 데이터를 전송하는 방식이다. DMA는 아래 3가지 방식이 있다. Cycle stealing : DMAC가 word 단위의 데이터 전송마다 CPU에게 System Bus의 사용권을 요청한다. CPU는 System Bus를 사용하지 않는 Cycle에만 사용권을 주기 때문에 IDEL..