공부/컴퓨터구조, 운영체제

12장 프로세스 동기화

bereben 2023. 4. 10. 20:30
  • 프로세스 동기화(Synchronization)

    • 프로세스들 사이의 수행 시기를 맞추는 것

    • 실행 순서제어를 위한 동기화

      • 프로세스의 완료 순서가 있어 올바른 순서대로 실행하게 하는 것
    • 상호 배제를 위한 동기화

      • 공유가 불가능한 자원의 동시 사용을 피하기 위함

        • 생산자와 소비자 문제

          • 생산자와 소비자는 총합이라는 데이터를 공유
          • 생산자는 버퍼에 물건을 넣은 후 물건의 총합에서 변수 1을 증가
          • 소비자는 버퍼에 물건을 빼낸 후 물건의 총합에서 변수 1을 감소
          • 이 두 개를 동시에 10만번 실행하면 공유자원인 총합을 사용하는 과정에서 충돌이 일어나 올바른 총합이 나오지 않음
        • 공유 자원

          • 생산자와 소비자 문제에서 총합은 공유 자원에 해당한다.
        • 임계 구역

          • 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 말함
        • 레이스 컨디션

          • 생산자와 소비자 문제에서 동시에 실행하여 오류가 발생했는데 이를 레이스 컨디션이라고 함
        • 임계 구역 문제 해결을 위한 원칙

          • 상호 배제

            • 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어갈 수 없다.
            • 진행

              • 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 진입할 수 있어야 한다.
            • 유한 대기

              • 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 진입할 수 있어야 한다.
  • 동기화 기법

    • 뮤텍스 락

      • 동시에 접근해서 안되는 자원에 동시에 접근하지 않도록 만드는 도구이다.
      • 상호 배제를 위한 동기화 도구
      • 임계 구역에 진입한 프로세스는 뮤텍스 락을 이용해 다른 프로세스들이 임계 구역에 접근을 막을 수 있다.
      • 구현
        • 자물쇠 : 프로세스들이 공유하는 전역 변수 lock
        • 자물쇠 잠그는 역할 : acquire 함수
        • 자물쇠 여는 역할 : release 함수
      • 세마포어

        • 뮤텍스 락은 하나의 공유 자원에 접근하는 프로세스를 상정했고 세마포어는 여러 공유 자원에 접근하는 프로세스를 상정했다.
        • 구현
          • 임계 구역에 진입할 수 있는 프로세스 개수 : 전역번수 S
          • 임계 구역에 들어가도 괜찮은지 알려주는 신호등 : wait 함수
          • 임계 구역 앞에서 기다리는 프로세스에 들어가도 괜찮다는 신호수 : signal 함수
      • 모니터

        • 모니터를 통해 공유 자원에 접근하고자 하는 프로세스를 큐에 삽입하고 삽입된 순서대로 하나씩 공유 자원을 이용
        • 모니터 안에 항상 하나의 프로세스만 들어오도록 하여 상호 배제를 위한 동기화 제공
        • 세마포어와 같이 실행 순서 제어를 위한 조건 변수를 사용
        • 조건 변수 : 프로세스나 스레드의 실행 순서를 제어하기 위해 사용하는 특별한 변수

참고) 혼자 공부하는 컴퓨터 구조+운영체제

'공부 > 컴퓨터구조, 운영체제' 카테고리의 다른 글

14장 가상 메모리  (0) 2023.04.10
13장 교착상태  (0) 2023.04.10
11장 CPU 스케줄링  (0) 2023.04.10
10장 프로세스와 스레드  (0) 2023.03.30
9장 운영체제 시작하기  (0) 2023.03.30