About me
home
Portfolio
home

Synchronous 이론

날짜
2023/07/19
태그
이론
운영체제

동기화 필수 개념

동기화(Synchronization): 여러 프로세스나 스레드가 작업을 수행할 때 서로 영향을 주거나 받는 경우, 그 실행 순서나 실행 시간을 조절하는 것
임계영역(Critical Section): 한 번에 한 개의 프로세스나 스레드만이 수행할 수 있는 코드 영역. 다른 프로세스나 스레드가 동시에 접근하면 안 되는 공유 데이터를 접근하는 부분을 의미
Lock : 상호 배제를 위한 잠금처리(데이터 경쟁)
Dead Lock : 프로세스가 자원을 획득하지 못해 다음 처리를 못하는 무한 대기(교착 상태)
Blocking : I/O 작업 등을 수행하는 동안 현재 스레드의 실행을 멈추는 것
Non-blocking : I/O 작업 등을 수행하더라도 현재 스레드의 실행을 멈추지 않는 것

동기화 기법(Synchronization techniques)

공유 자원에 대한 접근을 제어하고, 프로세스 간의 상호작용을 조절하기 위한 방법
스핀락
뮤텍스
세마포어
정의
공유 자원에 대한 접근을 제어하는 간단한 동기화 방법.공유 자원이 사용 가능해질 때까지 계속해서 자원의 상태를 확인 한다.
공유 자원에 대한 상호 배제를 제공하는 동기화 방법. 한 번에 하나의 스레드만이 뮤텍스를 소유하고 해당 뮤텍스가 보호하는 코드 영역에 접근할 수 있다.
카운트를 유지하는 더 일반적인 동기화 메커니즘. 여러 스레드가 공유 자원에 접근할 수 있다.
특징
가장 간단하며, 잠금 해제를 기다리는 시간이 짧을 경우 유용하다. 그러나 잠금 해제 시간이 길어지면 CPU 자원을 낭비하게 될 수 있다.
스레드가 잠금 해제를 기다리는 동안 블로킹되므로, 자원을 보호하는 코드 영역의 실행 시간이 길어도 효율적이다.
뮤텍스보다 더 복잡하지만, 동시에 여러 스레드가 자원에 접근하는 것을 가능하게 해서 더 많은 유연성을 제공한다.
사용 시기
공유 자원에 대한 접근이 잠깐 동안만 필요하고, 잠금 해제를 기다리는 시간이 짧을 때
공유 자원에 대한 접근 시간이 상대적으로 길 때 또는 한 번에 하나의 스레드만이 자원에 접근해야 할 때
동시에 여러 스레드가 자원에 접근해야 하는 상황 또는 공유 자원의 개수가 제한된 상황
뮤텍스는 락을 가진 자만 락을 해제할 수 있지만, 세마포어는 그렇지 않다.
상호 배제만 필요하다면 뮤텍스를, 작업간의 실행 순서 동기화가 필요하다면 세마포어를 권장

Next → Synchronous 실습