동기화

이한수·2022년 3월 22일
0

OS

목록 보기
5/10
post-thumbnail

개인 공부 정리 목적입니다.
참고 : 양희재 교수님 : OS
참고 : https://velog.io/@conatuseus/OS-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4%EC%99%80-%EB%AE%A4%ED%85%8D%EC%8A%A4

동기화?

프로세스는 다른 프로세스에 영향을 주고 받는 Cooperation process가 있고 ,

아무런 영향을 미치지 않는 Independent process가 있다.

현대 컴퓨터 환경에는 Cooperation process가 훨씬 많이 존재한다.

이러한 환경의 예시로 하나를 들자면 영화관을 예시로 들 수 있다. 여러 개의 프로세스가 좌석을 예매하려고 공통 데이터에 접근을 할텐데 , 자칫 잘못하면 예약이 중복 된다던지 , 취소되었는데 예약된 자리라고 반응하던지 하는 경우가 생길 수 있다.

(현재에는 대부분 쓰레드 기준으로 스위칭을 하므로 쓰레드 동기화라고 많이 불린다)

이러한 점을 해결하기 위해 하는 것을 동기화라고 한다.

그럼 동기화란 어떻게 해야 할까??

먼저 , 간단히 용어 정리를 여러 개의 쓰레드가 수행되는 시스템에서 각 쓰레드들이 공유하는 데이터(변수,테이블 ,파일 등)를 변경하는 코드 영역을 임계 구역 이라고 한다.

위에서 예시로 들었던 좌석 예매하는 구간을 임계 구역이라 볼 수 있다.

임계 구역을 해결하기 위해서는 3가지 조건이 있다.

  • Mutual Exclusion(상호베타) → 임계 구역에는 한번에 한 쓰레드만 접근할 수 있다.
    즉 , 한 쓰레드가 먼저 접근하여 작업을 공통 변수에 대에 작업을 수행하고 있다면  , 다른 쓰레    드는 이 구역에 접근할 수 없다.
  • Progress(진행) → 한 임계 구역에 접근하는 쓰레드를 결정하는 것은 유한 시간 이내에 이루어 져야한다.
  • Bounded waiting(유한대기) → 임계 구역으로 진입하기 위해 대기하는 모든 쓰레드는 유한 시간 이내에 해당 임계 구역으로 진입할 수 있어야 한다.

이 임계 구역에서 발생할 수 있는 문제를 해결하기 위한 것이 동기화라는 작업이며,

이를 위해 고안된 것으로 대표적으로 세마포와 뮤텍스가 있다.

뮤텍스와 세마포어의 차이는?

  • 세마포어는 공유 자원에 세마포어의 변수만큼의 프로세스(또는 쓰레드)가 접근할 수 있습니다. 반면에 뮤텍스는 오직 1개만의 프로세스(또는 쓰레드)만 접근할 수 있습니다.
  • 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있습니다. 하지만 뮤텍스는 락(lock)을 획득한 프로세스가 반드시 그 락을 해제해야 합니다.
profile
성실하게

0개의 댓글