[혼공컴운_5주]chapter12 프로세스동기화

study_record·2024년 1월 29일
0

혼공컴운

목록 보기
13/17

프로세스 동기화

  • 프로세스 동기화 : 프로세스 사이의 수행시기를 맞추는 것
  • 동기화의 종류
    • 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
    • 상호배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
  1. 실행 순서 제어 동기화
    • 동시에 실행되는 프로세스를 올바른 순서대로 실행하는 것
      ex) writer프로세스와 reader프로세스가 있을때 writer프로세스가 먼저 실행되고 reader프로세서 순으로 실행되어야 한다.
      왜냐하면 아무쓴것이 없는데 reader프로세스가 실행될수 없으니깐
    • 특정 조건을 만족해야 실행이 가능한 상황에서 사용하는 동기화
  2. 상호 배제(mutual exclusion) 동기화
    • 공유가 불가능한 자원의 동시 사용을 피하기 위해서 사용하는 알고리즘

생산자와 소비자 문제

  • 생산자 : 물건을 계속 생산
  • 소비자 : 물건을 계속 소비
  • 생산자와 소비자는 <총합>을 공유하고 있음
  • 버퍼 : 생산자는 물건을 넣고 총합에서 1을 증가/ 소비자는 물건을 뺴고 총합에서 1을 뺌
  • 생산자와 소비자가 각각의 작업을 완료하기 전에 총합을 수정하면 이상한 결과를 가져온다

공유자원, 임계구역 📌선택 미션

  • 공유자원 : 공동의 자원 ex)파일, 입출력장치, 보조기억장치
  • 임계구역(critical section) : 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 의미함
    • 두개 이상의 프로세스가 임계구역이 진입하려 할수 없고 대기 해야함
  • 레이스 컨디션(race condition) : 잘못된 실행으로 여러 프로세스가 동시다발적으로 임계구역의 코드를 실행시켜 문제가 발생하는 현상
    • 데이터의 일관성을 깨트리는 문제가 발생함
    • 고급언어를 저급언어로 변환하고 저급언어의 문맥교환에서 발생 한다

임계구역 문제 해결 방법 📌선택 미션

  • 임계구역 문제 해결방법 = 상호 배제를 위한 동기화 방법
  1. 상호배제(mutual exclusion)
    : 한 프로세스가 임계구역에 진입했을때 다른 프로세스는 임계구역에 들어갈수 없다
  2. 진행(progress)
    : 임계 구역에 어떤 프로세스도 진입하지 않았으면 임계구역에 진입하려는 프로세는 들어갈수 있다
  3. 유한대기(bounded waiting)
    : 한 프로세스가 임계구역에 진입하고 싶다면 언젠가는 그 프로세스는 임계구역에 들어가야 한다(무한 대기가 없어야함)

동기화 도구

  1. 뮤텍스 락
  2. 세마포
  3. 모니터

1. 뮤텍스 락(Mutex Lock:Mutual EXclusion lock)

  • 동시에 접근하면 안되는 자원을 동시접근하지 못하도록 만든 도구

  • 상호배제를 위한 도구

  • 뮤텍스락 구현 방법

    • 자물쇠 역할 : 프로세스들이 공유하는 전역변수 lock

    • 임계구역을 잠그는 역할 : acqurie 함수

    • 임계구역의 잠금을 해제하는 역할 : release 함수

    • 구분acqurie 함수release 함수
      정의프로세스가 임계구역에 진입하기 전에 호출하는 함수임계구역에서 작입이 끝나고 호출하는 함수
      -----------------------------------------------------------------------------------------------------------------------------------
      역할임계구역이 잠겨있으면 열리는것을 확인(lock → false 확인)잠겨있는 임계구역을 열어주는 함수(lock → false 변환)
      임계구역이 열려있으면 임계구역을 잠그는 함수(lock → true 변환)
    • 바쁜대기(busy wait) : 임계구역이 락인지 아닌지 끊임없이 확인하는 대기방식을 의미함

      • 락을 얻지못하면 대기 함
      • 락을 획득하면 임계구역을 잠그고 임계구역에서 작업 함
      • 임계구역에서 빠져나올때는 락을 해제

2. 세마포(semaphone)

  • 공유자원이 여러개 있는 상황의 동기화 도구
  • 프로세스는 신호를 받고 대기와 임계구역 진입을 한다
  • 세마포 구현 방법
    • 임계구역에 진입할수 있는 프로세스 개수 : 전역 변수 S
    • 임계구역의 진입, 대기를 알려주는 신호 : wait 함수
    • 대기하는 프로세스에 임계구역진입을 알려주는 신호 : signal 함수
  • 세마포를 이용하여 상호 배제 동기화 방식
    • 사용할수 있는 공유자원이 없는 상황
      → wait함수가 해당 프로세스를 대기 상태로 만듦
      → 프로세스의 PCB를 대기큐(세마포 대기 큐)에 넣음
      → 임계구역의 있던 프로세스의 작업이 종료 됨
      → signal함수를 호출
      → 대기 큐에 있던 프로세스를 제거하고 프로세스를 준비상태로 변경
      → 프로세스를 준비 큐로 이동
  • 세마포를 이용한 프로세스 순서 제어 방식
    • 변수 S를 0으로 지정
    • 먼저 실행 할 프로세스 뒤 signal함수 붙이기
    • 다음에 실행 할 프로세스 앞 wait함수 붙이기

3. 모니터

  • 공유자원과 인터페이스(공유자원 접근 통로)를 한번에 관리힐수 있는 동기화 도구
  • 프로세스는 꼭 인터페이스를 통해서만 공유자원에 접근할 수 있음
  • 프로세스의 큐를 생성해 모니터에 들어갈수 있게 관리함
  • 조건변수 : 특정 조건을 바탕으로 프로세스를 실행하고 중단하기위한 변수로 실행순서를 제어한다
    • wait, signal 연산을 수행
    • 특정 프로세스가 실행조건이 되지 않았을때 wait을 통해 실행을 중단함
    • 특정 프로세스가 실행될 조건이 충족되었을때 signal을 통해서 실행을 재개함


📚마무리 문제

P.349

1번 빈칸에 알맞은 단어 넣기 (1)실행 순저 제어 (2)상호배제

  • (1)를 위한 동기화 : 프로세스를 올바른 순서대로 실해하기
  • (2)를 위한 동기화 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기

2번 임계 구역의 설명으로 틀린것을 골라라 (1)번
1) 임계 구역에서 여러개의 프로세스가 동시에 실행되도 무방하다
2) 임계 구역에서 여러 프로세스가 동시에 실행할 경우 레이스 컨디션이 발생한다
3) 임계구역에서 실행회는 프로세스가 잇아면 다른 프로세스는 기다려야 한다
4) 운영체제느 임계구역을 관리한다

P.363

1번 뮤텍스, 세마포에대한 설명으로 틀린것은? (4)번 📌기본미션
1) 뮤텍스란 임계구역을 잠근뒤 임계구역에 진입함으로써 상호배제를 위한 동기화를 이룬다
2) 세마포는 공유자원이 여러개있는 상황에서도 사용할수 있다
3) 세마포를 이용해 프로세스 실행순서제어를 위한 동기화를 이룰수 있다
4) 세마포를 이용하면 반드시 바쁜 대리를 해야한다

2번 조건변수 X,Y가 있다고 가정하자. 스레드A는 실행과정에서 X.wait를 호출하고 스레드B는 Y.wait를 호출했다. 스레드C가 y.signal을 호출했을때 스레드A와 스레드B중 실행이 재개되는 스레드는???
정답 - 스레드B

3번 (1),(2)에 들어갈 단어는? (1)상호 배제 (2)실행 순서 제어

세마포를 이용하면 동시에 실행되는 프로세스 혹은 스레드 간에 (1)를 위한 동기화와 (2)를 위한 동기화를 할 수 있다

0개의 댓글