📘 1. 글로벌 락 (Global Lock)
✅ 정의
**글로벌 락(Global Lock)**은 시스템 또는 리소스 전체에 대해 단일한 잠금(Lock)을 걸어 동시 접근을 제한하는 동기화 방식입니다.
🔒 전체 시스템 또는 데이터셋에 대한 동시 접근을 차단하여 일관성을 확보하지만, **병목(Bottleneck)**을 유발할 수 있음.
✅ 적용 예시
1. 데이터베이스 (DBMS)
- 예시: MySQL MyISAM 엔진은 테이블 단위의 글로벌 락 사용
→ 하나의 클라이언트가 테이블을 수정하는 동안, 다른 트랜잭션은 읽기/쓰기 불가
종류 | 설명 |
---|
Table-level lock | 전체 테이블에 락을 걸어 쓰기 충돌 방지 |
Global Interpreter Lock (GIL) | Python의 CPython에서 하나의 스레드만 실행 허용 |
2. 커널 동기화
- 커널 수준에서 크리티컬 섹션 보호를 위해 글로벌 락 사용
- SMP (Symmetric Multiprocessing) 구조에서 병렬성 저하 가능
✅ 장단점 비교
항목 | 장점 | 단점 |
---|
Global Lock | 구현이 단순하고 안정성 있음 | 병렬 처리 성능 저하, 병목 발생 |
Fine-Grained Lock | 동시성 높음, 성능 향상 가능 | 구현 복잡, 교착 상태(deadlock) 위험 증가 |
✅ 실무 고려사항
- 단일 리소스 보호 목적에는 적절하나, 고성능 시스템에서는 지양
- 현대 시스템에서는 락 세분화(Fine-grained Locking), 락리스 구조(Lock-free), MVCC 등으로 대체
📘 2. 페이지 폴트 (Page Fault)
✅ 정의
**페이지 폴트(Page Fault)**는 프로세스가 참조하려는 메모리 페이지가 **현재 물리 메모리에 존재하지 않는 경우 발생하는 예외(인터럽트)**입니다.
🧠 가상 메모리(Virtual Memory) 시스템에서 발생하는 기억장치 계층 간 주소 미스 이벤트
✅ 발생 과정 및 종류
- CPU가 특정 주소의 데이터를 요청
- 해당 주소가 페이지 테이블에 매핑되어 있지 않거나 디스크에 있음
- 페이지 폴트 발생 → 커널이 개입
- 페이지를 디스크에서 RAM으로 로드 → 페이지 테이블 갱신
- 재시도 및 정상 수행
📌 종류:
유형 | 설명 |
---|
Soft Page Fault | 페이지가 메모리에 있으나, 페이지 테이블에 등록되지 않은 경우 |
Hard Page Fault | 페이지가 디스크에 있어 실제 I/O 작업이 필요한 경우 |
Invalid Page Fault | 접근 자체가 잘못된 경우 (e.g., NULL 포인터, 권한 없음) |
✅ 시스템 영향
항목 | 설명 |
---|
성능 저하 | 특히 Hard Page Fault는 디스크 I/O 발생으로 수천 배 느림 |
메모리 부족 지표 | 페이지 폴트가 지속되면 스래싱(Thrashing) 발생 가능 |
커널 역할 | 페이지 교체 정책 (e.g., LRU, Clock) 적용하여 메모리 관리 |
✅ 관련 개념
- 페이지 테이블(Page Table): 가상 주소 → 물리 주소 변환 정보 보유
- MMU (Memory Management Unit): 주소 변환 및 페이지 폴트 감지
- Swap Space: 메모리 부족 시 디스크 영역 활용
🧾 글로벌 락 vs 페이지 폴트 비교 요약
항목 | 글로벌 락 (Global Lock) | 페이지 폴트 (Page Fault) |
---|
정의 | 시스템 전체 또는 자원에 대한 단일 잠금 | 필요한 메모리 페이지가 없을 때 발생하는 인터럽트 |
주요 분야 | 동기화(Concurrency Control) | 메모리 관리(Virtual Memory) |
시스템 영향 | 동시성 제한, 병목 위험 | I/O 지연, 성능 저하 |
대표 사례 | DB 테이블 락, GIL | 메모리 부족, 스왑 인/아웃 |
해결 방법 | 락 세분화, MVCC | 메모리 증설, 캐시 최적화 |
✅ 결론 (기술사 수준 관점)
- 글로벌 락은 단순성은 있지만 고성능 시스템에서는 적합하지 않으며, **미세 락(Fine-grained Lock)**이나 비동기 처리 모델로 보완이 필요하다.
- 페이지 폴트는 가상 메모리의 필연적 현상이며, 시스템 자원 최적화 및 페이지 교체 알고리즘의 성능 설계가 핵심이다.