IO는 다음중 하나의 체계를 가지게 됩니다.
1) programmed IO
- IO를 위한 별도의 CPU명령(어셈블리, 기계어)를 가짐, IO포트를 지정하여 입출력 수행
2) memory mapped IO
- 일반 메모리(램) 번지처럼 IO번지를 할당함, 메모리에(부터) 이동하는것이 IO임
3) DMA IO
- IO를 관장하는 별도의 하드웨어사용, CPU를 거치지 않고 이 프로세서가 관장
프로세서별로(크게, x86 및 68x로 볼때) 위 3가지중 하나를 보통 채택하게됩니다.
대한민국에서(?!) 특히, 학생층에서 흔히 접할 수 있는 x86은 기본적으로는
1)번 즉 programmed IO를 채택한 아키텍쳐(하드웨어)입니다.
음, 리눅스라면, /proc/ioports와 /proc/iomem을 유심히 보세요.
당연히 그냥 보지말고, root로 로긴해서 cat /proc/ioports 이런식으로 봐야겠지요.
다음단계로, IO를 수행하는 방법으로 특히, input을 검사하는 방법으로,
1) interrupt
2) polling
으로 나눠볼 수 있습니다.
둘 다 일장일단이 있습니다.
CPU집약적인 작업을 수행하는 아키텍쳐의 하드웨어에서는 인터럽트를 선호하여 CPU가 최대한 연산에만 집중하도록 구성합니다.
반면 IO에 집약적인(네트워크 기반 어쩌구 등... 요즘에는 이게 대세) 아키텍쳐에서는 폴링을 그 IO의 기본 수단으로 삼는 경우가 많습니다. 특히, 네트워크 디바이스 드라이버라면 그러합니다.
Re: H/W 와 OS 에 의존적이죠
OS 마다 I/O Address 를 얻는 방법이 틀립니다.
그리고도 해당 H/W 가 어떤 버스를 사용하는지에 따라서도 조금 틀리죠...
더 넓게 본다면 아키텍쳐에 따라서도 틀립니다;;;
혹시 참고할 자료가없는지
답변 감사합니다.^^ 자료를 참고할 자료가 없는지?
IO는 다음중 하나의 체계를 가지게 됩니다.1) programmed
IO는 다음중 하나의 체계를 가지게 됩니다.
1) programmed IO
- IO를 위한 별도의 CPU명령(어셈블리, 기계어)를 가짐, IO포트를 지정하여 입출력 수행
2) memory mapped IO
- 일반 메모리(램) 번지처럼 IO번지를 할당함, 메모리에(부터) 이동하는것이 IO임
3) DMA IO
- IO를 관장하는 별도의 하드웨어사용, CPU를 거치지 않고 이 프로세서가 관장
프로세서별로(크게, x86 및 68x로 볼때) 위 3가지중 하나를 보통 채택하게됩니다.
대한민국에서(?!) 특히, 학생층에서 흔히 접할 수 있는 x86은 기본적으로는
1)번 즉 programmed IO를 채택한 아키텍쳐(하드웨어)입니다.
음, 리눅스라면, /proc/ioports와 /proc/iomem을 유심히 보세요.
당연히 그냥 보지말고, root로 로긴해서 cat /proc/ioports 이런식으로 봐야겠지요.
다음단계로, IO를 수행하는 방법으로 특히, input을 검사하는 방법으로,
1) interrupt
2) polling
으로 나눠볼 수 있습니다.
둘 다 일장일단이 있습니다.
CPU집약적인 작업을 수행하는 아키텍쳐의 하드웨어에서는 인터럽트를 선호하여 CPU가 최대한 연산에만 집중하도록 구성합니다.
반면 IO에 집약적인(네트워크 기반 어쩌구 등... 요즘에는 이게 대세) 아키텍쳐에서는 폴링을 그 IO의 기본 수단으로 삼는 경우가 많습니다. 특히, 네트워크 디바이스 드라이버라면 그러합니다.
하여간 이제 입문단계이신듯하니 두루 ~ 공부하시고,
좋은 프로그램 많이 만드세요.
댓글 달기