6 - 타이머자물쇠상호 배척 체자전거 자물쇠원자 조작

3715 단어 구동 하 다
커 널 타이머 프로 그래 밍:
시계 펄스: soc 의 중요 한 지표 와 성능 매개 변수 입 니 다.커 널 사용 (프로 세 스 스케줄 링, 시간 계산).시계 인 터 럽 트 라 고도 하 는데 보통 운영 체제 의 0 번 인 터 럽 트 입 니 다.
jiffies:
  • 커 널 에 서 는 시스템 이 작 동 된 이래 모두 몇 차례 의 시계 펄스 가 발생 했 는 지 를 나타 낸다.

  • HZ:
  • 커 널 에 서 는 1 초 에 몇 번 의 시계 펄스 가 발생 하 는 지 나타 낸다
  • .
    Tick:
  • 커 널 에 서 는 두 번 의 시계 펄스 간 의 시간 간격 을 나타 낸다.

  • 커 널 은 소프트웨어 차원 에 있다.일련의 데이터 구조 와 함 수 를 제공 하여 바 텀 구동 시간 계산 프로 그래 밍 을 제공 합 니 다.
    단계:
  • 1. 정의:
  • struct timer_list xxx;

  • 2. 초기 화:
  • init_timer(&xxx);
  • xxx.function = do_my_xxx;
  • xxx.data = (unsigned long)ooo;
  • xxx.expeirs = jiffies + 400;

  • 3. 사용:
  • 3.1 등록 및 타이머 시작:
  • add_timer(&xxx);

  • 3.2 타이머 리 셋 함수 완성:
    void do_my_xxx(unsigned long data)
            {
                .......
            }
  • 3.3 타이머 지연 시간 을 수정 하고 시작 합 니 다.
  • mod_timer(&xxx,jiffies + );

  • 3.4 타이머 로그아웃:
  • del_timer(&xxx);


  • 동시 제어:
  • 여러 프로 세 스 가 동시에 임계 자원 구역 을 방문 하 는 것 은 경쟁 현상 을 일 으 킬 수 있 기 때문에 우 리 는 이런 현상 을 통제 해 야 한다. 바로 병행 통제 이다.병발 제어 에서 자주 사용 하 는 수단 은 자물쇠 다.

  • 링크 ux 커 널 에서 제공 하 는 자물쇠:
  • 1. 차단 중단 (강력 추천 사용 하지 않 음)
  • 2. 원자 조작 (사용 하지 않 고 어 셈 블 리 에서 흔히 볼 수 있 으 며 보통 아주 짧 은 할당 문 일 뿐)
  • 3. 자전거 자물쇠
  • 3.1 읽 기 및 쓰기 잠 금 읽 기 프로 세 스 병행, 읽 기 및 쓰기 프로 세 스 상호 배척, 쓰기 프로 세 스 상호 배척
  • 3.2 순서 로 읽 기 프로 세 스 를 잠 그 고 읽 기 프로 세 스 를 병행 하 며 쓰기 프로 세 스 가 서로 배척 합 니 다
  • 3.3 RCU 읽 기 프로 세 스 병행, 읽 기 프로 세 스 병행, 쓰기 프로 세 스 병행
  • 4. 신 호 량 이 pv 신 호 를 조작 하 는 자물쇠 로 그 사용 장면 은 상호 배척 체 와 유사 하지만 효율 이 상호 배척 체 보다 낮 기 때문에 상호 배척 체 로 대체 된다
  • .
  • 5. 상호 배척 체
  • 자 회전 자물쇠 와 상호 배척 체 사용 의 3 대 원칙:
  • 1. 임계 자원 구역 이 시간 에 비해 자전 자 물 쇠 를 사용 하고 임계 자원 구역 이 비교적 클 때 상호 배척 체 를 사용한다.자전 자물쇠 가 직면 하 는 것 은 자전 대기 cpu 자원 소모 이 고, 상호 배척 체 는 프로 세 스 전환 의 자원 소모 이기 때문이다.
  • 2. 임계 자원 구역 에 수면 을 일 으 키 는 함수 가 있 을 때 상호 배척 체 만 사용 할 수 있다.프로 세 스 상하 문 에서 상호 배척 체 가 실행 되 기 때문이다.인 터 럽 트 컨 텍스트 에서 자동 잠 금 이 실 행 됩 니 다. 인 터 럽 트 컨 텍스트 에 서 는 프로 세 스 스케줄 을 절대 피 합 니 다. 그렇지 않 으 면 시스템 붕 괴 를 일 으 킬 수 있 습 니 다.
  • 3. 임계 자원 구역 에 중단 이 있 을 때 자 회전 자물쇠 만 사용 할 수 있 고 상호 배척 체 를 사용 할 수 없다.상호 배척 체 는 프로 세 스 상하 문 에서 실행 되 기 때문이다.인 터 럽 트 중 프로 세 스 스케줄 링 을 금지 하고 상호 배척 체 를 사용 하면 컨 텍스트 를 잃 어 버 릴 수 있 습 니 다.

  • 1. 원자 조작:
  • 1. 정의 및 초기 화
  • atomic_t xxx = ATOMIC_INIT(1);

  • 2. 사용:
  • atomic_dec_and_test(&xxx);
  • atomic_inc(&xxx);
  • 또는:
  • atomic_inc_and_test(&xxx);
  • atomic_dec(&xxx);

  • 2. 자전거 자물쇠:
  • 1. 정의:
  • spinlock_t xxx;

  • 2. 초기 화:
  • spin_lock_init(&xxx);

  • 3. 사용:
  • 3.1 잠 금:
  • spin_lock(&xxx);

  • 3.2 잠 금 해제:
  • spin_unlock(&xxx);


  • 3. 신 호 량:
  • 1. 정의:
  • struct semaphore xxx;


  • 2. 초기 화:
  • sema_init(&xxx,1);

  • 3. 사용:
  • 3.1 잠 금:
  • down(&xxx);

  • 3.2 잠 금 해제:
  • up(&xxx);



  • 4. 상호 배척 체:
  • 1. 정의:
  • struct mutex xxx;

  • 2. 초기 화:
  • mutex_init(&xxx);

  • 3. 사용:
  • 3.1 잠 금:
  • mutex_lock(&xxx);

  • 3.2 잠 금 해제:
  • mutex_unlock(&xxx);



  • 좋은 웹페이지 즐겨찾기