'모니터(Monitor)'는 운영체제(OS) 파트에서 **'동기화(Synchronization)'**와 관련해 정말 중요하게 다뤄지는 개념입니다.
컴퓨터 구조에서 화면을 보여주는 그 장치(Monitor) 말고, 전공 시험에서는 **"공유 자원을 안전하게 관리하기 위한 설계 기법"**을 말합니다.
1. 모니터(Monitor)란?
여러 개의 프로세스나 스레드가 공유 데이터에 동시에 접근할 때, 데이터가 꼬이지 않도록(상호 배제) 보호해주는 '보호 구역' 혹은 **'관리자'**라고 생각하시면 됩니다.
- 비유: 공유 자원(데이터)을 금고 안에 넣어두고, **금고 지기(모니터)**를 두는 것과 같습니다. 누군가 금고 안의 데이터를 쓰고 싶으면 금고 지기에게 허락을 받아야 하고, 한 번에 딱 한 명만 들어갈 수 있습니다.
2. 왜 사용하나요? (세마포어와의 차이)
원래는 **세마포어(Semaphore)**라는 방식을 썼는데, 이건 프로그래머가 직접 P(wait)와 V(signal) 연산을 코드 여기저기에 써줘야 해서 실수하기 쉬웠습니다.
- 모니터의 특징:
- 자동화: 프로그래머가 복잡하게 코딩할 필요 없이, 모니터 안에 함수를 정의해두면 운영체제가 알아서 **상호 배제(Mutual Exclusion)**를 보장합니다.
- 캡슐화: 공유 자원과 이를 처리하는 함수들을 하나의 틀(모니터) 안에 묶어버립니다. (객체지향 프로그래밍과 비슷하죠!)
3. 시험에 나오는 모니터의 핵심 특징 (30문제 전형 단골)
- 상호 배제: 모니터 내의 프로시저(함수)는 한 번에 하나의 프로세스만 실행할 수 있습니다.
- 정보 은닉: 모니터 내부의 데이터는 외부에서 직접 접근할 수 없고, 오직 모니터가 제공하는 함수를 통해서만 접근 가능합니다.
- 조건 변수 (Condition Variable): 프로세스가 자원을 기다려야 할 때 사용하는 **wait()**와 signal() 연산이 존재합니다.
- 공유 자원 관리: 주로 **자료구조(Database)**나 공유 메모리를 보호할 때 사용합니다.
💡 헷갈리기 쉬운 개념 비교 (세마포어 vs 모니터)
| 구분 | 세마포어 (Semaphore) | 모니터 (Monitor) |
| 제어 주체 | 프로그래머가 직접 제어 (실수 위험) | 프로그래밍 언어/OS 차원에서 자동 제어 |
| 난이도 | 어려움 (코드가 복잡해짐) | 쉬움 (사용이 편리함) |
| 키워드 | P, V 연산, 정수값(S) | 캡슐화, 상호 배제 자동 보장 |
🧩 요약하자면
**"모니터는 공유 데이터를 보호하기 위해 데이터와 함수를 한곳에 묶어두고, 한 번에 한 놈만 들어오게 관리해주는 똑똑한 관리 시스템"**입니다.
': ) IT' 카테고리의 다른 글
| DMA (Direct Memory Access) / 가상메모리 (0) | 2026.01.13 |
|---|---|
| HDLC (High-level Data Link Control) (0) | 2026.01.13 |
| OSI 7계층 (0) | 2026.01.13 |
| 프로그램 번역과정(Compiler) (0) | 2026.01.13 |
| 오류검출방식 (0) | 2026.01.10 |