기출 mutual exclusion 과 하드웨어 및 소프트웨어 방안 제시

agnusdei·2024년 11월 9일
0

Hardware & Software

목록 보기
119/136

상호 배제(Mutual Exclusion)는 운영체제에서 여러 프로세스나 스레드가 동시에 공유 자원이나 임계구역(Critical Section)에 접근하지 못하도록 하는 기법입니다. 즉, 하나의 프로세스가 임계구역을 사용하고 있을 때 다른 프로세스는 접근할 수 없도록 막아, 데이터의 일관성을 유지하고 충돌을 방지합니다. 이를 구현하는 방법은 하드웨어적 해결 방안과 소프트웨어적 해결 방안으로 구분됩니다.

  1. 하드웨어적 해결 방안

하드웨어적인 해결 방안은 상호 배제를 보장하기 위해 하드웨어에서 제공하는 특수한 명령어를 사용합니다. 이 방식은 빠르고 안전한 접근 제어가 가능하지만, 하드웨어 의존적이며 모든 시스템에서 지원되는 것은 아닙니다.
• 1) Test-and-Set 명령어
• 원리: Test-and-Set은 단일 기계 명령어로, 임계구역에 접근하려는 프로세스가 공유 변수의 값을 확인하고 필요 시 값을 설정하여 다른 프로세스의 접근을 제한합니다.
• 동작 방식: 이 명령어는 한 번에 한 프로세스만 변수의 상태를 확인하고 수정할 수 있도록 하여 상호 배제를 보장합니다.
• 예: 공유 변수 lock이 false일 때 프로세스가 임계구역에 접근해 lock을 true로 바꾸고, 다른 프로세스는 lock이 false가 될 때까지 대기합니다.
• 2) Swap 명령어
• 원리: 두 변수를 동시에 교환하는 명령어입니다. 프로세스가 임계구역에 들어갈 때 자신이 준비되었음을 표시하는 플래그와 현재의 임계구역 사용 상태를 교환합니다.
• 동작 방식: 변수를 동시에 교환하는 동안 다른 프로세스가 동시에 접근할 수 없게 되므로 상호 배제를 보장할 수 있습니다.
• 3) 인터럽트 비활성화
• 원리: 단일 프로세서 환경에서 사용될 수 있는 방법으로, 프로세스가 임계구역에 진입할 때 인터럽트(Interrupt)를 비활성화하여 다른 프로세스가 CPU를 사용할 수 없도록 합니다.
• 단점: 모든 프로세스의 CPU 사용이 일시 중단되므로 다중 프로세서 환경에서는 사용하기 어렵습니다.

  1. 소프트웨어적 해결 방안

소프트웨어적인 해결 방안은 알고리즘을 사용하여 상호 배제를 구현하는 방식으로, 프로세스 간의 협력을 통해 임계구역에 한 번에 하나의 프로세스만 접근할 수 있도록 설계됩니다. 이 방식은 하드웨어에 의존하지 않아 범용적이지만, 구현의 복잡성과 처리 시간이 다소 증가할 수 있습니다.
• 1) 데커(Dekker)의 알고리즘
• 원리: 두 프로세스가 임계구역에 접근할 때 상호 배제를 보장하는 초기 알고리즘 중 하나입니다.
• 동작 방식: 각 프로세스는 자신이 임계구역에 들어갈 준비가 되었음을 나타내는 플래그를 설정하고, 두 프로세스가 모두 임계구역에 들어가려고 할 때 우선순위를 서로 양보하면서 충돌을 방지합니다.
• 2) 피터슨(Peterson)의 알고리즘
• 원리: 데커의 알고리즘을 개선하여 두 프로세스 간 상호 배제를 보장하는 알고리즘으로, 플래그와 순서 값을 사용해 임계구역에 한 번에 하나의 프로세스만 접근하게 합니다.
• 동작 방식: 두 프로세스가 동시에 임계구역에 들어가려 할 때 양보의 순서를 정해 충돌을 피합니다.
• 특징: 두 프로세스에 대해 매우 효율적이며, 현재도 학습용 예시로 널리 사용됩니다.
• 3) 세마포어(Semaphore)
• 원리: 프로세스가 자원을 요청하거나 해제할 때 P와 V 연산을 수행하여 상호 배제를 보장하는 방식입니다.
• 동작 방식: 세마포어 변수 값이 0보다 크면 P 연산을 통해 세마포어 값을 1 감소시키고 자원에 접근할 수 있도록 합니다. 자원 사용을 마친 후에는 V 연산으로 세마포어 값을 1 증가시켜 다른 프로세스가 자원에 접근할 수 있게 합니다.
• 4) 모니터(Monitor)
• 원리: 모니터는 공유 자원의 접근을 관리하는 고수준의 동기화 기법으로, 객체지향 언어에서 지원되는 synchronized 키워드처럼 사용됩니다.
• 동작 방식: 모니터 내부의 코드 블록은 한 번에 하나의 프로세스만 접근할 수 있어, 프로세스가 임계구역에 진입할 때 자동으로 상호 배제를 보장합니다.
• 특징: 주로 고급 프로그래밍 언어에서 구현되어, 동기화에 대한 프로그래머의 수고를 덜어줍니다.

요약

•	하드웨어적 해결 방안: Test-and-Set, Swap 명령어, 인터럽트 비활성화 등을 사용하여 상호 배제를 강력하게 보장합니다.
•	소프트웨어적 해결 방안: 데커, 피터슨 알고리즘, 세마포어, 모니터 등 알고리즘과 구조체를 활용하여 하드웨어에 의존하지 않고 상호 배제를 구현합니다.

각 방법은 시스템의 환경과 요구 사항에 맞춰 선택되며, 다양한 상황에 맞는 상호 배제 구현을 통해 시스템 안정성과 효율성을 높일 수 있습니다.

0개의 댓글