Linux 디바이스 모델에 대한 자세한 설명(1)_기본 개념
1. 소개
Wowo는 "리눅스 커널의 전체 아키텍처"라는 기사에서 Linux 커널이 전 세계의 다양한 기능을 가진 거의 모든 하드웨어 장치를 지원한다는 점을 언급했는데, 이는 Linux의 장점이기도 합니다. 그러나 이로 인해 Linux 커널 코드의 절반이 장치 드라이버가 됩니다. 하드웨어 장치가 빠르게 업그레이드됨에 따라 장치 드라이버 코드의 양도 빠르게 증가하고 있습니다. 내 생각에는 이 현상은 "단순함이 아름답다"는 개념을 파괴하고 Linux 커널을 매우 비대하고 지저분하며 유지 관리하기 어렵게 만듭니다. 그러나 Wowo는 Linux가 매크로 커널이고 장치 다양성에 직면하고 해당 드라이버를 구현해야 하기 때문에 이것이 Linux의 잘못이 아니라는 것도 이해합니다.
장치 다양성으로 인한 Linux 드라이버 개발의 복잡성을 줄이고 장치 핫플러그 및 전원 관리와 같은 기능을 구현하기 위해 Linux 커널에서는 장치 모델(드라이버 모델이라고도 함) 개념을 도입했습니다. 장치 모델은 하드웨어 장치를 분류 및 요약한 다음 일련의 표준 데이터 구조 및 인터페이스를 추상화합니다. 이러한 방식으로 드라이버 개발은 간단해지며 커널에서 지정한 데이터 구조를 채우고 구현하기만 하면 됩니다.
이 글에서는 디바이스 모델의 기본 개념부터 시작하여, 해당 커널 코드의 분석을 통해 리눅스 디바이스 모델의 구현과 사용을 점차적으로 설명하겠습니다.
2. Linux 장치 모델의 기본 개념
2.1 버스, 클래스, 장치 및 장치 드라이버의 개념
다음 그림은 임베디드 시스템에 대한 일반적인 하드웨어 토폴로지의 예입니다.
하드웨어 토폴로지는 Linux 장치 모델의 네 가지 중요한 개념 중 세 가지인 버스, 클래스 및 장치를 설명합니다(네 번째는 장치 드라이버이며 나중에 설명합니다).
버스: Linux는 버스가 CPU와 하나 이상의 장치 간의 정보 교환을 위한 채널이라고 믿습니다(include/linux/device.h의 structbus_type 주석 참조). 장치 모델의 추상화를 용이하게 하기 위해 모든 장치는 버스(CPU 내부 버스, 가상 버스 또는 "플랫폼 버스"인지 여부)에 연결되어야 합니다.
클래스: Linux 장치 모델에서 클래스 개념은 객체 지향 프로그래밍의 클래스와 매우 유사합니다. 주로 유사한 기능이나 속성을 가진 장치를 수집하므로 여러 응용 프로그램에서 사용할 수 있는 장치 집합을 추상화할 수 있습니다. . 장치 간에 공유되는 데이터 구조 및 인터페이스 기능. 따라서 동일한 클래스에 속하는 장치의 드라이버는 더 이상 이러한 공용 리소스를 반복적으로 정의할 필요가 없으며 클래스에서 직접 상속할 수 있습니다.
장치: 시스템의 모든 하드웨어 장치를 추상화하여 이름, 속성, 하위 버스, 하위 클래스 및 기타 정보를 설명합니다.
장치 드라이버: Linux 장치 모델은 드라이버를 사용하여 장치 초기화 및 전원 관리와 관련된 인터페이스 구현을 포함하는 하드웨어 장치의 드라이버를 추상화합니다. Linux 커널의 드라이버 개발은 기본적으로 이 추상화(지정된 인터페이스 기능 구현)를 중심으로 진행됩니다.
참고: 플랫폼 버스란 무엇인가요?
컴퓨터에는 해당 장치 컨트롤러를 통해 CPU에 직접 연결되는 장치 유형이 있으며, CPU는 정기적인 주소 지정 작업을 통해 해당 장치에 액세스(또는 해당 컨트롤러에 액세스)할 수 있습니다. 이 연결 방법은 전통적인 의미의 버스 연결이 아닙니다. 그러나 장치 모델은 범용이어야 하므로 Linux는 이러한 장치를 연결할 가상의 플랫폼 버스를 만듭니다.
2.2 기기 모델의 핵심 아이디어
Linux 장치 모델의 핵심 아이디어는 (xxx 수단을 통해 xxx 목적을 달성하는 것)입니다.
1. 두 가지 데이터 구조인 Device(struct device)와 Device Driver(struct device_driver)를 사용하여 각각 "용도"와 "사용 방법"이라는 두 가지 관점에서 하드웨어 장치를 설명합니다. 이는 장치 드라이버 작성 형식을 통합하고 드라이버 개발을 에세이 질문에서 빈칸 채우기로 변경하여 장치 드라이버 개발을 단순화합니다.
2. 또한 장치 및 장치 드라이버의 두 가지 데이터 구조를 사용하여 하드웨어 장치의 플러그 앤 플레이(핫 스와핑)를 실현합니다.
Linux 커널에서 장치와 장치 드라이버의 이름이 동일한 경우 커널은 장치 드라이버 구조에서 초기화 기능(프로브)을 실행하여 장치를 초기화하고 사용할 수 있게 만듭니다.
대부분의 핫스왑 가능 장치의 경우 해당 장치 드라이버는 항상 커널에 존재합니다. 장치가 연결되지 않은 경우 해당 장치 구조가 존재하지 않으므로 해당 드라이버가 초기화 작업을 수행하지 않습니다. 장치가 삽입되면 커널은 드라이버 실행을 트리거하는 장치 구조(드라이버와 동일한 이름)를 생성합니다. 이것이 플러그 앤 플레이 개념입니다.
3. "버스->장치" 유형 트리 구조를 통해 장치 간 종속성을 해결합니다(2.1장의 범례 참조). 이 종속성은 전원 켜기 및 끄기, 전원 관리 등과 같은 프로세스에서 특히 중요합니다.
장치가 버스에 탑재되어 있다고 가정해 보겠습니다. 장치를 시작하려면 해당 장치가 탑재된 버스를 먼저 시작해야 합니다. 분명히 시스템에 많은 장치가 있고 종속성이 매우 복잡하다면 커널이나 드라이버 개발자 모두 이 관계를 유지할 수 없습니다.
장치 모델의 트리 구조는 이 종속성을 자동으로 처리할 수 있습니다. 장치를 시작하기 전에 커널은 장치가 다른 장치나 버스에 종속되어 있는지 확인합니다. 종속된 경우 종속 개체가 시작되었는지 여부를 확인하고 장치 시작 조건이 충족될 때까지 해당 개체를 먼저 시작합니다. 만났다. 드라이버 개발자가 해야 할 일은 장치 드라이버를 작성할 때 장치의 종속성을 커널에 알리는 것입니다.
4. 클래스 구조를 사용하여 장치 모델에 객체 지향 개념을 도입하면 공통 기능을 최대한 추상화하고 드라이버 개발 프로세스에서 노동의 중복을 줄이고 작업 부하를 줄일 수 있습니다.
위 내용은 Linux 디바이스 모델에 대한 자세한 설명(1)_기본 개념의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











DeepSeek은 웹 버전과 공식 웹 사이트의 두 가지 액세스 방법을 제공하는 강력한 지능형 검색 및 분석 도구입니다. 웹 버전은 편리하고 효율적이며 설치없이 사용할 수 있습니다. 개인이든 회사 사용자이든, DeepSeek를 통해 대규모 데이터를 쉽게 얻고 분석하여 업무 효율성을 향상시키고 의사 결정을 지원하며 혁신을 촉진 할 수 있습니다.

Docker 컨테이너를 사용하여 사전 컴파일 된 패키지 (Windows 사용자의 경우)를 사용하여 소스 (숙련 된 개발자)를 컴파일하는 것을 포함하여 DeepSeek를 설치하는 방법에는 여러 가지가 있습니다. 공식 문서는 신중하게 문서를 작성하고 불필요한 문제를 피하기 위해 완전히 준비합니다.

Bitget은 스팟 거래, 계약 거래 및 파생 상품을 포함한 다양한 거래 서비스를 제공하는 Cryptocurrency 교환입니다. 2018 년에 설립 된이 교환은 싱가포르에 본사를두고 있으며 사용자에게 안전하고 안정적인 거래 플랫폼을 제공하기 위해 노력하고 있습니다. Bitget은 BTC/USDT, ETH/USDT 및 XRP/USDT를 포함한 다양한 거래 쌍을 제공합니다. 또한 Exchange는 보안 및 유동성으로 유명하며 프리미엄 주문 유형, 레버리지 거래 및 24/7 고객 지원과 같은 다양한 기능을 제공합니다.

세계 최고의 디지털 자산 거래소 인 Ouyi Okx는 이제 안전하고 편리한 거래 경험을 제공하기 위해 공식 설치 패키지를 시작했습니다. OUYI의 OKX 설치 패키지는 브라우저를 통해 액세스 할 필요가 없습니다. 설치 프로세스는 간단하고 이해하기 쉽습니다. 사용자는 최신 버전의 설치 패키지를 다운로드하고 설치를 단계별로 완료하면됩니다.

Gate.io는 사용자가 설치 패키지를 다운로드하여 장치에 설치하여 사용할 수있는 인기있는 cryptocurrency 교환입니다. 설치 패키지를 얻는 단계는 다음과 같습니다. Gate.io의 공식 웹 사이트를 방문하고 "다운로드"를 클릭하고 해당 운영 체제 (Windows, Mac 또는 Linux)를 선택하고 컴퓨터에 설치 패키지를 다운로드하십시오. 설치 중에 항 바이러스 소프트웨어 또는 방화벽을 일시적으로 비활성화하여 원활한 설치를 보장하는 것이 좋습니다. 완료 후 사용자는 GATE.IO 계정을 만들려면 사용을 시작해야합니다.

OKX라고도하는 Ouyi는 세계 최고의 암호 화폐 거래 플랫폼입니다. 이 기사는 OUYI의 공식 설치 패키지 용 다운로드 포털을 제공하여 사용자가 다른 장치에 OUYI 클라이언트를 설치할 수 있도록합니다. 이 설치 패키지는 Windows, Mac, Android 및 iOS 시스템을 지원합니다. 설치가 완료되면 사용자는 OUYI 계정에 등록하거나 로그인하고 암호 화폐 거래를 시작하며 플랫폼에서 제공하는 기타 서비스를 즐길 수 있습니다.

Gate.io는 광범위한 토큰 선택, 낮은 거래 수수료 및 사용자 친화적 인 인터페이스로 유명한 호평을받는 암호 화폐 거래 플랫폼입니다. Gate.io는 고급 보안 기능과 우수한 고객 서비스를 통해 트레이더에게 신뢰할 수 있고 편리한 암호 화폐 거래 환경을 제공합니다. Gate.io에 가입하려면 제공된 링크를 클릭하여 공식 등록 설치 패키지를 다운로드하여 Cryptocurrency 거래 여정을 시작하십시오.

이 튜토리얼은 기존 Apache 서버와 함께 Ubuntu 시스템에 Nginx 및 Phpmyadmin을 설치하고 구성하는 것을 안내합니다. 우리는 Nginx 설정, Apache와의 잠재적 포트 충돌 해결, Mariadb 설치를 다루겠습니다.
