본문 바로가기
: ) IT

모니터 vs 세마포어

by miiinn 2026. 1. 13.

'모니터(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