학습 개요
- 분산 시스템은 크기나 성능이 다를 수 있는 여러 대의 컴퓨터가 네트워크로 연결되어 이루어지는 시스템임
- 분산 시스템은 높은 성능과 신뢰성을 제공하기에 컴퓨터가 풀어야 할 문제가 커지고 복잡해지면서 점점 중요해지고 있음
- 분산 시스템의 기본적인 특징과 구성, 주요 서비스에 대해 살펴 봄
학습 목표
- 분산 시스템의 구조와 특징을 설명할 수 있음
- 분산 시스템에서 파일, 메모리 등을 공유하는 방법을 설명할 수 있음
- 분산 시스템에서 원격 프로시저 호출을 설명할 수 있음
강의록
분산 운영 체제의 개요
분산 시스템
크기나 성능이 다를 수 있는 여러 대의 컴퓨터가 네트워크로 연결되어 이루어지는 시스템
분산 시스템의 장점
- 자원 공유
- 각 컴퓨터의 자원을 네트워크로 연결된 컴퓨터가 공유
- ex) 프린터 공유, 1,000대 컴퓨터의 각 256GB 저장 장치 등
- 성능 향상
- 여러 대의 프로세서에 작업을 분할하여 병렬적으로 동시 수행
- 많은 클라이언트가 동시에 작업을 요청할 때 복수의 서버가 처리
- 신뢰성 향상
- 한 대가 고장나더라도 다른 컴퓨터가 작업을 계속 수행
- 하드웨어나 데이터의 중복을 통한 해결 가능
- 통신의 편리성
- 단일 시스템 내부에서 동작하는 서비스와 같은 서비스 제공
- ex) A 위치의 파일을 B 위치로 복사
분산 시스템의 네트워크 구성
- 네트워크 연결 방법
완전 연결 네트워크
- 각각의 노드들이 다른 노드들과 직접 다 연결 되어 있음
부분 연결 네트워크
- 분산 시스템 구축 시 고려 사항
- 망 구축 비용
- 사이트들을 물리적으로 연결하는 비용
- 통신 비용
- 메시지를 보내는 데 필요한 비용
- 신뢰성
- 링크나 사이트 고장 시 정상적 동작 가능 정도
- 망 구축 비용
네트워크 연결 방법 별 특징 비교
부분 연결 네트워크의 구성 형태
연결 방법 통신 비용 신뢰성 망 구축 비용 트리 구조 비교적 저렴 노드나 링크 고장 시 시스템이 둘 이상으로 분리 n - 1 스타형 저렴 중심 노드 고장 시 전체 네트워크 연결 끊어짐 n - 1 링형 높음 하나의 노드나 링크 고장 나도 연결 안 끊어짐 n 버스형 저렴 버스 고장 나면 전체 네트워크 연결 끊어짐 n 근거리 통신망(LAN)
- 빠른 속도
- 좁은 담당 면적
- 적은 비용
- 낮은 혼잡, 작은 지연
원거리 통신망(WAN)
- 느린 속도
- 넓은 담당 면적
- 많은 비용
- 높은 혼잡, 큰 지연
분산 운영 체제
- 분산 시스템을 관리하기 위한 운영 체제
- 투명성 제공
- 로컬 자원과 원격 자원의 구분을 없애 줌
- 원격 자원 접근에 필요한 일들을 분산 운영 체제가 대신 해 줌
- 분산 운영 체제에 적용할 수 있는 방법
- 데이터 이주
- 원격 데이터를 로컬로 전송해 와서 사용하는 방식
- 계산 이주
- 계산을 원격지에서 처리하고 결과를 전송 받는 방식
- 원격 프로시저 호출(RPC) 이용
- 프로세스 이주
- 프로세스 자체를 원격지로 이주 시키는 방식
- 작업 량 분산, 목적에 부합한 곳에서 프로세스 실행시켜 성능 향상
- 데이터 이주
분산 파일 시스템
분산 파일 시스템(DFS)
- Distributed File System
- 클라이언트가 원격 파일을 로컬 파일처럼 사용할 수 있게 해 줌
- DFS의 네이밍 방식
호스트 이름과 로컬 이름을 조합
1
host:local_name
원격 디렉터리를 로컬 디렉터리에 마운트
1
mount -t nfs 10.10.10.10:/backups /var/backups
원격 파일에 대한 요청 처리
RPC를 통해 구현
네트워크 사용이 많아지면 효율성에 문제
캐시를 이용한 분산 파일 시스템
- 전체 시스템의 성능 높임
- 고려할 문제
- 캐시 교체 정책, 캐시 일관성 문제 등
분산 메모리
분산 메모리
- 원격 시스템의 메모리를 효율적으로 접근할 수 있게 함
- 널리 사용되는 두 가지 모델
- 원격 메모리
- 분산 공유 메모리
원격 메모리
- 원격 메모리 API 이용
1
<(net#, host#, port#), block, offset>
분산 공유 메모리 (DSM)
- Distributed Shared Memory
물리적으로 분리 된 메모리를 하나의 주소 공간을 통해 접근할 수 있게 해 줌
- 장점
- 노드 개수가 늘어나도 잘 확장됨
- 실제로 메모리를 공유하기 위해 해야 할 일들을 프로그래머가 신경 쓸 필요 없음
- 복잡하고 큰 데이터 처리에 유리
- 멀티 프로세서 시스템에 비해 저렴
- 큰 가상 메모리 공간 제공
- 단점
- 분산 되지 않은 공유 메모리에 비해 접근 속도 느림
- 공유 메모리에 동시에 둘 이상이 접근할 때 보호 메커니즘 필요
- 성능이 떨어질 수 있음
- 프로그래머가 분산 공유 메모리를 직접 제어하는 것이 쉽지 않음
NUMA
- Non-Uniform Memory Access
각 프로세서가 로컬 메모리를 갖는 분산 공유 메모리
- 저장 위치에 따라 속도 차이 발생
원격 프로시저 호출
원격 프로시저 호출(RPC)
- Remote Procedure Call
- 프로세스가 네트워트로 연결 된 다른 컴퓨터에 있는 프로시저를 실행 시키는 것
- 마치 같은 컴퓨터에 있는 것처럼 이용할 수 있게 함
원격 프로시저 호출의 동작
- 클라이언트는 같은 주소 공간에 있는 프로시저(스텁 루틴)을 호출
- 스텁 루틴은 매개 변수나 결과를 메시지로 만든 후 네트워크를 통해 전달
원격 프로시저 호출의 구현
- 고려 사항
- 이상적으로는 RPC 사용과 로컬 프로시저 사용이 구별되지 않아야 함
- 서로 다른 주소 공간에 속하기 때문에 메모리 주소를 리턴하는 참조 호출은 의미 없음
- RPC 수신자는 호출이 생성된 곳과 유사한 환경에서 실행해야 함
원격 프로시저 호출의 구현 예
정리 하기
- 분산 시스템은 네트워크를 통해 약하게 결합 된 다양한 성능의 프로세서 집합이며, 각 프로세서는 자신의 메모리와 클럭을 사용함
- 분산 시스템의 장점은 자원 공유, 성능 향상, 신뢰성 향상, 통신의 편리성임
- 분산 시스템을 관리하기 위한 운영 체제가 분산 운영 체제이며, 사용자가 원격 자원을 로컬 자원을 사용하는 것처럼 쉽게 사용할 수 있고, 둘 사이의 구별 없이 투명성을 제공함
- 분산 파일 시스템은 클라이언트가 원격 파일과 로컬 파일을 구별하지 않고 처리할 수 있게 함
- 분산 메모리는 분산 시스템에 속한 컴퓨터들이 메모리를 공유할 수 있게 함
- 원격 메모리는 논리적 메모리를 정의하고 공유하도록 하는 원격 메모리 API를 통해 분산 메모리를 구현함
- 분산 공유 메모리는 가상 메모리 기능을 확장하여, 한 주소 공간에 로컬 메모리, 보조 기억 장치, 원격 메모리를 대응 시켜 분산 메모리를 구현함
- 원격 프로시저 호출(RPC)을 통해 한 컴퓨터에서 동작하는 프로그램이 다른 컴퓨터에 있는 프로시저를 호출할 수 있음