
1. T3가 어떤 임계구역(Critical Section)에 들어가서, 테스크 진행 중이다가, 우선순위가 높은 Task1이 Ready가 되어서, 선점하여 태스크1이 작동 됨
2. 태스크1에서도 임계구역에 진입을 하고 싶어서 P연산 하지만, 이미 Task3에서 임계구역에 있어서, 테스크1이 Blocked 된다.
3. Task3가 마저 실행되다가 또 Task2에 선점 된다.
T1이 T2보다 우선순위가 높은데, T1이 아닌, T2가 선점하게 된다

Task3가 임계구역을 빠져나가면, Task1이 실행되도록 한다
-> 우선 순위 역전 현상 막았음
뮤텍스 잠금과 뮤텍스 잠금 해제로 구현한다
세마포 Take -> 뮤텍스 잠금
세마포 Give -> 뮤텍스 잠금 해제
임시로 테스크가 우선 순위가 올라갔다가, 다시 낮아진다
-> 역전 예방하는 우선 순위 상속 예방 메커니즘구현
FreeRTOS는 천정이 아닌, 상속 기법을 지원한다. but 둘 다 기억해두자
뮤텍스 : 세마포 기술 기반, 상호 배제용으로 특별히 디자인 해둔 것, 우선순위전도 문제를 해결할 수 있다
즉, 상호 배제용 바이너리 세마포라고 생각해도 된다
- xSemaphoreCreateMutex() = 뮤텍스 생성
- xSemaphoreTake() = P연산, 잠금
- xSemaphoreGive() = V연산, 잠금 해제
FreeRTOS는 디바이스 드라이브를 사용하지 않는다

Application 입장에서는 HardWare가 뭔지 관심 없다.
Application에서 일관된 방법으로 호출하면, 내부적으로 VFS에서 각기 다른 디바이스 드라이버를 호출하여 HardWare를 사용한다
Application은 디바이스 드라이버하고 별개된 격리된 방법으로 개발이 가능하다
장점 : 테스크 어플리케이션과 디바이스 드라이버를 분리가 가능하다
단점 : 개발자가 더 많은 지식을 가지고 있어야 한다

ADC 하드웨어가 T1과 T2에서 서로 다른 목적을 위해 사용된다
-> 임계구역이 만들어진다 -> 상호배제가 필요하다

각 드라이버들이 같은 하드웨어를 접근하려고 한다 -> 동시 접근 이슈 생김
각 상위 디바이스 드라이버가 하위 디바이스 드라이버인 ADC 드라이버를 접근하면서 임계구역이 생긴다
-> 상호배제를 활용해서 해결
