동기화란?
- 작업들 사이에 실행 시기를 맞추는 것을 의미합니다.
동기화가 필요한 이유?
- 다중 스레드를 사용할때, 스레드의 작업 도중에 다른 스레드의 작업 상황을 확인하지 않습니다.
- 이 때문에 여러 스레드가 동일한 데이터에 접근 하는 경우 다른 스레드의 작업이 개입되는 경우가 생깁니다.
- 이러한 경우 의도하는 대로 결과가 나오지 않기 때문에, 동기화를 사용하여 작업의 순서를 지정해주어야 합니다.
Ex)
- 위와같이 Thread A를 진행중에 Thread B가 개입하여 문제가 생길 수 있습니다.
- 이 때문에 동기화를 통해 Thread A가 끝난 뒤, Thread B가 동작하게 설정해야 합니다.
Mutual exclusion (상호 배제)
- 공유 변수 영역에 대한 동시 접근을 막는 방법입니다.
- 한 스레드가 공유 변수에 접근하여 작업하는 동안, 다른 스레드가 공유변수를 접근할 수 없게 합니다.
- 이를 공유 영역을 잠금(lock) 한다고 합니다.
- 이러한 공유 변수를 임계자원(critical resource), 또는 임계 영역(critical section)이라고 합니다.
교착상태(DeadLock : 데드락)와 기아상태(Starvation)
데드락
- 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다려 끝없이 대기하는 상태입니다.
- 공유되는 자원이 여러개일때, 서로 필요한 자원을 가진 채 순환상태로 대기하며 발생합니다.
- 여러 프로세스가 동일한 자원 점유를 요청할 때 발생합니다.
기아상태
- 특정 프로세스의 우선순위가 낮아 원하는 자원을 계속 할당받지 못하는 상태입니다.
- 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 발생합니다.
뮤텍스(Mutex)와 세마포어(Semaphore)
- 임계영역에 대한 접근을 막기 위한 locking 메커니즘입니다.
- 뮤텍스
- 임계영역에 하나의 스레드만 접근이 가능합니다.
- 잠금(lock)과 해제(unlock)를 사용하여 구현합니다.
- 세마포어 : 임계영역에 n개의 스레드만 접근이 가능합니다.
- 키(key)의 개수를 만들어 임계영역 접근 시 키를 분배합니다.
- 임계영역에서 나올 때 키를 회수합니다.
'Computer Science' 카테고리의 다른 글
운영체제 - 페이징 시스템 (0) | 2024.05.27 |
---|---|
운영체제 - 가상메모리 (0) | 2024.05.07 |
운영체제 - 스레드 (0) | 2024.05.02 |
운영체제 - 프로세스와 스케줄링 (0) | 2024.05.02 |
운영체제 - 커널과 쉘, 시스템 콜 (0) | 2024.05.01 |