CS지식 쌓기

동기화

류도토리 2024. 1. 2. 17:26
  1. 동기화
    1. 공동의 목적을 위해 동시에 수행되는 프로세스
    2. 프로세스들의 수행 시기를 맞추는 것
    3. 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
    4. 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
  2. 실행 순서 제어를 위한 동기화 : reader writer problem
    1. writer : Book.txt 파일에 값을 저장하는 프로세스
    2. Reader : Book.txt 파일에 저장된 값을 읽어 들이는 프로세스
      1. reader와 writer프로세스는 무작정 아무렇게나 실행되어선 안된다 실행의 순서가 있기 때문
      2. Reader프로세스는 Book.txt 안에 값이 존재한다는 특정 조건이 만족되어야만 실행 가능
  3. 상호 배제를 위한 동기화 : Bank account problem
    1. 공유가 불가능한 자원의 동시 사용을 피하기 위한 동기화
    2. 한 번에 하나의 프로세스만 접근해야 하는 자원에 동시 접근을 피하기 위한 동기화
      1. 현재 계좌에 잔액 : 10만원
      2. 프로세스 A는 현재 잔액에 2만원을 추가하는 프로세스
      3. 프로세스 B는 현재 잔액에 5만원을 추가하는 프로세스
      4. A가 끝나기 전에 B가 접근해버리면 잔액이 제대로 계산이 안될 수도 있음
  4. 공유 자원 : 여러 프로세스 혹은 스레드가 공유하는 자원
    1. 전역 변수, 파일, 입출력장치, 보조기억장치, …
  5. 임계 구역 : 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
    1. 앞선 예시의 총합 변수, 잔액 변수 …
  6. 임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있다 이를 레이스 컨디션 이라고 한다.
  7. 운영체제가 임계 구역 문제를 해결하는 세 가지 원칙
    1. 상호배제 - 한 프로세스가 임게 구역에 진입했다면 다른 프로세스는 들어올 수 없다.
    2. 진행 - 임계구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.
    3. 유한 대기 - 한 프로세스가 임계구역에 진입하고 싶다면 언젠가는 임계 구역에 들어올 수 있어야 한다. ( 임계구역에 들어오기 위해 무한정 대기해서는 안 된다.

'CS지식 쌓기' 카테고리의 다른 글

교착 상태(데드락)  (0) 2024.01.02
동기화 기법  (0) 2024.01.02
CPU 스케줄링 알고리즘  (0) 2024.01.02
CPU 스케줄링  (1) 2024.01.02
스레드와 프로세스  (1) 2024.01.02