2009-06-08 4 views
0

프로그램에서 스레드에 대한 잠금을 설정하고 개체 또는 파일에 대한 잠금을 설정할 수 있습니다. 이러한 잠금간에 차이가 있습니까? 예인 경우 설계에 사용할 수있는 잠금 장치의 종류는 몇 개입니까?디자인에 사용할 수있는 잠금 장치의 종류는 몇 가지가 있습니까?

객체 지향 프로그래밍에서 자물쇠를 디자인하는 데 필요한 자습서가 있습니까?

+1

운영체제의 동시성 원칙을 더 잘 읽어보십시오. 빠른 Google이이 자습서를 작성했습니다. http://www.cs.princeton.edu/courses/archive/fall08/cos318/lectures/Lec8-SemaphoresMonitors.pdf –

답변

1

누군가가 dss538에 말했듯이 "대답"은 실제로 질문의 맥락에 달려 있습니다.

액세스 권한을 보호해야하는 이유는 무엇입니까?

데이터 조각 또는 단일 개체, 컨테이너의 항목, 코드 조각, 공유 파일과 같은 시스템 리소스?

다른 의미있는 질문은 얼마나 자주이 "물건"에 액세스 할 예정이고 그걸로 무엇을 할 것입니까?

서로 다른 잠금 기술은 서로 다른 오버 헤드를 갖는 경향이 있으며 중요한 섹션이나 뮤텍스는 드물게 액세스가 가능하고 거의 업데이트되지 않는 항목에 대해서는 완벽 할 수 있지만 드물게 업데이트하고 자주 액세스하는 경우 독자 라이터 락. 여기서 또 다른 후속 질문은 "내가 스핀 락을 사용해야합니까?"입니다. 다시 대답은 달려 있습니까? 시스템에서 또 무슨 일이 벌어지고 있으며 한 종류의 병목 현상 (거친 자물쇠)을 다른 종류의 것에서 교환하려고합니까?

내가 궁금해하는 마지막 질문은 무언가를 "잠그는 것"에 대한 대안이 무엇인가하는 것입니다. 즉, "안전하게"내 보호 대상물의 복사본을 가져 와서 해당 복사본을 "안전하게"(이상적으로는 수정하지 않고) , 내가 말했던 "장소"에 대해 걱정하는 것보다 훨씬 쉽습니다.

모호한 답변에 사과드립니다.보다 구체적인 질문은 여기서 도움이됩니다.

나는 당신이 동시성 prinicples에 대해 읽고 전통적인 "식사 철학자" "잠자는 이발사"및 아마도 심지어 "산타 클로스"문제를 이해하여 이러한 것들이 어떻게 작동하는지 더 많은 맥락을 이해할 것을 권장합니다.

위키 피 디아의 많은 콘텐츠가 좋으며, 특히 'Concurrency Control '은 선반에 훌륭한 OS/동시성 도서가없는 경우 유용한 시작 참조 점입니다.

+0

@Rick : 데이터 구조가 자주 업데이트되는 경우 어떻게해야합니까? – Kim

0

답변은 질문의 맥락에 따라 다릅니다.

일부 API에서 잠금을 얻고 있습니까? API 문서를 확인하십시오.

일반적으로 나는 아니오라고 말합니다. 자물쇠는 자물쇠입니다. 파일이나 오브젝트를 보호하기 위해이 파일을 사용한다는 사실은 API에는 문제가되지 않습니다. 어떻게 사용하는지는 당신에게 달려 있습니다. 원하는 경우 FileLock과 ObjectLock을 추상화하고 처리 할 수는 있지만 그게 당신에게 달려 있습니다.

관련 문제