리눅스 디바이스 드라이버
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

리눅스 디바이스 드라이버에 대한 보고서 자료입니다.

목차

Device Driver 정의
폴링(Polling)과 인터럽트(Interrupt)
직접 메모리 접근 (Direct Memory Access, DMA)
메모리
커널과 디바이스 드라이버와의 인터페이스
Device Drive 종류
문자 장치(Character Device)
블럭 장치(Block Device)
하드 디스크(Hard Disk)
IDE 디스크
SCSI 디스크
SCSI 서브시스템의 초기화
블럭 장치 요청을 전달하기
네트웍 장치(Network Device)
네트웍 장치 초기화

본문내용

치 파일이 mknod 명령으로 만들어지는 블럭 장치나 문자 장치와는 달리, 네트웍 장치 특수 파일은 시스템에 있는 네트웍 장치를 발견하고 초기화하는 과정 에서 차례로 나타난다. 이들의 이름은 장치의 유형을 나타내는 그런 표준적인 이 름이다. 같은 유형의 장치들에는, 0부터 시작하는 번호가 붙는다.
따라서 이더넷 장치는 /dev/eth0, /dev/eth1, /dev/eth2 이런 식으로 나타난다. 일반적인 네트웍 장치로는 :
/dev/ethN 이더넷 장치
/dev/slN SLIP 장치
/dev/pppN PPP 장치
/dev/lo 루프백 장치
버스정보 : 이 정보는 디바이스 드라이버가 장치를 제어하기 위해 필요로 하는 것이다.
IRQ 번호는 장치가 사용하는 인터럽트 번호이고. 베이스 주소(base address) 는 장치의 제어 레지스터와 상태 레지스터가 있는 I/O 메모리 상의 주소이다. DMA 채널(DMA channel)은 네트웍 장치가 사용하는 DMA 채널 번호이다. 이 모든 정보는 부팅 시에 장치를 초기화 할 때 설정된다.
인터페이스 플래그(Interface Flag) : 이는 네트웍 장치의 특징과 능력을 설명한다.
IFF_UP 인터페이스가 위에 있고(up) 실행중이다.
IFF_BROADCAST device의 브로드캐스트 주소가 유효하다.
IFF_DEBUG 장치 디버깅 옵션이 켜져 있다.
IFF_LOOPBAK 루프백 장치이다.
IFF_POINTTOPOINT SLIP이나 PPP같은 지점 대 지점(point to point) 연결 장치이다.
IFF_NOTRAILERS 네트웍 추적자(trailer)가 없다.
IFF_RUNNING 자원이 할당되었다.
IFF_NOARP ARP 프로토콜을 지원하지 않는다.
IFF_PROMISC 장치가 마구잡이로 수신하는 모드이다. 패킷의 수신 주소가 어디든 간에 관계없이 모든 패킷을 받아들인다.
IFF_ALLMULTI 모든 IP 멀티캐스트(multicast) 프레임들을 수신한다.
IFF_MULTICAST IP 멀티캐스트 프레임 수신 가능
프로토콜 정보 : 네트웍 프로토콜 계층이 장치를 어떻게 사용할 수 있는지 나타낸다.
mtu : 링크 계층(link layer)에서 붙이는 헤더를 제외하고 이 네트웍 장치가 전송할 수 있는 가장 큰 패킷 크기. 이 최대값은 IP같은 프로토콜 계층이 전송에 사용할 적 당한 패킷의 크기를 선택하기 위해 사용한다.
계열(Family) : 이것은 장치가 지원할 수 있는 프로토콜 계열을 나타낸다. 모든 리눅스
네트웍 장치가 지원하는 계열은 AF_INET, 인터넷 주소 계열이다.
유형(Type) : 하드웨어 인터페이스 유형은 이 네트웍 장치에 연결된 매체를 나타낸다.
리눅스 네트웍 장치는 많은 서로 다른 종류의 매체를 지원한다. 여기에는 이더넷(ethernet), X.25, 토큰링(token ring), SLIP, PPP, 그리고 Appletalk 등이 포함된다.
주소(Address) : device 자료구조는 IP 주소를 포함하여 이 네트웍 장치에 해당하는
여러 개의 주소를 가지고 있다.
패킷큐(Packet Queue) : 네트웍 장치가 전송하기를 기다리고 있는 sk_buff 패킷의 큐
지원하는 함수들 : 각 장치는 장치의 링크 계층과의 인터페이스의 일부로서 프로토콜
계층에서 호출할 수 있는 표준 함수 집합을 제공한다. 이는 셋업하고 프레임을 전송하는 루틴뿐만 아니라, 표준 프레임 헤더를 추가하고, 통 계정보를 모으는 루틴도 포함한다.
이 통계정보는 ifconfig 명령으로 볼 수 있다.
네트웍 장치 초기화
네트웍 디바이스 드라이버는 다른 리눅스 디바이스 드라이버와 마찬가지로 커널에 직접 포함되어 있을 수 있다. 각 잠재적인 네트웍 장치는 dev_base 리스트 포인터가 가리키는 네트웍 장치 리스트에 있는 device 자료구조로 표현된다. 네트웍 계층은 장치에 고유한 작 업을 수행할 필요가 있을 때, device 자료구조에 있는 서비스 루틴의 주소를 가지고 여러 네트웍 장치의 서비스 루틴을 호출한다. 그렇지만 device 자료구조는 처음에는 초기화나 장치를 탐사(probe)하는 루틴의 주소만 갖고 있다.
네트웍 디바이스 드라이버가 풀어야 하는 문제로 두 가지가 있다. 우선 첫 번째는 리눅스 커널에 포함된 모든 네트웍 디바이스 드라이버가 자신이 제어할 장치를 갖는 것은 아니라는 것이다. 그리고 두 번째로 시스템에 있는 이더넷 장치는 밑에 있는 디바이스 드라이버가 어 떤 거든 지간에 항상 /dev/eth0, /dev/eth1과 같이 나타난다는 것이다. 먼저 "없는" 네트웍 장치 문제는 쉽게 풀 수 있다. 각 네트웍 장치의 초기화 루틴을 부르면, 이 루틴은 자신 이 구동할 컨트롤러를 찾았는지 못 찾았는지 의미하는 상태값을 돌려준다. 만약 드라이버가 아무런 장치도 찾지 못했다면, dev_base가 가리키고 있는 device 리스트에 있는 엔트리 가 제거된다. 만약 드라이버가 장치를 찾게 된다면, 드라이버는 device 자료구조의 나머지 부분을 장치에 대한 정보와 네트웍 디바이스 드라이버에 있는 드라이버가 지원하는 함수들의 주소로 채운다.
두 번째 문제는 이더넷 장치를 표준 /dev/ethN 장치 특수파일에 동적으로 부여하는 문제로 이는 좀더 우아한 방법으로 해결된다. 장치 목록에는 eth0부터 eth7까지 모두 여덟 개의 표준 엔트리가 있다. 초기화 루틴은 이들 모두에 똑같은데, 장치를 찾을 때까지 커널에 있는 각 이더넷 디바이스 드라이버를 시도해보는 것이다. 드라이버가 장치를 찾으면 이제 가지게 된 ethN device 자료 구조의 내용을 채운다. 그리고 이 때 네트웍 디바이스 드라이버는 자신이 제어할 물리적인 하드웨어를 초기화하고, 어떤 IRQ를 사용하고 있고 어떤 DMA 채널을 사용하고 있는지 (만약 있다면) 등등을 알아낸다. 드라이버는 자신이 제어할 네트웍 장치를 여러 개를 찾을 수 있는데, 이 경우 드라이버는 여러 개의 /dev/ethN device 자료구조를 넘겨준다. 여덟 개의 표준 /dev/ethN이 모두 할당되면, 더 이상 이더넷 장치를 찾지 않는다.
  • 가격2,000
  • 페이지수16페이지
  • 등록일2005.09.01
  • 저작시기2005.09
  • 파일형식한글(hwp)
  • 자료번호#311495
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니