Unix 시스템에서 일반적으로 사용되는 권장 파일 잠금은 무엇입니까?

Unix 시스템에서 일반적으로 사용되는 권장 파일 잠금은 무엇입니까?

Unix 계열 시스템은 일반적으로 Microsoft 운영 체제에서 사용하는 필수 잠금 대신 파일 IO에 권고 잠금을 사용한다는 내용을 읽었습니다. 내가 올바르게 이해했다면 강제 잠금 파일 잠금은 운영 체제 자체에서 시행됩니다. 그러나 나는 자물쇠에 대해 상담하는 것에 대해 직감이 없습니다. "foo" 파일에서 작업하는 두 프로세스 "A"와 "B"를 예로 들어 보겠습니다. "A"가 "foo"에 쓰고 "B"가 "foo"에서 읽는다고 가정합니다. 이 경우 권고 잠금은 어떻게 작동합니까? OS/파일 시스템이 "foo"에 대한 잠금을 강제하지 않는 경우 읽기 및 쓰기에 대한 일관성은 어떻게 유지됩니까?

답변1

권고 잠금은 "평화로운" 협력 프로세스에 적용됩니다. 커널은 잠금을 추적하지만 강제로 적용하지는 않습니다. 이를 준수하는 것은 애플리케이션에 달려 있습니다. 이렇게 하면 커널이 교착 상태 등을 처리할 필요가 없습니다.

강제 잠금은 System V Unix에 도입되었지만 디자인이 가장 스마트하지 않은 것으로 나타났습니다. (즉, 주변에 방법이 있습니다.) Unixy 시스템에서 진정한 강제 잠금과 같은 것이 필요한 경우 서버가 공유 리소스에 대한 권한이 있는 클라이언트-서버 디자인 패턴을 따르십시오.

관련 정보