병행 프로세스
- 프로세서 하나는 한 번에 프로세스 하나만 실행할 수 있다.
- 하지만 운영체제가 프로세서를 빠르게 전환하여 프로세서 시간을 나눠 마치 프로세스 여러 개를 동시에 실행하는 것처럼 보이게 하는 것을 병행 프로세스라고 한다.
- 시스템 내부 존재 ⭕️ CPU 내 동시 존재 ❌(CPU는 한순간에 1개의 프로세스만)
- 병행프로세스 실행에서 전용자원을 사용한다면 100% 병행가능 ex) 교실에서의 학생의 펜, 지우개
- ❗️공유자원1은 절대로 동시에 사용할 수 없다. ex) 도서관의 책
- 그러한 공유자원을 임계자원이라고 한다.
- 이러한 임계자원은 동시에 사용할 수 없으므로 관리기법이 필요하다. 관리기법은 아래와 같다.
임계구역(Critical Section)
- 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지 정된 공유 자원(영역)
- 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해 당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.
- 임계 구역은 특정 프로세스가 독점할 수 없다.
- 현재 임계 구역에서 실행되는 프로세스가 없다면 잔류 영역에서 임계 구역 사용을 기다리고 있는 프로세스의 사용을 허락해야 하며, 그 이외에 있는 프로세스는 임계 구역에 진입할 수 없다.
상호배제(Mutual Exclusion)
- 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하 는 기법
- 여러프로세스가동시에공유자원을사용하려할때각 프로세스가 번갈아가며 공유 자원을 사용하도록 하는 것으로, 임계 구역을 유지하는 기법
-
임계 구역 내에서는 인터 럽트, 교착상태, 무한반복이 발생되지 않도록 해야 한다.
-
상호배제 방법
이름 | 구현 방법 | |
---|---|---|
데커의 알고리즘 | 소프트웨어 | 두 프로세스가 서로 통신하기 위해 공유메모리를 사용하여 충돌 없이 단일 자원을 공유할 수 있도록 허용한다. |
Test&Set | 하드웨어 | 기계를 비교하거나 단어 내용을 검사, 수정하는 특별한 하드웨어 명령어(Test&Set)을 사용한다. |
세마포어 | 소프트웨어 | 세마포어 변수 값이 true일 때 프로세스 상태를 확인하는 동기화 도구이다. |
모니터 | 소프트웨어 | 공유 자원과 이것의 임계 영역을 관리하는 병행프로그래밍 구조이다. |
세마포어(Semaphore)
- 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
- P와 V라는 2개의 연산 에 의해서 동기화를 유지시키고, 상호 배제의 원리를 보장한다.
- S는 P와 V 연산으로만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가질수있다.
P 연산 : 자원을 사용하려는 프로세스들의 진입 여부를 자원의 개수(S)를 통해 결정하는 것으로, 자원의 개수를 감소시켜(S=S-1) 자원이 점유되었음을 알림(Wait 동작)
V 연산 : 대기중인 프로세스를 깨우는 신호(Wake Up) 로서, 자원의 개수를 증가시켜(S=S+1) 자원이 반납되 었음을 알림(Signal 동작)
모니터(monitor)
- 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는 데 필요한 데이터 와 이 데이터를 처리하는 프로시저로 구성된다.
- 자료추상화와정보은폐개념을기초로하며공유자 원을 할당하기 위한 병행성 구조로 이루어져 있다.
- 모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야 한다.
- 외부의 프로시저는 직접 액세스할 수 없으며, 모니터의 경계에서 상호 배제가 시행된다.
- 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.
-
ex) CPU 같이사용할 수 있으나 동시에는 불가능 ↩
댓글 쓰기