공유자원을 이용하는 코드
MicroC/OS ii 에서의 사용법
OS_EVENT* sem;
sem = OSSemCreate(1);
/task1/
OSSemPend(sem, 0, &err);
a++; //critical section
OSSemPost(sem);
/task2/
OSSemPend(sem, 0, &err);
a--; //critical section
OSSemPost(sem, 0 , &err);
system ceiling을 정해둔 후 그것보다 높아야 critical section에 접근이 가능하다.
system ceiling : semaphore 생성시 해당 semaphore를 접근하는 task 중 가장 우선순위가 높은 task의 우선순위 값을 부여한다.
priority가 system ceiling보다 높아지면 접근이 가능해진다.
priority ceiling
s0 : J0
s1 : J1
s2 : J1