안녕하십니까 까마굽니다.. (__)제가 어제하면서 느낀건데요..  커널 구조체의 동기화는 세머포어를 쓰는거 보다..인터럽터를 Disable해서 빨리 처리하고 나가는게 더 좋은거 같네요..시리얼에서 입력을 받는 Queue의 동기화를 위해서 세머포어를 사용했었습니다..원래는 cli sti를 이용한 동기화를 사용했는데요..처음에는 별 탈없는듯 보였지만...이게 고속으로 시리얼에서 recv가 되니까.. 확실히 속도 차이가 나네요..특히.. 이 Queue를 다른 스레드가 역시 접근하는데, 이렇게 되니..세머포어인 경우, 어느쪽이 lock()을 올리고 switching되어버리는 경우,다른 스레드는 lock() 했는데, 당근 다른놈이 lock() 해놨으니 대기..다시 switching 되서 하던거 마저 하고 unlock() 머 이런식으로 불필요한 태스크 전환( 왜?? 전환해도 Queue를 사용할수 없기 때문에 또 자야됨.. ㅡ_ㅡ;; )이 계속 일어나서 오히려 더 느린 결과를 초래하는군요..그래서 생각인데, 커널 구조체는 cli, sti를 이용해서 동기화 하는게 오히려 더 나을듯 합니다. Semaphore를 쓰는건.. 그 자원 외의 다른 자원을 사용하는 놈들은 그대로 수행가능하게 할려고 쓴다고 생각하는데, 커널 구조체는 그 자체가 워낙 여러군데서 사용되는중요한 것들이라.. semaphore를 쓰는건 무의미 하다고 생각되네요..다른 분들 생각은 어떤가요??아닌가요??그럼 좋은하루 되세요 (__)

+ Recent posts