본문 바로가기

세마포어4

모니터 알고리즘 모니터 알고리즘은 프로그래밍 언어 수준에서 동시성을 제어하여 타이밍 오류를 해결한 상호 배제 기법이다. 고수준의 추상화로 프로그래밍 언어나 라이브러리에 의해 제공된다. 모니터는 상호배제와 조건 변수를 내부적으로 구현하여 프로그래머가 간편하게 사용할 수 있도록 한다.  모니터의 특징   상호배제 - 모니터 내에선 한 번에 하나의 스레드만 실행될 수 있다. 다른 스레드는 대기 상태에 들어간다. 조건변수 - 모니터 내부에서 조건 변수를 사용하여 스레드의 대기와 신호를 관리한다. 조건이 충족될 때까지 스레드를 대기시키고 충족되면 스레드를 깨워서 실행한다. 2024. 5. 23.
세마포어(Semaphore) 정의     세마포어는 공유자원이 하나 이상일 때 처리하는 동기화 방법이다.  세마포어는 교착 상태에 대한 해법으로 원자적 함수로 제어되는 정수 변수로 병렬 프로그래밍 환경에서 공유자원에 대한 접근 제어를 하는 방법 1개의 공유되는 자원에 제한된 개수의  프로세스 혹은 쓰레드가 접근할 수 있도록 한다. 원자성 여러 쓰레드가 존재할 때, 특정 시점에서 어떤 함수를 2개 이상 쓰레드가 동시에 호출하지 못하는 성질을 말한다. 이러한 성질을 보장한 함수를 원자적 함수라고 한다.  구성    세마포어는 두 가지 형태를 갖는다. 첫 번째로 카 카운팅 세마포어(Counting Semaphore)와 바이너리 세마포어(Binary Semaphore)가 있다.  카운팅 세마포어는 정수 값을 가지며 여러 개의 자원을 관리할.. 2024. 5. 21.
뮤텍스(Mutex) 뮤텍스란?   뮤텍스는 상호 배제(Mutual Exclusion)의 약자로 락이라고도 한다. 병렬 프로그래밍에서 공유 불가능한 자원에 대한 접근에 제한을 강제하기 위한 기법으로 Key를 기반으로 하는 상호 배제 기법 중 하나이다.  뮤텍스는 동시성이 강제되지 않은 자원 즉, 임계 구역을 가진 쓰레드들이 단독으로 실행하도록 하는  동기화 기법이다.   뮤텍스는 Locking 매커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계 영역에 들어 올 수 있게 하며 Lock과 Unlock, 두 가지 연산만을 지원하는 된다는 특징이 있다.  Lock : 현재의 임계 구역에 들어갈 권한을 얻어온다. 만일 다른 쓰레드나 프로세스가 임계 구역을 수행 중이라면 종료할 때 까지 대기 한다.Unlock : 현재.. 2024. 5. 20.
임계 구역 (Critical Section) 정의  여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 블록을 말한다. 여러 프로세스나 쓰레드가 동일 자원을 동시에 참조하여 값이 오염될 위험 가능성이 있는 영역이며 프로그래밍 시엔 성능 향상을 위해 이 영역을 최소화하는 방향으로 설계 해야 한다.  임계 영역 해결 조건상호 배제(Mutual exclution) - 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야한다.진행(Progress) - 임계영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러개라면 어느것이 들어갈지 결정해주어야 한다.한정대기(Bounded waiting) - 다른 프로세스의 기아(Starvation)를 방지하기 위해, 한번 임계구역에 .. 2024. 5. 19.