[운영체제] 10. 분산 운영체제
1. 분산 운영체제 개요
분산 시스템
분산 시스템이란, 통신 네트워크를 통해 서로 약하게 결합된 프로세서들의 집합이다. 각 프로세서는 메모리와 클럭을 공유하지 않는다. 또한 각 프로세서는 자신의 로컬 메모리를 가지며 LAN 또는 WAN과 같은 네트워크를 통해 통신한다. 분산 시스템 내에 하나의 프로세서의 관점에서 자신이 가지고 있는 자원을 로컬이라고 하고, 그 프로세서 외의 나머지 프로세서들과 그들의 자원을 원격이라고 한다.
분산 시스템 내의 프로세서들은 시스템 환경에 따라 사이트, 노드, 컴퓨터, 기계, 호스트 등 여러 용어로 불린다. 프로세서의 위치를 강조하기 위해 사이트 라는 용어를 사용하며, 사이트에 있는 특정 시스템을 나타내기 위해 호스트 라는 용어를 사용한다. 또한 한 사이트의 호스트 자원을 다른 사이트가 사용한다고 할 때 자원을 가진쪽을 서버라고 하며, 그 자원을 이용하는 쪽을 클라이언트, 혹은 사용자 라고 한다.
분산 시스템을 구축하는 목적은 일반적으로 다음과 같다.
- 자원 공유
- 연산속도 향상
- 신뢰성 향상
- 통신의 용이성
분산 시스템의 네트워크 구성은 물리적 형태에 따라 다양한 연결 방법이 존재한다. 또한 각 노드끼리 간선의 구성 형태에 따라 구축비용, 통신비용, 가용성이 각각 달라진다. 구축비용은 말 그대로 사이트들이 얼마나 물리적으로 밀도있게 연결되어 있는지에 따라 달라진다. 통신비용은 사이트 별 데이트를 통신하는데 얼마나 많은 노드를 거쳐야하는지로 정해진다. 가용성은 링크나 사이트가 고장나도 데이터에 접근할 수 있는지의 여부에 따라 달라진다.
네트워크에는 기본적으로 근거리 통신망(Local-Area Network, LAN) **과 **원거리 통신망(Wide-Area Network, WAN) 두 가지 형태가 있으며, 주된 차이점은 지리적인 분산 형태이다. LAN은 하나의 빌딩 또는 인접한 빌딩 등과 같이 좁은 지역에 분산된 프로세서들로 구성된다. 반면 WAN은 도시나 국가 등 넓은 지역에 분포된 프로세서들로 구성된다.
분산 운영체제
분산 운영체제에서 사용자는 로컬 자원을 사용하는 것과 동일하게 원격 자원을 사용할 수 있다. 이를 위해 운영체제에 적용할 수 있는 기본적인 방법들은 다음과 같은 것들이 있다.
- 데이터 이주
- 계산 이주 (원격 프로시저 호출 RPC)
- 프로세스 이주
2. 분산 파일 시스템
분산 파일 시스템(Distributed File System, DFS)은 클라이언트가 서버에 저장된 파일을 마치 로컬 파일처럼 사용할 수 있는 클라이언트/서버 기반 파일 시스템이다.
3. 분산 메모리
원격 메모리
- 전역 주소공간에 매핑된 로컬 주소공간의 이름을 통해 원격 메모리를 참조한다.
- 데이터 일관성은 프로그래머의 책임이다.
분산 공유 메모리
- 가상 메모리 인터페이스를 이용하여 네트워크 메모리를 구현한다.
- 데이터 일관성은 운영체제의 책임이다.
4. 원격 프로시저 호출
원격 프로시저 호출(Remote Procedure Call, RPC)은 한 컴퓨터에서 작동하고 있는 애플리케이션이 다른 컴퓨터에 있는 프로시저를 호출하는 클라이언트-서버 매커니즘이다.
RPC를 사용하는 클라이언트는 로컬 프로시저를 호출한다. 이를 스텁(stub) 루틴이라고 한다. 이를 RPC 프로시저가 가로채어 원격지 컴퓨터로 전달한다. 그 후 클라이언트 측의 스텁 루틴은 실행을 중단한 채 차단된다. 서버는 전달된 메세지를 보고 적절한 프로시저를 호출한 뒤 결과를 다시 메시지로 만들어서 클라이언트의 스텁 루틴에게 반환한다. 그 후 스텁루틴의 수행이 재개되어 RPC의 결과메시지를 호출자에게 돌려준다.
원격 프로세서 호출은 분산처리에는 유용하지만 병렬 처리에는 유용하지 못하다. 호출자가 원격 프로시저를 호출했을 때, 호출자는 해당 프로시저가 실행되는 동안 일시정지 하기 때문이다.