최근 pc는 다중 프로세스 다중 쓰레드를 지원하는데, 쓰레드가 동시에 진행되는 과정에서 같은 공유자원에 대한 뮤텍스나 atomic 자료형을 쓰면 보호를 할 수 있게 되는 거로 알고 있습니다.
여기서 궁금한게, 두 쓰레드가 동시에 1나노초도 차이가 안나고 똑같이 뮤텍스락을 한다면 결국 공유자원에 대한 보호가 안되는 거 아닌가요?
1 나노초라는 것이 하나의 쓰레드가 뮤텍스를 걸고 바로 다음 CPU 사이클에서 다른 쓰레드가 뮤텍스를 거는 상황과 같이 짧은 시간으로 이해하겠습니다.
뮤텍스를 걸때 사용하는 특별한 명령어(instruction)가 있습니다. test and set instruction(http://faculty.salina.k-state.edu/tim/ossg/IPC_sync/ts.html)이라고 하는데 거의 모든 현대 프로세서에서 지원하고 있으며 2가지 동작(test, set)을 하지만 그 동작 중에 선점당하지 않는 특징을 가지고 있습니다.
그래서 한 클럭이라도 빨리 뮤텍스를 걸었다면 그 쓰레드가 제어권을 가지게 되는 것입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
1 나노초라는 것이 하나의 쓰레드가 뮤텍스를 걸고
1 나노초라는 것이 하나의 쓰레드가 뮤텍스를 걸고 바로 다음 CPU 사이클에서 다른 쓰레드가 뮤텍스를 거는 상황과 같이 짧은 시간으로 이해하겠습니다.
뮤텍스를 걸때 사용하는 특별한 명령어(instruction)가 있습니다. test and set instruction(http://faculty.salina.k-state.edu/tim/ossg/IPC_sync/ts.html)이라고 하는데 거의 모든 현대 프로세서에서 지원하고 있으며 2가지 동작(test, set)을 하지만 그 동작 중에 선점당하지 않는 특징을 가지고 있습니다.
그래서 한 클럭이라도 빨리 뮤텍스를 걸었다면 그 쓰레드가 제어권을 가지게 되는 것입니다.
댓글 달기