분산 시스템 구조 (Distributed System Structure)

By 01/11/2018OS Concept

분산 시스템 구조 (Distributed System Structure)

 

분산 시스템이란 통신 네트워크를 통하여 서로 약결합된(loosely coupled) 처리기들의 집합이다. 분산 시스템 내의 처리기 관점에서 그 처리기가 가지고 있는 자원을 지역(local)이라 하고 그 처리기 외의 나머지 모든 처리기들과 그들에게 속해 있는 자원들은 원격(remote)이라고 한다.

 

분산시스템을 구축하는 목적은 크게 4가지로 분류 할 수 있다.

  • 자원 공유(Resource Sharing) : 다른 기종의 사이트가 서로 연결되어 있다면 한 사이트의 사용자는 다른 사이트의 자원들을 사용할 수 있을 것이다.
  • 연산 속도 향상(Computation Speedup) : 하나의 특정 연산이 동시에 처리될 수 있는 여러 개의 부분 연산(subcomputation)으로 분할된다면 분산 시스템의 여러 사이트에그 연산을 분산시켜 처리 할 수 있다. 이때 동시에 처리 되므로 연산 속도의 향상을 가져온다. 이러한 작업 분배를 부하공유(load sharing)이라 한다.
  • 신뢰성(Reliability) : 분산시스템에서 결함이 발생하더라도 나머지 사이트들은 동작을 계속 할 수 있다. 사이트의 결함은 시스템에 의해 감지되어야 하며 결함을 복구하기 위한 적절한 조치가 필요하다.
  • 통신(Communition) : 여러 사이트들이 통신 네트워크를 통해 서로 연결되어 있을 때 다른 사이트에 있는 사용자들 간에 정보교환이 가능하다. 저수준에서는 메시지(message)들이 시스템들간에 전달된다. 이러한 분산 시스템의 장점은 다운사이징(downsizing)이라는 새로운 산업화 문화를 만들어 냈다.

 

통신 네트워크 설계는 다음 4가지 기본 문제를 고려 한다.

  • 명명과 이름 해결(naming and name resolution) : 상호 통신을 하는 두 프로세스의 위치를 어떻게 찾을 것인가?
  • 라우팅 전략(routing strategies) : 네트워크를 통하여 어떻게 메시지를 보낼 것인가?
  • 패킷 전략(Packet strategies) : 패킷들이 개별적 또는 순서대로 보내지는가?
  • 연결 전략(Connection strategies) : 두 프로세스가 일련의 메시지들을 어떻게 보낼 것인가?
  • 경쟁(Contention) : 네트워크가 공유 자원일 때 네트워크 사용 요구의 충돌(conflict)을 어떻게 해결할 것인가?

 

[명명과 이름 해결(Naming and Name Resolution)]

시스템들간에 이름을 부여하는 방법이다. 이를 명명(naming)이라고 한다. 사이트 A에 있는 프로세스가 사이트 B에 있는 프로세스와 정보를 교환하기 위해서는 서로를 식별할 수 있어야 한다. 컴퓨터 시스템 내에서 각 프로세스는 고유의 Process-ID를 가지고 있고 메시지들은 Process-ID로 수신 주소가 지정된다. 네트워크로 구성된 시스템은 메모리를 공유하지 않기 때문에 시스템의 호스트는 처음에 다른 호스트에 있는 프로세스 정보를 가지고 있지 않다.

 

이를 해결하기 위해서 원격 시스템 상에 존재하는 프로세스는 일반적으로 <호스트 이름, 식별자>에 의해 식별 된다. 여기서 호스트 이름은 네트워크 내에서 유일하고 식별자는 해당 호스트 내의 Process-ID나 혹은 고유한 번호 이다. 호스트 이름은 사용자가 쉽게 사용할 수 있도록 숫자보다는 알파벳과 숫자의 조합으로 표현한다.

 

[라우팅 전략(Routing Strategy)]

여러 개의 물리적 경로가 존재한다면 여러 가지 라우팅 방법들이 있다. 각 사이트들은 각자 라우팅 테이블을 가지고 있고 이 테이블은 다른 사이트들에게 메시지를 보내기 위해 사용될 수 있는 경로들을 가진다.

 

가장 흔하게 사용되는 라우팅으로는 고정 라우팅(Fixed routing), 가상 라우팅(Virtual routing), 동적 라우팅(dynamic routing)등이 있다.

  • 고정 라우팅 : A에서 B로의 경로가 미리 정해져 있으며 하드웨어 고장이 발생하여 그 경로를 사용하지 못하게 되지 않는 한 경로를 바꾸지 않는다. 통신비용을 최소화 하기 위해서 최단 거리 경로가 지정 된다.
  • 가상 라우팅 : A에서 B로의 경로가 한 세션(session)동안만 고정 된다. 다른 세션에서는 A에서 B로의 경로가 달라질 수 있다. 세션은 파일 전송처럼 짧을 수도 있고 원격 로그인처럼 길 수도 있다.
  • 동적 라우팅 : A에서 B로의 경로가 메시지가 보내질 때 결정 된다. 경로 선택이 동적으로 결정되기 때문에 메시지들은 다른 경로들을 배정 받을 수 있다. 일반적으로 메시지 사용률이 가장 낮은 링크를 통해서 다른 사이트로 전송 한다.

 

고정 라우팅은 링크 고장이나 부하의 변화에 적응 할 수 없다. 이 문제는 가상 라우팅이나 동적 라우팅을 통하여 해결이 가능하다. 동적 라우팅에서는 전송 순서와는 다른 순서로 메시지가 도착할 수 있다. 이 문제는 메시지에 일련번호를 붙임으로써 해결 한다.

 

[패킷 전략(Packet Strategy)]

일반적으로 메시지의 길이는 가변적이다. 패킷 형태로 구현된 통신은 무연결(connectionless)메시지 형태로 자료를 전송한다. 무연결 메시지는 신뢰성이 없다고 할 수 있다. 즉 목적지로의 전송을 보장 받을 수 없다. 메시지가 하나 이상의 패킷으로 구성되거나 두 통신자 사이에 양방향으로 진행될 필요가 있을 경우에는 여러 개의 패킷 교환을 신뢰성 있게 하기 위하여 연결(connection)이 구축되어야 한다.

 

[연결 전략(Connection Strategy)]

일단 메시지들이 상대방에게 도달하면 프로세스들은 통신 세션을 만들어 정보를 교환한다. 두 프로세스를 연결하는 방식은 일반적으로 회선교환(Circuit switching), 메시지 교환(Message switching), 패킷 교환(Packet switching)방식이 있다.

  • 회선 교환 : 두 프로세스가 통신 할 때 고정된 물리적인 링크가 설정 되고 그 링크는 세션동안 할당 된다. 이 두 프로세스는 실제 통신을 수행하지 않는다 해도 한 번 설정된 세션 동안은 다른 프로세스들은 이 할당된 링크를 사용 할 수 없다.
  • 메시지 교환 : 두 프로세스가 통신 할 때 임시 링크가 하나의 메시지 전송 기간 동안 설정 된다. 물리적인 링크들은 필요할 때마다 동적으로 할당되고 아주 짧은 시간 동안만 할당 된다. 각 메시지는 시스템 정보를 가진 블록들이며 목적지까지 정확히 전달되기 위한 정보들이다.
  • 패킷 교환 : 하나의 논리 매시지는 여러 개의 패킷으로 나뉘어 진다. 각 패킷들은 독립적으로 해당 목적지로 전송되며 각 패킷은 출발지와 목적지를 가지고 있다. 패킷은 서로 다른 경로로 전달 될 수 있으며 목적지에서 재결합된다.

 

 

통신 네트워크 설계는 여러 계층으로 문제를 분할함으로써 단순화 할 수 있다. 한 시스템의 각 계층은 다른 시스템에 존재하는 동등한 계층과 통신한다. 각 계층은 자신의 고유한 프로토콜을 가질 수 있고 특정 프로토콜을 사용하여 피어 계층간 통신을 한다.

 

  1. 물리 계층(Physical layer) : 비트 스트림(bit stream)을 물리적으로 전송하기 위한 기계적, 전기적 사항들을 담당한다.
  2. 데이터 링크 계층(Data link layer) : 물리 계층에서 발생되는 오류에 대한 감지와 복구 등 프레임(frame) 관련 작업을 한다.
  3. 네트워크 계층(Network layer) : 통신 네트워크 내의 연결 및 패킷 라우팅을 담당한다.
  4. 트랜스포트 계층(Transport layer) : 네트워크로의 저수준 접근 및 클라이언트간 메시지 전달을 담당한다. 메시지를 패킷으로 분할하고 패킷의 순서를 유지하며 흐름 제어와 물리적인 주소를 생성한다.
  5. 세션 계층(Session layer) : 세션을 구현하고 프로세스간 통신 프로토콜을 담당한다. 원격로그인, 파일 및 메일 전송 등을 위한 실제적인 통신을 다룬다.
  6. 프리젠테이션 계층(Presentation layer) : 문자 변환이나 반이중(half duplex), 전이중(full duplex) 모드 등을 포함해 사이트들 간 포맷의 차이의 해결을 담당한다.
  7. 응용 계층(Application layer) : 사용자들이 직접 교신 하는 것을 담당한다.

 

 

[참고자료]

Operating System Concepts

 

operationsystem, 운영체제, 운영체제구조, 컴퓨터구조, OSConcept, 분산시스템구조, 네트워크, OSI7계층, 프로토콜, 통신구조, sqlmvp, SQL Angeles