Linux 커널에 대해 읽으면서 커널 데이터 구조의 개념을 접했습니다. Google을 통해 더 많은 정보를 찾으려고 노력했지만 아무것도 찾지 못했습니다.
- 커널 데이터 구조란 무엇입니까?
- 요구 사항, 사용 및 액세스 권한은 무엇입니까?
- 커널 내부의 데이터 구조는 어떻게 구성되어 있습니까?
file_operations
커널 데이터 구조의 예는 또는 입니다 c_dev
.
답변1
커널은 C로 작성되었습니다. "커널 데이터 구조"는 단순히 소스 코드에 정의된 대부분의 복합 유형( struct
s 및 s ) union
의 다양한 형식(트리, 목록, 배열 등)을 나타냅니다 . 여기서 C 코드는 일반적으로 이와 같은 항목으로 가득 차 있습니다. C를 이해하지 못한다면 이해가 되지 않을 것입니다.
데이터 구조메모리나 주소 공간에 정보 저장소를 구성합니다. Linux 커널이 사용하는 것에는 특별한 것이 없습니다. 커널 모듈을 작성하는 경우 그 중 일부를 사용할 수 있거나 사용해야 하지만 그 사용은 전적으로 커널 내에서 이루어집니다. 커널 메모리는 커널에 의해서만 액세스되며 그 구조는 다른 어떤 것과도 관련이 없습니다.
답변2
커널은 기존 사용자 프로세스, 할당된 메모리, 프로세서 상태, 로드된 장치 드라이버, 하드웨어 상태, 캐시된 I/O, 네트워크 포트, 타이머, 성능 지표 등 시스템 상태를 추적합니다. 기본적으로 모든 것은 시스템 리소스이지 사용자 프로세스의 일부도 아니고 커널 프로그램 자체의 일부도 아닙니다.
이 모든 정보는 정의된 방식으로 형식화된 레코드를 저장하는 단순한 메모리인 "커널 데이터 구조"에 저장됩니다.
일반적으로 커널 디버깅, 추적 또는 코어 덤프에 대해 읽을 때 이 용어를 접하게 됩니다. 코어 덤프는 커널 구조만 복사하거나 프로세스/사용자 데이터와 함께 커널 구조를 복사할 수 있습니다. 대부분의 경우 커널 데이터 구조만 필요합니다.