[CS] 12. 프로세스 동기화

eunoia73·2025년 4월 14일
1

TIL

목록 보기
29/32

1. 동기화란

프로세스 동기화 - 프로세스 사이의 수행 시기를 맞추는 것

  • 실행 순서 제어 - 프로세스를 올바른 순서대로 실행하기
  • 상호 배제 - 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
    공유 불가능한 자원의 동시 사용을 피하기 위해 사용
  • 공유 자원 - 공통으로 이용하는 자원

  • 임계 구역 - 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역
    두 개 이상의 프로세스가 임계 구역에 진입하고자 하면 둘 중 하나는 대기해야 함

  • 레이스 컨디션 - 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우

상호배제를 위한 동기화를 위해 지켜져야 할 원칙

  1. 상호 배제 - 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없다.
  2. 진행 - 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.
  3. 유한 대기 - 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 한다.(무한정 대기해서는 안 된다.)

2. 동기화 기법

  1. 뮤텍스 락 - 동시에 접근해서는 안 되는 자원에 동시에 접근하지 않도록 만드는 도구. 상호 배제를 위한 동기화 도구
    acquire(), release()

  2. 세마포 - 여러 스레드가 동시에 접근 가능하지만 제한된 개수만 허용
    공유자원이 여러 개 있는 상황에서도 적용 가능한 동기화 도구
    wait(), signal()

  3. 모니터 - 공유 자원과 공유 자원에 접근하기 위한 인터페이스를 묶어서 관리.


[혼자 공부하는 컴퓨터구조 + 운영체제] 책을 읽고 정리한 기록입니다.

0개의 댓글