[OS] Mutex, Semaphore, Monitor

Monitor

The difficulty of using semaphore

  • 세마포어는 synchronizatio에 편리하고 효과적이다.
  • 하지만 timing errors(타이밍 문제) 발생 e.g. semaphore’s problem
    • 모든 프로세스가 1로 초기화된 바이너리 세마포어 뮤텍스를 사용하는 경우, 모든 프로세스는 임계영역 진입 전에 wait(mutex)를, 임계영역을 빠져나올 때 signal(mutex)를 호출해야 한다. 만약 이 과정이 없다면 임계영역에 여러 프로세스가 존재하는 순간이 발생할 수 있다.
자세히 보기

[OS] Process Synchronization

Background

  • Cooperating 프로세스들은 서로 영향을 주거나 받을 수 있다.
  • Cooperating 프로세스들은 논리적 메모리 주소 공간을 공유하거나 데이터를 할당 받을 수 있다.

이 때, 공유 데이터에 동시 접근하면 데이터 일관성이 깨질 수 있다(데이터 무결성).

  • 동시 실행(Concurrent execution)
    • 프로세스의 명령어 실행 흐름 중 인터럽트가 발생할 수 있다.
    • 할당된 코어는 다른 프로세스에 의해 선점될 수 있다.
  • 병렬 실행(Parallel execution)
    • 두 개 이상의 명령어 흐름(instruction streams)
    • 서로 다른 코어에서 동시에 실행

따라서 Coopereating 프로세스 실행에서는 아래 내용이 확실하게 보장되어야 한다.

자세히 보기

[OS] CPU Scheduling

CPU Scheduling 이란?

  • 멀티 프로그래밍 OS의 기초
  • 목적: 1) 여러 프로그램을 동시에 실행, 2) CPU 활용을 극대화
자세히 보기