이해를 돕기 위해 그림으로 간단하게 그려봤습니다.
여러분이 사용하는 컴퓨터에 여러 기기들을 연결했다고 가정해볼게요.
물리주소가 있을때, 메모리의 비어있는 공간에
키보드,스피커 등 사용하려는 I/O 기기에 대해서 메모리공간을 할당해줍니다.
이때 이 공간을 read&write로 접근가능하게 만들어줍니다.
이 공간을 virtual memory에 할당할 수 있습니다.
vitual 공간 상에서 비어있는 공간에
I/O 2에 해당하는 공간을 할당할 수 있습니다.
라즈베리파이에서 /proc/iomem을 통해
Memory Mapped IO가 어떻게 할당되고있는지를 알 수 있습니다.
각각의 장치들을 Dram이 아닌 가상공간에 저장하고 있습니다.
IO를 활용할때에는 프로세스처럼
Load/Store를 통해 활용할 수 있습니다.
이 덕분에 프로그래머입장에서는
직접 일일이 기기의 주소값을 입력해 제어하는 것보다
더 편리하게 만들어줍니다.
익셉션(Exception) (0) | 2024.03.15 |
---|---|
인터럽트 (1) | 2024.03.13 |
프로세스는 무엇일까?+Trace32로 ps명령어 제작 (0) | 2024.03.11 |
커널빌드할때 뭐 설정할건지 뭉탱이로 떠요(커널 deconfig설정 불일치로 인한 오류) (0) | 2024.03.10 |
개발환경을 간단하게 공유한다, nfs(network file system)! (1) | 2024.02.01 |
댓글 영역