경쟁상태와 임계영역의 개념 그리고 동기화

김형준 Kim Hyeong Jun·2023년 3월 18일
0

경쟁 상태(Race Condition)

경쟁 상태란 둘 이상의 입력, 조작의 타이밍에 따라 결과가 달라질 수 있는 상태를 의미합니다. 경쟁 상태의 프로그램은 비결정적(Nondeterministic)으로 동작할 수 있으므로, 우리의 예상과 다른 결과를 낼 수 있습니다.

일반적으로 컴퓨터 과학에서 경쟁 상태는 공유 자원을 사용할 때 발생합니다. 또는 데이터베이스에서 여러 트랜잭션이 동일한 레코드에 접근할 때에도 경쟁상태가 발생합니다.

비결정적 알고리즘

동일한 입력에 대해서도 결정론적 알고리즘과는 달리 다른 실행에서 다른 동작을 나타낼 수 있는 알고리즘을 비결정적 알고리즘이라고 합니다.

경쟁 상태의 문제

1. 무결성 위반

무결성이란

  • 신뢰할 수 있는 서비스 제공을 위해서 의도하지 않은 요인에 의해 데이터, 소프트웨어, 시스템 등이 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성을 말합니다.
  • 데이터 무결성은 컴퓨팅 분야에서 완전한 수명 주기를 거치며 데이터의 정확성과 일관성을 유지하고 보증하는 것을 가리키며 데이터베이스나 RDBMS 시스템의 중요한 기능입니다.

2. 정합성 위반

정합성이란

데이터의 정합성은 데이터가 서로 모순 없이 일관되게 일치해야 함을 의미합니다.

임계 영역(Critical Section)

임계 영역이란, 공유 자원에 접근하는 코드 영역입니다.
따라서 여러 프로세스 혹은 스레드 등이 한번에 임계 영역에 접근하면 문제가 발생할 수 있습니다.

동기화

한정적인 시스템 자원에 여러 스레드가 동시에 접근하여 사용하게 되면 문제가 발생할 수 있습니다. 이러한 문제를 방지하기 위해 여러 스레드에게 하나의 자원에 대한 처리 권한을 주거나 순서를 조정하는 기법을 동기화라 합니다.

뮤텍스(Mutex)

공유 자원을 사용하기 전에 잠그고, 사용한 후에 잠금을 해제하는 방식으로 동작합니다.
이때, 잠금이 설정되면 다른 프로세스나 스레드는 해당 공유자원에 접근할 수 없게 됩니다.

잠금, 잠기지 않음 - 두가지 상태만 가집니다.

세마포어(Semaphore)

세마포 변수를 가집니다. 세마포 변수는 공유자원에 접근할 수 있는 프로세스 혹은 스레드의 최대 허용치를 나타냅니다.

스레드가 공유 자원에 접근(wait())하면 세마포 변수 값을 하나 줄이고,
스레드가 공유 자원에 대한 접근이 끝(signal())나면 세마포 변수 값을 하나 늘리는 방식으로 동작합니다.

  • 세마포어 정수의 크기에 따라 바이너리 세마포어와 계수 세마포어로 구분됩니다.
  • 바이너리 세마포어는 뮤텍스와 비슷하게 동작합니다.(차이점 : 뮤텍스는 잠금 메커니즘, 세마포어는 신호기반의 상호 배제 방법)

Reference

경쟁상태, 임계영역의 개념과 동기화를 위한 여러 상호배제 기법 (mutex, semaphore, monitor)
비 결정적 알고리즘 - NonaahWikipedia site:ko.wiki5.ru
무결성, 無缺性, integrity

데이터베이스
[DB] 무결성과 정합성의 차이
[출처] [DB] 무결성과 정합성의 차이|작성자 혼새미로

[OS] 동기화 문제

profile
I want be a developer🙂

0개의 댓글