1. 세마포어(Semaphore) & 뮤텍스(Mutex)
-
여러 프로세스나 쓰레드가 공유 자원에 접근하는 것을 제어하기 위한 방법 -> 공유 자원에 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있기 때문!
-
뮤텍스(Mutex)
- 자원의 접근을 동기화하기 위해 사용되는 상호배제 기술.
- Locking 메커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계영역(Critical Section)에 들어올 수 있다. 그리고 오직 이 쓰레드만이 임계영역에서 나갈 때 뮤텍스를 해제할 수 있다.
-
세마포어(Semaphore)
- 뮤텍스와 다르게 lock을 걸지않은 쓰레드도 신호(signal)를 보내 lock을 해제할 수 있다.(Signaling 메커니즘)
- 유지할 수 있는 값의 범위에 따라 이진 세마포어(binary)와 범용 세마포어(general)로 구분된다.
2. 페이징(Paging) & 세그멘테이션(Segmentation)
* 페이지(Page) & 페이징(Paging)
- 가상 메모리는 페이지라는 고정 크기의 블록으로 나누어진다. -> 페이징(Paging)은 위의 페이지로 가상 메모리를 분할하여 메모리를 할당하고 주소변환을 하는 기법
* 세그먼트(Segment) & 세그멘테이션(Segmentation)
-
페이지와 같은 개념이지만 일정한 크기로 나누는 것이 아닌 가변적 크기의 블록으로 나누는 개념이다. (마찬가지로 논리적 개념)
-
세그먼트는 논리적 단위여서 중요도에 따라 나눌 수 있고, 용도에 따라 나눌 수 있어 보호와 공유에 편리하다.
* 페이징과 세그먼트 차이점
- 크기 분할법 : 고정 분할(paging) vs 가변 분할(segmentation)
- 내부단편화 : O (paging) vs X (segmentation)
- 외부단편화 : X (paging) vs X (segmentation)
* extra
1. 내부단편화
- 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 현상
2. 외부단편화
- 메모리가 할당 및 해제 작업의 반복으로 중간 중간에 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 경우