본문 바로가기
  • Coding & Book
프로그램및 언어/JAVA

운영체제와 자바의 임계구역에 대해 알아보자

by 루이3 2023. 7. 25.

 

임계구역

  • 운영체제의 임계구역과 자바에서의 임계구역은 개념적으로 유사합니다.
  • 구현방식사용하는 문맥에서 차이가 있다고 합니다.

 

공유자원

  • 임계구역에 대해 설명하기 전에 공유자원에 대해 알아야 합니다.
  • 공유자원은 프로세스들이 함께 이용하는 변수, 메모리 등을 말합니다.
  • 프로세스들이 함께 사용할수 있어서 어떤 프로세스가 먼저 데이터를 읽느냐에 따라 결과가 달라집니다.

 

운영체제에서의 임계구역

  • 다중 프로세스 또는 다중스레드 환경에서 공유 자원에 대한 접근을 조율하기 위해 사용됩니다.
  • 주로 세마포어뮤텍스와 같은 동기화 기법을 사용하여 구현합니다.
  • 사용하는 이유는 공유 자원에 동시에 접근하는 경우가 있어 안전한 동작을 보장하기 위해 사용합니다.
  • 특성으로는 상호배제, 한정대기, 진행이 있습니다

 

 

임계구역 특성

상호배제:

하나의 프로세스 또는 스레드가 임계구역에 들어가면 다른 프로세스나 스레드는
임계구역에 들어갈 수 없는 것을 말합니다.

 

한정대기:

어떤 프로세스 또는 스레드가 무한히 뒤로 미루어지면 안되는것을 말합니다.

 

진행:

프로세스 혹은 스레드가 다른 프로세스 또는 스레드의 진행을 방해해서는 안되는 것을 말합니다.

임계구역에 진입을 요청한 후부터 실제로 들어갈 때까지의 대기시간이 유한해야 합니다.

 

 

자바에서의 임계구역

  • 멀티스레드 프로그램에서 단 하나의 스레드만 실행 할수 있는 코드영역을 임계영역이라고 합니다.
  • 공유 자원을 안전하게 접근하기 위한 코드영역을 말하기도 합니다.
  • 임계구역 관리를 제대로 하지 못할시 여러 스레드가 동시에 데이터를 변경하거나 접근하면서 원치 않는 결과가
    발생할 수 있습니다.
  • 임계영역을 지정하기 위해 동기화 메소드를 제공합니다.

 


 

 

예시

 

쉽게 예시를 들어보겠습니다.

한 마을에 공동으로 사용하는 맷돌 한개가 있는데

여러 사람들이 동시에 사용하는 경우 어떤 사람은 맷돌을 시계방향으로, 또 다른 사람은 반시계 방향으로

같이 돌리다 보니 맷돌이 움직이지 않고 원치 않는 결과가 발생하는 것입니다.

이를 해결하기 위해  1번주민이 맷돌을 사용하면 2번 주민은 대기하고

1번 주민이 맷돌을 다 사용했으면 2번 주민이 맷돌을 사용하는 식으로 해결할 수 있을 것입니다.

 

여기서 맷돌임계구역이라고 비유할 수 있을 것입니다.