본문 바로가기
운영체제

[OS] 병행프로세스와 상호배제

by YoungJu 2022. 8. 12.
반응형
SMALL

병행 프로세스란?

1. 병행 프로세스 개념

  • 프로세스들이 독립적으로 작업을 수행하거나 다른 프로세스와 협력하며 특정 기능 수행.
  • 상호작용 필요 (제한된 자원을 공유하기 위해 프로세스는 서로 동기화되어야 함)
  • 비동기 병행 프로세스(비동기) : 다른 프로세스들의 진행상태를 전혀 모르고 독립적으로 수행하면서 다수의 프로세스들이 동시에 존재하며 공유자원에 접근할 수 있는 프로세스. => 동기화 알고리즘 필요

2. 병행 프로세스 과제

  • 공유자원을 서로 배타적으로 사용
  • 병행 프로세스 사이에는 협력이나 동기화가 이루어져야 한다. 
  • 두 프로세스 사이에는 데이터 교환을 위한 통신이 이루어져야 한다.
  • 프로세스는 동시에 실행되는 프로세스의 속도와 관계없이 일정한 실행 결과가 보장되어야 한다.
  • 교착상태를 해결하고 병행 프로세스의 병행 능력을 극대화해야 한다.
  • 병행 프로세스를 수행하는 과정에서 상호 배제를 보장해 주어야 한다. 

병행 프로세스 표현

선행 그래프

비순환적 이어야 한다. => 순환 선행 그래프는 모순 발생

- 두 프로세스 간 존재하는 선행 관계를 규칙적으로 표현한 것

- 선행그래프를 이용하여 병행성을 확인할 수 있다. 

선행 그래프

 


상호 배제와 동기화

상호 배제(Mutual Exclusion)

특정 공유자원을 한 순간에 한 개의 프로세스만 사용할 수 있는 경우 프로세스 하나가 데이터에 접근하는 동안 다른 프로세스가 해당 데이터를 접근할 수 없게 하는 것.

동기화(Synchronous)

  • 공유자원을 동시에 사용하지 못하게 프로세스들이 상호 협력하면서 수행하는 것
  • 순차적 재사용이 가능한 자원의 공유를 위해 질서 있는 실행을 보장하고 데이터 일관성 유지해 줌
  • 경쟁상태(Race Condition) - 서로 다른 프로세스들이 동일한 자료에 접근, 자료를 조작하여 그 결과가 접근 순서에 따라 달라지는 상황 => 상호 배제가 안됨 => 동기화 필요

프로세스 동기화

1) 임계 영역(Critical Section, CS)

동시에 접근해서는 안 되는 공유자원을 사용하고 있는 코드 블록

2) 임계영역 문제의 해결

  1. 상 호재베 Method 사용 (Mutual Exclusion Primitives, 상호 배제 기본 연산)

    - 진입 영역 : 임계 영역 진입 전 검사, CS에 집입 전 다른 프로세스가 CS안에 있는지 검사

    -  출구 영역 : 임계 영역 후처리 과정, CS를 벗어날 때 벗어났음을 알림

상호배제 Method

  2. 임계 영역을 해결하기 위한 3가지 요구 조건

    ㄱ: 상호 배제(Mutual Exclusion)

        - 임계 영역에 프로세스가 있으면, 다른 프로세스의 진입 금지

    ㄴ: 진행(Progress)

        - 임계 영역(CS) 안에 있는 프로세스 외에는 다른 프로세스가 CS에 진입하는 것을 방해하면 안 됨

        - 임계 영역 안에 프로세스가 없는 경우 다음 들어갈 프로세스 선정이 무한정 지연되서는 안 됨

    ㄷ: 한정된 대기(Bounded Waiting)

        - 프로세스의 CS진입은 유한 시간 내에 허용되어야 함.

  3. 임계 영역의 보호 시 고려할 사항

     - 교착상태가 발생해서는 안됨(회피 필요)

     - 인터럽트가 발생하지 않도록 해야 함

     - 무한루프가 발생하지 않도록 해야 함

 

반응형

'운영체제' 카테고리의 다른 글

[OS] 동기화(세마포어)  (0) 2022.08.16
[OS] 교착상태(Deadlock)  (0) 2022.08.11
[OS] 운영체제 기본  (0) 2022.08.10

댓글