링크 ux 커 널 기초 층 의 학습 (1)

1. 커 널 기초 층 데이터 구조 1: 양 방향 링크 list a): 링크 의 정의
struct list_head{
 struct list_head *next,*pre;
 }

b): container 대상 과 listentry
#define container_of(ptr,type,member){ \
    const typeof(((type *)0->member) *_mptr = (ptr); \
    (type*)((char*)_mptr-offset(type,member));})
#define list_entry(ptr,type,member) \
    container_of(ptr,type,member)

양 방향 링크 에 대한 상세 한 소 개 는 제 블 로 그 를 참고 하 시기 바 랍 니 다.
링크 ux 커 널 list. h 학습
2: hash 링크 a): 정의
struct hlist_head{
    struct hlist_head *first;
}

b): hash 링크 라 이브 러 리 는 list 와 같 습 니 다.
아래 글 의 뒷부분 이 바로 hash 링크 의 내용 을 참고 하 세 요.
링크 ux 커 널 list. h 학습
3: 검 붉 은 나무
a): 실질 적 으로 자체 균형 이 진 트 리 b): rbtree. c 파일 에 정의 (블 로그 업 데 이 트 를 기다 리 고 rbtree 에 대한 소개) c): 응용 장면 은 주로 메모리 관리, IO 스 케 쥴 링 알고리즘 등에 사용 되 어 빨간색 과 검은색 트 리 를 실현 했다.
4: radix 패 – 기본 트 리
a): 정의 / lib / radixtree. c 에서 b): radix 트 리 는 공간 이 시간 을 바 꾸 는 데이터 구조 로 공간의 여 유 를 통 해 시간 적 소 모 를 줄 였 다 (블 로그 업 데 이 트 를 기다 리 고 radix tree 에 대한 소개) c): page cache 의 관 리 는 radix tree 를 사용 했다.
2. 커 널 기초 층 의 동기 화 메커니즘 1: 자 회전 자물쇠 a): 역할 (1): 데이터 가 잠 겨 있 지 않 으 면 자 물 쇠 를 가 져 와 서 실행 합 니 다. 데이터 가 잠 겨 있 으 면 반드시 회전 (사실은 명령 을 반복 적 으로 실행 합 니 다) (2): 단일 프로세서 환경 (비 선점 식 커 널) 에서 자 물 쇠 는 작 동 하지 않 습 니 다 (3): 단일 프로세서, 선점 식 커 널 환경 에서.자 회전 자물쇠 의 역할 은 b 선점 금지): 자 회전 자물쇠 의 호출 (1): spinlock (2):spin_unlock
2: 커 널 신 호 량
a): 파일 semaphore. h 파일 에 정의 b): semaphore 와 mutex (1): semainit: 계수 가 많 을 수 있 습 니 다 (2): initmutex: 계수 1 의 신 호 량 c): 신 호 량 의 조작 (1): up: 신 호 량 방출 (2): down: 신 호 량 획득, 얻 지 못 하면 수면 상태 진입 (3): downtrylock: 신 호 량 을 가 져 옵 니 다. 가 져 오지 못 하면 바로 돌아 갑 니 다. 프로 세 스 가 수면 상태 에 들 어가 지 않 습 니 다.
주의: 자 회전 자물쇠 와 신 호 량 의 차이 1: 자 회전 자 물 쇠 는 처리 함수 와 tasklet 등 잠 을 잘 수 없 는 장면 에 사용 할 수 있 으 며 신 호 량 은 2: 잠 을 잘 수 있 는 장면 은 신 호 량 도 사용 할 수 있 고 자 회전 자 물 쇠 를 사용 할 수 있 습 니 다. 자 회전 자 물 쇠 는 보통 경량급 장면 에 사 용 됩 니 다.
3: 동기 화 메커니즘 – 원자 변수 a): 원자 변 수 는 원자의 데이터 구 조 를 제공 합 니 다. 이러한 데이터 구조 에 대한 읽 기와 쓰 기 는 세분 화 되 거나 중단 되 지 않 습 니 다. b): 원자 변수 가 제공 하 는 호출 (1): atomicadd: 원자 변수 에 정수 추가 (2): automicsub: 원자 변수 에서 정수 빼 기 (3): automicset: 원자 변수의 수치 설정 (4): automicread: 원자 변 수 를 읽 는 수치 4: 동기 화 메커니즘 – completion a): completion 은 완 료 를 기다 리 는 메커니즘 b 를 제공 합 니 다. 제공 하 는 호출 (1): waitfor_completion: 작업 완료 대기 (2): complete: 완 성 된 신호 5: 기타 커 널 동기 화 메커니즘 a): CPU 변수 DEFINEPER_CPU b): RCU 잠 금 c): 순차 잠 금

좋은 웹페이지 즐겨찾기