1 분 소요

이 글은 패스트캠퍼스의 현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online.를 보고 공부한 내용을 정리한 글입니다. 이해한 내용을 바탕으로 작성했기에 틀린 내용이 있을 수 있습니다.

동기화와 교착상태

동기화

운영체제가 제공하는 동기화의 의미

  1. 실행 순서 제어: 프로세스를 올바른 순서로 실행
  2. 상호 배제: 동시에 접근해서는 안되는 자원에 하나만 접근하기

동기화는 여러 프로세스나 스레드가 공유 자원에 접근하거나 서로의 작업을 기다릴 때, 데이터의 일관성을 유지하고 실행 순서를 제어하여 프로그램의 정확성과 안정성을 보장하기 위해 필요.

공유자원과 임계구역

공유 자원 : 공동의 자원 ex) 파일, 전역 변수, 입출력장치, …) 임계 구역 : 동시에 접근하면 문제가 발생할 수 있는 공유 자원에 접근하는 코드

다음 그림과 같이 프로세스 A,B가 실행될 때 임계 구역동시 접근을 막는다.

임계구역 예시

레이스 컨디션(race condition) : 임계 구역을 동시에 실행하여 자원의 일관성이 깨지는 현상

동기화 해결의 세 가지 원칙

동기화를 위해서는 다음 세 가지 원칙이 지켜져야 한다.

  • 상호 배제 : 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 대기해야함
  • 진행 : 어떤 프로세스도 임계 구역에 진입하지 않았다면 진입이 가능해야 함
  • 유한 대기 : 한 프로세스가 임계 구역 진입을 위해 대기하고 있다면 언젠간 진입이 가능해야함

이러한 원칙을 지키며 동작하는 동기화 기법에는 뮤텍스 락세마포어가 있다.

뮤텍스(Mutex, Mutual Exclusion) : 뮤텍스 락은 한 번에 하나의 스레드만 공유 자원에 접근할 수 있도록 하는 동기화 기법이다. 뮤텍스 락을 획득한 스레드만이 해당 자원에 접근할 수 있으며, 다른 스레드는 락이 해제될 때까지 대기해야 한다. 뮤텍스는 상호 배제를 보장하여 데이터의 일관성을 유지한다. 세마포어(Semaphore) : 세마포어는 뮤텍스와 비슷하지만, 한 번에 여러 스레드가 공유 자원에 접근할 수 있도록 허용하는 점에서 차이가 있다. 세마포어는 내부 카운터를 가지고 있으며, 이 카운터는 한 번에 공유 자원에 접근 가능한 스레드의 최대 수를 나타냅니다. 스레드가 공유 자원에 접근하려면 세마포어의 카운터를 감소시키고, 작업이 끝나면 카운터를 증가시켜 다른 스레드의 접근을 허용합니다.

즉, 뮤텍스는 한 번에 하나의 스레드만이 공유 자원에 접근하는 것을 허용, 세마포어는 한 번에 여러 스레드의 접근을 허용한다.

태그: ,

카테고리:

업데이트:

댓글남기기