> php教程 > PHP开发 > 본문

Linux 시스템 커널의 장치 매퍼 메커니즘 (1) (2)

黄舟
풀어 주다: 2016-12-23 14:06:54
원래의
1479명이 탐색했습니다.

위 세 가지 객체의 구체적인 구현을 코드에서 자세히 살펴보겠습니다. dm.c 파일에 정의된 mapped_device 구조는 매핑된 장치를 나타내는 데 주로 사용되며, 매핑된 장치와 관련된 잠금이 주로 포함됩니다. 등록된 요청 큐와 일부 메모리 풀 및 해당 매핑 테이블에 대한 포인터와 같은 필드. 매핑된 장치에 해당하는 매핑 테이블은 dm_table.c 파일에 정의된 dm_table 구조로 표시됩니다. 이 구조에는 dm_target 구조의 배열이 포함되어 있습니다. dm_target 구조는 mapped_device와 해당 대상 장치 중 하나 간의 매핑 관계를 구체적으로 설명합니다. dm_table 구조에서 이러한 dm_target은 IO 요청 매핑 중에 검색 작업을 용이하게 하기 위해 B-트리 방식으로 구성됩니다. Dm_target 구조는 대상 장치에 해당하는 구조에 의해 매핑된 매핑된 장치 논리 영역의 시작 주소와 범위를 구체적으로 기록하고, 특정 대상 장치 관련 작업의 target_type 구조에 대한 포인터도 포함합니다. Target_type 구조에는 주로 대상 장치에 해당하는 대상 드라이버 플러그인의 이름, 이 유형의 대상 장치를 구축 및 삭제하는 정의된 방법, 이 유형의 대상 장치에 해당하는 IO 요청 재매핑 및 종료 IO 방법이 포함됩니다. , 등. 특정 대상 장치를 나타내는 필드는 dm_target의 private 필드이며, 포인터는 매핑된 장치에 의해 매핑된 특정 대상 장치에 해당하는 구조를 가리킵니다. 타겟 장치의 구체적인 구조가 타겟 유형에 따라 다르다는 것을 나타냅니다. 예를 들어, 타겟 장치에 해당하는 가장 간단한 선형 매핑 타겟 유형의 구조는 dm-linear.c 파일에 정의된 선형_c 구조입니다.

struct linear_c {

 struct dm_dev *dev;

 sector_t start;

};
로그인 후 복사

대상 장치의 정의는 매우 간단합니다. 해당 물리적 ​​장치를 나타내는 dm_dev 구조 포인터와 물리적 장치의 섹터 단위로 시작하는 오프셋 주소만 포함됩니다. . 위의 데이터 구조 간의 관계는 그림 3에 나와 있습니다.

Linux 시스템 커널의 장치 매퍼 메커니즘 (1) (2)

그림 3 장치 매퍼의 여러 중요한 데이터 구조 간의 관계

커널

아래에서는 특정 코드를 사용하여 커널에서 매핑된 장치를 생성하는 과정을 간략하게 소개합니다.

1 커널이 제공하는 ioctl 인터페이스가 사용자 공간에 전달하는 매개변수에 따라 , dm 사용 - ioctl.c 파일의 dev_create 함수는 해당 매핑된 장치 구조를 생성합니다. 이 프로세스는 매우 간단합니다. 매핑된 장치와 IO 작업을 위해 사전 적용된 메모리 풀을 포함하여 필요한 메모리 리소스에 대해 주로 커널에 적용됩니다. 매핑된 장치에 해당하는 요청 큐 dm_request는 에서 제공하는 blk_queue_make_request 함수를 통해 등록됩니다. 핵심. 그리고 매핑된 장치를 커널에 디스크 블록 장치로 등록합니다.

2. dm_hash_insert를 호출하여 현재 커널에 생성된 모든 매핑된 장치를 저장하는 장치 매퍼의 전역 해시 테이블에 생성된 매핑된 장치를 삽입합니다.

위 내용은 Linux 시스템 커널의 Device Mapper 메커니즘(1)(2)의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!