본문 바로가기
운영체제

[운영체제] 운영체제 부숴버리기 (2) 병행프로세스,mutex, semaphore

by windy7271 2024. 6. 10.
728x90
반응형

병행성 / 병행 프로세스

병행성 : 여러개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성

병행 프로세스 : 동시 수행되는 여러 개의 프로세스 또는 쓰레드

 

멀티프로세서 시스템의 메모리 구조에 따라

 

강 결합 시스템 (공유 메모리 구조) 약 결합 시스템 (분산 메모리 구조) 로 나눈다.

 

  • 강 결합 시스템 
    • 운영체제: 1 프로세스: n 하나의 메모리 공유
    • 하나의 운영체제가 모든 프로세스,하드웨어 제어
    • 통신은 공유메모리로 한다.
    • 즉 프로세서간 결합력이 강하다

강결합 시스템

  • 약 결합 시스템
    • 프로세스마다 독립된 메모리를 가진다.
    • 독립적 작용, 상호 통신 가능
    • 통신은 메시지 전달, 원격 프로시저 호출
    • 결합력 약함

약 결합 시스템

 

독립 프로세스 : 수행 중인 다른 프로세스에 영향을 주지도 받지도 않음

데이터 및 상태를 다른 프로세스와 공유하지 않는다.

결정적, 재생가능

 

협력 프로세스 : 수행 중인 다른 프로세스와 영향을 주고 받는다

데이터 및 상태를 다른 프로세스와 공유한다.

비결정적, 재생 불가능

 

협력 프로세스인 경우 3가지의 문제가 발생할 수 있다.

1. 상호배제

2. 동기화

3. 통신

 

상호배제: 2개 이상의 프로세스가 동시에 임계영역을 수행하지 못하도록 하는것

임계영역 : 2개 이상의 프로세스가 동시에 사용하면 안되는 공유자원을 액세스 하는 프로그램 코드 영역이다.

 

동기화 : 2개 이상의 프로세스에 대한 처리순서를 결정하는것

통신 : 프로세스들이 데이터를 공유하기 위해 반드시 필요

  • 통신방법: 하나의 변수사용, 메시지를 서로 주고받음

 


Mutex, Semaphore

 

교착상태를 해결하기 위해 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다.

동기화 도구에는 대표적으로 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다.

 

mutex : 락을 가질 수 있을 때 까지 휴식한다

 

세마포어(semaphore) -> 상호배제동기화 문제를 해결하기 위한 도구이다.

두 기본 연산 P, V 에 의해서만 사용됨 

  • 기본연산 : 인터럽트 되지 않고 하나의 단위로 처리된다.

P : 검사, 감소시키려는 시도

V : 증가

 

세마포어마다 대기 큐 필요하다.

 

임계영역 이전과 이후에 영역을 두어 임계영역에 대해 수행을 해도 되는지 체크하고

임계영역 이후 다른 프로세스가 임계영역 수행을 시작할 수 있도록 해야한다.

그림으로 나타내면 다음과 같다.

 

상호배제 해결 

세마포어 를 활용하여 진입영역에 P와 해제 영역에 V를 두어 해결한다.

대기큐는 FIFO 로 동작한다.

 

P로 감소시켜 다른 프로세스가 들어오지 못 하도록 막고 

해제영역에서 V로 다시 증겨시켜 다른 프로세스가 접근 가능하게 해준다.

 

https://medium.com/@kwoncharles/%EB%AE%A4%ED%85%8D%EC%8A%A4-mutex-%EC%99%80-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4-semaphore-%EC%9D%98-%EC%B0%A8%EC%9D%B4-de6078d3c453

 

뮤텍스(Mutex)와 세마포어(Semaphore)의 차이

Toilet problem

medium.com

 

 

병행 프로세스 문제

1. 생산자 - 소비자 문제

여러 개의 프로세스를 어떻게 동기화할 것인가에 관한 고전적인 문제. 한정 버퍼 문제(bounded-buffer problem)라고도 한다.

 

생산자 : 데이터 넣는 프로세스

소비자 : 데이터 꺼내는 프로세스

 

버퍼에 여러 프로세스가 동시에 접근 불가능하다: 상호배제 필요버퍼의 크기가 유한하다. 가득차면 생산자는 대기하고 빈 경우 소비자가 대기한다 : 동기화 필요

 

2. 판독기 기록기 문제 : 여러 협력 프로세스 사이에 공유 자원을 두고 판독기와 기록기의 성향을 다루는 문제

판독기 : 데이터 읽기

기록기 : 데이터 쓰기

 

하나의 기록기 공유자원에 데이터를 쓰는 중에는 다른 기록기, 판독기는 공유자원에 접근할 수 없으나 

 

여러 판독기는 동시에 공유자원에서 데이터를 읽을 수 있다.

판독기가 읽는 중 새로운 판독기 읽기 시도는 가능하다판독기가 읽는중 기록

 

제1 판독기 - 기록기 문제

판독기가 공유자원 접근 중이라면 기록기보다 판독기에 우선순위를 줌새로운 판독기는 즉시 공유자원에 접근 가능하다.

 

문제점 : 기록기 기아상태를 유발 가능하다.

 

 

제2 판독기 - 기록기 문제

판독기가 공유자원에 접근 중이라면 판독기보다 기록기에 우선순위를 줌 대기중인 판독기는 공유자원에 접근 불가능하다

 

문제점: 판독기 병행성 떨어짐, 판독기 기아상태 유발 가능하다.

 

 

IPC : 프로세스 간 통신 (InterProcess Communication)

병행 프로세스가 데이터를 서로 공유하는 방법

  • 공유 메모리 방법
    • 협력 프로세스가 동일한 변수를 사용한다. 동일한 변수란 공유자원인 메모리 공간 사용 을 말한다.
    • 대량 데이터 교환이 가능하다.
    • 응용 프로그래머
  • 메시지 전달방법
    • sendreceive로 소량 데이터 교환 통신한다.
    • 운영체제
    • 메시지 전달 방법의 구조
      • 통신링크 : 메시지가 지나다니는 통로
        • 방향성 : 단방향, 양방향
        • 용량 : 무한 유한 0
        • 두 프로세스 사이 링크 개수 : 하나, 둘 이상

메시지 통로 : 통신링크

하나의 운영체제에서 두 방법 함께 사용 가능하다.

 

직접통신 

send 혹은 receive에 변수로 담아 직접 서로를 지정하여 메시지 전달이 가능하다.

ex) send(B,M1) receive(B,M2)

 

간접통신

프로세스 사이에 둔 우편함을 통해 메시지 전달한다.같은 우편함을 이용하는 경우 통신 링크가 설정되고, 여러 우편함을 이용하면 여러 개 통신링크가 존재한다.

 

우편함은 수신 프로세스에 소속될 수 있다.

 

수신자는 하나이고, 통신링크는 단방향, 수신 프로세스가 종료하면 우편함도 사라지게 된다

 

우편함이 운영체제에 소속된경우

수신자는 여럿이고, 한 순간에 하나의 수신자만 가능하며, 운영체제가 수신자를 관리한다. 양방향이다

 

(a) 공유 메모리 (b) 메시지 전달

 

반응형

댓글