세마포어는 P, V 오퍼레이션을 fair하지 않을 때 문제가 발생하며 소프트웨어 툴이 발견할 수 없다는 측면에서 race condition 버그를 자주 발생시킵니다. 대부분의 경우 하나의 프로세스에서 발생하지 않고 여러 개의 프로세스들이 유기적으로 동작할 때 나타나는 경우가 많습니다. 이런 문제를 해결하기 위한 structured sychronization preemptive가 모니터(Monitor)입니다. 세마포어가 너무 로우레벨이여서 버그를 발생하는 일이 자주 일어납니다. 하이레벨로 코딩을 할때는 자동적으로 synchronization을 해주는 모니터가 존재합니다. 이전에 배운 spin lock이나 disable interrupt는 하드웨어적인 preemptive이고 세마포어는 OS가 제공해주는 소프..