diff --git "a/9\354\243\274\354\260\250/heehee.md" "b/9\354\243\274\354\260\250/heehee.md"
new file mode 100644
index 0000000..077a4fe
--- /dev/null
+++ "b/9\354\243\274\354\260\250/heehee.md"
@@ -0,0 +1,69 @@
+# 프로세스 동기화
+
+## 동기화의 의미
+프로세스들의 수행 시기를 맞추는 것
+- 실행 순서 제어를 위한 동기화 : 프로세스를 올바른 순서대로 실행하기
+- 상호 배제를 위한 동기화 : 한 번에 하나의 프로세스만 접근해야 하는 자원에 동시 접근을 피하기 위한 동기화
+
+## 임계 구역(Critical Section)
+- 공유 자원: 여러 프로세스 혹은 스레드가 공유하는 자원
+ ex. 전역 변수, 파일, 입출력 장치 등등
+- 임계 구역: 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
+
+### 운영체제가 임계구역 문제를 해결하는 세 가지 원칙(= 상호배제를 위한 동기화)
+1. 상호배제(Mutual Exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 들어올 수 없다.
+2. 진행(Progress): 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 들어갈 수 있어야한다.
+3. 유한대기(Bounded Waiting): 한 프로세스가 임계 구역에 진입하고 싶다면 언젠가는 임계 구역에 들어올 수 있어야 한다.
+
+# 동기화 기법
+## 뮤텍스 락(Mutex Lock)
+상호 배제를 위한 동기화 도구(자물쇠 역할)
+
+- 뮤텍스 락의 단순한 형태: 전역 변수 하나, 함수 2개
+
+1. 자물쇠 역할: 프로세스들이 공유하는 전역 변수 lock
+2. 임계 구역을 잠그는 역할: acquire 함수
+3. 임계 구역의 잠금을 해제하는 역할: release 함수
+
+```c
+acquire(){
+ /* 바쁜 대기(busy waiting):
+ 임계 구역이 잠겨있는지를 반복적으로 확인하는 작업 */
+ while (lock == true)
+ ;
+ lock = true;
+}
+
+release(){
+ lock = false;
+}
+
+acquire(); // 자물쇠가 잠겨있는지 확인, 잠겨있지 않다면 잠그고 들어가기
+//임계 구역 // 임계 구역에서의 작업 진행
+release(); // 자물쇠 반환
+```
+
+## 세마포(Semaphores)
+좀 더 일반화된 방식의 동기화 도구로, 공유 자원이 여러개 있는 경우에도 적용 가능
+
+
+- 임계 구역 앞에서 멈춤 신호를 받으면 잠시 기다리기
+- 임계 구역 앞에서 가도 좋다는 신호를 받으면 임계 구역 진입
+- 세마포의 단순한 형태: 전역변수 하나, 함수 두개
+
+1. 임계 구역에 진입할 수 있는 프로세스의 개수(사용 가능한 공유 자원의 개수)를 나타내는 전역 변수 S
+2. 임계 구역에 들어가도 좋은지, 기다려야 할지를 알려주는 wait 함수
+3. 임계 구역 앞에서 기다리는 프로세스에 이제 가도 좋다고 신호를 주는 signal 함수
+
+### Busy waiting 문제
+- CPU 사이클 낭비
+
+- 해결 방법
+ - 사용할 수 있는 자원이 없을 경우 대기 상태로 만듦
+ - 사용할 수 있는 자원이 생겼을 경우 대기 큐의 프로세스를 준비 상태로 만듦
+
+## 모니터
+세마포어에서 매번 임계 구역 앞뒤로 wait(), signal()을 호출해야하는데 실수한다면?
+그래서 등장한 것이 모니터
+사용자(개발자)가 다루기에 편한 동기화 도구
+- 세마포어는 직접 키 해제와 공유자원 접근 처리를 해주어야 하는 반면, 모니터는 공유자원에 접근할 수 있는 키의 획득과 해제를 모두 함수로 처리해준다.
\ No newline at end of file