공부한 기록/운영체제

운영체제(4)-병행프로세스와 상호배제

YongE 2022. 10. 4. 15:39

 

병행 프로세스

운영체제가 프로세스를 빠르게 전환하여, 프로세스 여러 개를 동시에 실행하는 것처럼 보이게 하는 것.
- 병행 프로세스의 종류
    - 독립 프로세스: 단일 처리 시스템에서 수행하는 병행 프로세스. 다른 프로세스에게 영향을 주거나 받지 않으면서 독립적으로 실행한다.
    - 협력 프로세스: 다른 프로세스와 상호작용하며 특정 기능을 수행하는 비동기적(동시에 일어나지 않는)프로세스이다.
        + 예: 두 프로세스가 동일한 파일을 사용할 때, 한 프로세스는 읽기를 할 수 있고, 한 프로세스는 읽기 작업과 작업 시간을 맞추지 않고 쓰기를 할 수 있다.
 
% 협력프로세스는 입출력 장치나 메모리, 프로세서 등의 자원을 서로 사용 시 충돌이 발생할 수 있다. 이때, 상호배제가 필요한 것이다.
 

병행성

여러 프로세스를 이용해서 작업을 수행하는 것이다. 시스템의 신뢰도를 향상, 처리 속도 개선, 처리 능력 개선이 중요하다. 

선행 그래프(precedence graph)

선행 제약(프로세스를 순서대로 다른 상태에 옮기는 것을 말한다.)의 논리적 표현.

  • fork와 join 구조

선행 그래프는 제약 정의에 유용하지만 2차원이라 프로그램 사용에는 곤란하다. 그래서 fork와 join, parbegin/parend 등이 추가 되었다.

  • 병행문장

하나의 프로세스가 여러 병렬 프로세스로 퍼졌다가 다시 하나로 뭉쳐지는 것을 나타낸다.

상호배제

병행 프로세스에서 프로세스 하나가 공유 자원 사용할 때 다른 프로세스들이 동일한 일을 할 수 없도록 하는 것.

▪ 상호배제의 조건

  ❶ 두 프로세스는 동시에 공유 자원에 진입 불가.

  ❷ 프로세스의 속도나 프로세서 수에 영향 받지 않음

  ❸ 공유 자원을 사용하는 프로세스만 다른 프로세스 차단 가능

  ❹ 프로세스가 공유 자원을 사용하려고 너무 오래 기다려서는 안 됨

 

  • 임계영역: 다수 프로세스가 접근 가능하나 어느 한  순간에는 한 프로세스만 접근 가능하다.

버퍼 영역이 임계영역이다.

임계영역을 이용해 상호배제가 가능하다. 한 프로세스가 임계영역으로 들어오면 임계영역에서 마치 문을 열쇠로 잠근 듯, 다른 프로세스가 접근하지 못하게 막는다.

※임계 영역의 조건

  1. 상호배제: 프로세스가 임계영역에서 작업중에 다른 프로세스는 임계영역에 진입 불가.
  2. 진행: 임계영역에 프로세스가 없는 상태에서 어떤 프로세스가 들어갈지에 대해 정함.
  3. 한계: 다른 프로세스의 무한정 대기를 방지하기 위해 임계영역에 들어갔던 프로세스는 재진입 제한

경쟁상태

여러 프로세스가 동시에 공유 데이터에 접근 시, 접근 순서에 따라 결과가 달라지는 상황을 말한다.

다만, 이는 공유 데이터 부분을 임계영역으로 설정하여 해결할 수 있다.

 

상호배제 방법들

  • 데커 알고리즘: 상호배제 문제의 첫번째 해결책, 두 프로세스가 동시에 임계영역에 진입하려 하면 순서에 따라 하나만 진입할 수 있도록 허용하는 것. 특별한 하드웨어 명령문이 필요 없고 임계영역 진입 희망 프로세스를 무한정 대기시키지 않는다.
  • TestAndSet 명령어: 하드웨어에서 명령을 사용하는 알고리즘. 데커 알고리즘보다 효과적. 장단점이 있어 간략히 말하자면, 장점은 사용자 수준에서 사용가능하며 구현이 단순하고 확인이 용이하고 프로세서의 수에 구애받지 않는다. 단점은 프로세서 시간 소모가 크고 기아나 교착 상태가 발생할 수 있다.
  • 세마포(semaphore): P연산(진입, 다른 프로세스는 대기)과 V연산(빠져나옴, 다른 프로세스 진입허용)을 이용한 상호배제의 한 방법. 이진 세마포와 계수 세마포로 나뉜다. 임계영역을 사용가능하면 바로 사용하거나(-1) 임계영역에 누군가 있으면 기다려야 하니 wait()연산을, 임계영역에서 할일을 끝내고 다음에게 넘길 땐 signal()연산을 사용한다.
  • 모니터: 세마포의 오용으로 오류가 쉽게 발생할 수 있다. 모니터는 이러한 것을 해결할 수 있다. 자원을 배타적으로 사용하기 위해 프로세스가 사용하는 병행 프로그래밍 구조이다. 준비 큐에서 조건을 추가해 진입하는 프로세스의 순서를 정할 수도 있다.

728x90
반응형

'공부한 기록 > 운영체제' 카테고리의 다른 글

운영체제(6)  (0) 2022.11.03
운영체제(5) - 교착 상태와 기아 상태  (0) 2022.10.09
운영체제(3)  (0) 2022.09.15
운영체제(2)  (0) 2022.09.10
운영체제(1)  (0) 2022.09.06