2013-07-31 3 views

답변

5

나는 그렇게 생각하지 않는다.

(1) semephore.count는 unsigned int로 선언됩니다. 세마포어의 정의를 참조하십시오

struct semaphore { 
     spinlock_t  lock; 
     unsigned int  count; 
     struct list_head wait_list; 
    }; 

(2) 아래() 함수가 감소하기 전에 카운트 값을 확인합니다, 확인 계수가 음수가합니다.

하나의 메커니즘을 구현하지 않는 한 세마포어를 직접 사용하여 요구 사항을 충족시킬 수 없습니다.

+0

감사합니다. 나는 count가 atomic-t 인 구형 커널을보고 있었지만, 구형 커널에 대해서도 여전히 적절하다고 생각한다. – smoofra

1

숫자는 부호가 없으므로 음수로 설정했다고 생각하면 실제로 큰 양수입니다. 그래서 아니, 할 수 없습니다.

1

서명이 없으므로 좋지 않습니다. 또한 세마포어는 양수 일 때만 활성화되므로 세마포어를 음수로 초기화하여 많은 수의 데이터를 생성하면 세마포어가 제한하려는 항목에 대한 액세스를 허용하게됩니다.