Thread-safe
1. 다중 스레드 환경에서 여러 스레드가 동시에 공유하는 데이터나 자원을 안전하게 사용할 수 있는 상태
2. 여러 스레드가 동시에 동작할 때 발생할 수 있는 경쟁 조건(race condition)이나 데이터 불일치 문제를 방지하는 것
설계하는 법
1. Mutual Exclusion(상호배제) 방식을 이용한 Critical Section(임계 영역)
공유 자원을 사용할 경우, 해당 자원에 대한 접근을 프로세스 동기화로 통제
- 상호 배제(Mutual Exclusion): 한번에 한개의 프로세스만이 공유 자원을 사용하도록 함
- 임계 영역(Critical Section): 여러 스레드가 공유 자원에 접근하는 코드 영역
- 락 (Lock): 스레드가 임계 영역에 진입하기 전에 획득하고, 나올 때 해제하는 동기화 메커니즘
- Java에서는 syncronized를 사용하여 임계구역을 정의한다.
[OS] 프로세스 동기화(Process Synchronization)란?
프로세스 동기화(Process Synchronization) 1. 멀티 프로세스 환경에서 자원에 한 프로세스만이 접근가능하도록 하는 것 2. 멀티 프로세스 환경에서 여러 프로세스가 공유 자원에 동시에 접근하는 것을
developerhun.tistory.com
2. 재진입성(Re-entrancy)
어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바르게 주어져야 한다.
3.스레드 지역 저장소(Thread-Local Storage)
공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소를 사용함으로써 동시 접근을 막는다.
이 방식은 동기화 방법과 관련되어 있고, 공유 상태를 피할 수 없을 경우 사용한다.
4. 원자 연산(Atomic Operation)
공유 자원에 접근할 때, 원자 연산 또는 원자적으로 정의된 접근 방법을 사용하여 상호 배제를 구현할 수 있다.
'CS' 카테고리의 다른 글
[OS] 교착상태와 기아상태란? 해결방법 (0) | 2023.10.06 |
---|---|
[OS] 동기화(Synchronization)란? (0) | 2023.10.06 |
[OS]멀티스레드 프로그래밍이란? 장점 및 사용환경, 주의점 (0) | 2023.10.05 |
[OS] 블로킹 논블로킹(Blocking / Non-Blocking), 동기 비동기( Sync / Async) (0) | 2023.10.05 |
[OS] Context Switching (0) | 2023.10.05 |