Locks
title: 2025-09-23 author: 강병호 date: 2025-09-23 category: TIL/강병호/2025/09 layout: post (자유) —
권고적 락 (Advisory Locking)
대부분의 운영체제(특히 Unix/Linux)에서 기본적으로 사용되는 방식입니다.
- 정의: 락(Lock)을 설정하는 것은 운영체제의 기능이지만, 다른 프로그램이 락이 걸린 파일에 접근하려고 할 때 운영체제가 이를 강제로 막지 않습니다.
- 작동 방식: 락을 사용하고자 하는 모든 프로그램이 “자율적으로” 락이 걸려 있는지 확인하고, 락이 걸려 있다면 접근을 시도하지 않는 규칙을 따라야 합니다.
- 비유: 사무실 문에 “사용 중(Do Not Disturb)”이라는 팻말을 걸어두는 것과 같습니다. 예의 바른 사람은 팻말을 보고 들어가지 않겠지만, 무시하는 사람은 그냥 문을 열고 들어갈 수 있습니다.
- 장점:
- 유연성이 높습니다.
- 시스템 자원 소모가 적어 성능에 영향을 덜 줍니다.
- 단점:
- 모든 프로그램이 락 규칙을 지켜야만 정상적으로 동작합니다.
- 만약 어떤 프로그램이 락을 무시하고 접근하면 데이터 충돌이나 손상이 발생할 수 있습니다.
강제적 락 (Mandatory Locking)
일부 운영체제에서 지원하는 강력한 제어 방식입니다.
- 정의: 프로그램이 파일에 락을 걸면, 운영체제가 직접 이 락을 강제로 적용합니다. 락이 걸린 파일에 다른 프로그램이 접근하려 하면, 운영체제는 해당 접근 요청을 자동으로 거부하거나 프로세스를 대기시킵니다.
- 작동 방식: 락이 설정되면, 파일을 사용하는 프로그램의 의사와 관계없이 운영체제가 모든 접근을 통제합니다.
- 비유: 사무실 문에 물리적인 자물쇠를 채우는 것과 같습니다. 자물쇠가 잠겨 있으면, 아무리 문을 열려고 해도 물리적으로 불가능합니다.
- 장점:
- 강력한 데이터 무결성(Integrity)을 보장합니다.
- 락 규칙을 따르지 않는 프로그램을 방지할 수 있습니다.
- 단점:
- 운영체제가 항상 락 상태를 확인해야 하므로 오버헤드(Overhead)가 발생하여 성능이 저하될 수 있습니다.
- 교착 상태(Deadlock)에 빠지기 쉽습니다.