요청과 그 결과가 동시에 일어나는 것
요청 후 결과가 와야만이 그 다음 작업이 이루어지는 방식
특징
요청과 그 결과가 동시에 일어나지 않는 것
요청 후 결과가 오는 동안 그 다음 작업이 이루어지는 방식
특징
Blocking/Non-Blocking는 Synchronous/Asynchronous와 관점이 다르고, 제어권이 어디에 있느냐에 대한 관점이다.
호출된 함수가 자신의 작업을 모두 끝날 때 까지 제어권을 갖고 있어 호출한 함수가 대기하도록 함
호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 함
임계 영역이란 멀티 스레딩에 문제점에서 나오듯, 동일한 자원에 동시에 접근하는 작업을 실행하는 코드 영역을 뜻한다.
공유되는 자원, 즉 동시에 접근하려고 하는 자원에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역을 임계 영역이라고 한다.
📍 Mutex Lock
동시에 공유 자원에 접근하는 것을 막기 위해 Critical Section 에 진입하는 프로세스는 Lock 을 획득하고 Critical Section 을 빠져나올 때, Lock 을 방출함으로써 동시에 접근이 되지 않도록 한다.
한계 : 다중처리기 환경에서는 시간적인 효율성 측면에서 적용할 수 없다.
📍 Semaphores
소프트웨어상에서 Critical Section 문제를 해결하기 위한 동기화 도구이다.
OS 는 Counting/Binary 세마포를 구분한다
카운팅 세마포
가용한 개수를 가진 자원 에 대한 접근 제어용으로 사용되며, 세마포는 그 가용한 자원의 개수 로 초기화 된다.
자원을 사용하면 세마포가 감소, 방출하면 세마포가 증가 한다.
이진 세마포
MUTEX 라고도 부르며, 상호배제의 머릿글자를 따서 만들어졌다.
이름 그대로 0 과 1 사이의 값만 가능하며, 다중 프로세스들 사이의 Critical Section 문제를 해결하기 위해 사용한다.
단점
Busy Waiting(바쁜 대기)
Deadlock(교착상태)
일련의 프로세스들이 서로가 가진 자원을 기다리며 block 되어 더 이상 진행이 될 수 없는 상태를 말한다.
모니터
고급 언어의 설계 구조물로서, 개발자의 코드를 상호배제 하게끔 만든 추상화된 데이터 형태이다.
공유자원에 접근하기 위한 키 획득과 자원 사용 후 해제를 모두 처리한다. (세마포어는 직접 키 해제와 공유자원 접근 처리가 필요하다. )
이미지 출처 : Link