lock 기본 아이디어

- 임계구역에 접근하는 모든 스레드는 lock(변수) 를 가지고있다.
- 하나의 스레드가 lock 을 획득하면 다른 스레드 lock 을 획득한 스레드가 lock을 놓아줄때까지 기다림
lock의 목표
- 상호배제
- 공평성
- performance(적은 오버헤드) : lock 을 획득, 릴리즈 등은 너무 많은 자원을 소모해서는 안된다.
- lock 의 실행은 사용자 프로그램, 커널코드 둘다 필요하다
- lock 의 실행을 위해서 하드웨어와 OS 의 도움이 필요하다.
interrupts 를 막는것으로 lock 을 실현할 수 있을까 ?
- 결론은 그렇지 않다. 인터럽트는 특권 인스트럭션 이기떄문에 프로그램이 악용할 수 있다.(독점)
- 멀티프로세서 시스템에서는 작동하지않는다. 다른 코어에 스레드는 임계 구역을 접근할 수 있다.