메모리 맵 입출력과 고립형 입출력은 오직 프로그램 입출력의 일종인가요?
ise-yen opened this issue · 2 comments
ise-yen commented
안녕하세요!
이 사진 중 어떤거에 해당하는지 궁금합니다!
4쇄 기준입니다.
(p.256) 4번 문제 정답은 메모리 맵 입출력, 5번 문제 정답은 고립형 입출력을 의도한 문제라는 건 알겠는데,
"이 둘 모두 프로그램 입출력에만 해당되는걸까?"라는 의문이 들어서 질문 드립니다!
[아래는 추측]
-
DMA 입출력은 CPU가 DMA 컨트롤러에게 외주준다는 느낌이니까 CPU가 장치 컨트롤러의 레지스터나 주소를 파악할 필요가 없을 듯합니다.
-
인터럽트 기반 입출력은 일단 장치 컨트롤러에게 CPU가 직접 일을 시키니까 인터럽트 기반 입출력에서도 메모리 맵이나 고립형 입출력 방식을 쓰는 것 같습니다
kangtegong commented
안녕하세요~! 좋은 질문 감사드립니다.
결론부터 말씀드리자면 첫번째 그림에 가깝습니다.
메모리 맵 입출력과 고립형 입출력은 사실 엄밀하게는
(입출력 명령어로 입출력할 적에) "입출력장치의 주소를 어떻게 판단할 것인지"를 나눈 기준이거든요.
입출력장치를 식별하는 정보를 입출력장치의 주소라고 두었을 때,
입출력 주소 공간을 별도로 둘 것이냐 두지 않을 것이냐로 나눈 기준이라고 보시면 됩니다.
인터럽트 입출력은 이와는 크게 관련이 없고,
DMA는 말씀하신 것처럼 "DMA 입출력은 CPU가 DMA 컨트롤러에게 외주준다는 느낌"이 맞습니다. 입출력장치 주소 식별과는 관련이 적지요.
감사합니다.
강민철 드림
ise-yen commented
답변 감사합니다!! 덕분에 확실하게 이해됐어요!!