CS

[OS] Thread-safe란? 의미 및 설계하는 법

KJihun 2023. 10. 6. 17:56
728x90

 

 

 

 

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)
공유 자원에 접근할 때, 원자 연산 또는 원자적으로 정의된 접근 방법을 사용하여 상호 배제를 구현할 수 있다.