1. 세마포어(Semaphore) & 뮤텍스(Mutex)

  • 여러 프로세스나 쓰레드가 공유 자원에 접근하는 것을 제어하기 위한 방법 -> 공유 자원에 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있기 때문!

  • 뮤텍스(Mutex)

  • 자원의 접근을 동기화하기 위해 사용되는 상호배제 기술.
  • Locking 메커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계영역(Critical Section)에 들어올 수 있다. 그리고 오직 이 쓰레드만이 임계영역에서 나갈 때 뮤텍스를 해제할 수 있다.



  • 세마포어(Semaphore)

  • 뮤텍스와 다르게 lock을 걸지않은 쓰레드도 신호(signal)를 보내 lock을 해제할 수 있다.(Signaling 메커니즘)
  • 유지할 수 있는 값의 범위에 따라 이진 세마포어(binary)범용 세마포어(general)로 구분된다.



2. 페이징(Paging) & 세그멘테이션(Segmentation)

* 페이지(Page) & 페이징(Paging)

  • 가상 메모리는 페이지라는 고정 크기의 블록으로 나누어진다. -> 페이징(Paging)은 위의 페이지로 가상 메모리를 분할하여 메모리를 할당하고 주소변환을 하는 기법

* 세그먼트(Segment) & 세그멘테이션(Segmentation)

  • 페이지와 같은 개념이지만 일정한 크기로 나누는 것이 아닌 가변적 크기의 블록으로 나누는 개념이다. (마찬가지로 논리적 개념)

  • 세그먼트는 논리적 단위여서 중요도에 따라 나눌 수 있고, 용도에 따라 나눌 수 있어 보호와 공유에 편리하다.

* 페이징과 세그먼트 차이점

  1. 크기 분할법 : 고정 분할(paging) vs 가변 분할(segmentation)
  2. 내부단편화 : O (paging) vs X (segmentation)
  3. 외부단편화 : X (paging) vs X (segmentation)

* extra

1. 내부단편화

  • 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 현상

2. 외부단편화

  • 메모리가 할당 및 해제 작업의 반복으로 중간 중간에 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 경우