Index
Search
1. 분산 운영체제의 개요
1.1. 분산 시스템
•
정의
◦
크기나 성능 여러대의 컴퓨터가 네트워크로 연결되어 이루어지는 시스템
◦
네트워크를 통해 약하게 결합된 다양한 성능의 프로세서의 집합
◦
각 프로세서는 자신의 메모리와 클럭을 사용
•
장점
◦
자원 공유 - 각 컴퓨터의 자원을 네트워크로 연결된 컴퓨터가 공유
◦
성능 향상 - 여러대의 프로세서에 작업을 분할하여 병렬적으로 동시 수행
◦
신뢰성 향상 - 고가용성. 한대가 고장나더라도 다른 컴퓨터가 작업 계속 수행
◦
통신의 편리성 - 단일 시스템 내부에서 동작하는 서비스와 같은 서비스 제공
•
네트워크 구성
◦
완전 연결 네트워크
◦
부분 연결 네트워크
•
분산 시스템 구축 고려사항
◦
망 구축 비용
◦
통신 비용
◦
신뢰성
1.2. 분산 시스템의 네트워크 구성
부분연결 네트워크의 구성 형태
•
트리 구조
◦
통신비용: 비교적 저렴
◦
신뢰성: 노드나 링크 고장 시 시스템이 둘 이상으로 분리
•
스타형
◦
통신비용: 저렴
◦
신뢰성: 중심 노드 고장 시 전체 네트워크 연결 끊어짐
•
링형 (환형)
◦
통신비용: 높음
◦
신뢰성: 하나의 노드나 링크 고장나도 연결 안끊어짐
•
버스형
◦
통신비용: 저렴
◦
신뢰성: 버스 고장 → 전체 네트워크 연결 끊어짐
1.3. 네트워크 연결방법
•
근거리 통신망 (LAN)
◦
빠른 속도
◦
좁은 담당 면적
◦
적은 비용
◦
낮은 혼잡, 작은 지연
•
원거리 통신망 (WAN)
◦
느린 속도
◦
넓은 담당 면적
◦
많은 비용
◦
높은 혼잡, 큰 지연
1.4. 분산 운영체제
•
분산 시스템을 관리하기 위한 운영체제
•
투명성 제공
◦
로컬/원격 자원 구분 없애줌
◦
원격 자원 접근에 필요한 일들을 분산 운영체제가 담당
•
분산 운영체제에 적용할 수 있는 방법
◦
데이터 이주
◦
계산 이주
◦
프로세스 이주
•
데이터 이주
◦
원격 데이터를 로컬로 전송해와서 사용하는 방식
•
계산 이주
◦
계산을 원격지에서 처리하고 결과를 전송하는 방식
◦
원격 프로시저 호출 (RPC) 이용
•
프로세스 이주
◦
프로세스 자체를 원격지로 이주
◦
작업량 분산, 목적에 부합한 곳에서 프로세스 실행시켜 성능 향상
2. 분산 파일 시스템
•
Distributed File System
•
클라이언트가 원격 파일을 로컬 파일처럼 사용할 수 있게 해 줌
•
DFS의 네이밍
◦
호스트 이름과 로컬 이름을 조합
▪
host: local_name
◦
원격 디렉토리를 로컬 디렉토리에 마운트
▪
mount -t nfs 10.10.10.10:/backups /var/backups
•
원격 파일에 대한 요청 처리 (RPC를 통한 구현)
◦
네트워크 사용이 많아지면 효율성 문제
◦
개선 → 캐시 이용
▪
전체 시스템 성능 향상
▪
고려할 문제: 캐시 교체 정책, 캐시 일관성 문제 등
3. 분산 메모리
•
원격 시스템의 메모리를 효율적으로 접근할 수 있게 함
•
분산 시스템에 속한 컴퓨터들이 메모리 공유 가능
•
모델 종류
◦
원격 메모리
◦
분산 공유 메모리
3.1. 원격 메모리
•
원격 메모리 API 사용
•
논리적 메모리를 정의하고 공유하도록 하는 원격메모리를 API를 통해 분산 메모리 구현
3.2. 분산 공유 메모리 (DSM)
•
Distributed Shared Memory
•
하나의 메모리 인터페이스만 사용
•
물리적으로 분리된 메모리를 하나의 주소공간을 통해 접근할 수 있게 해줌
•
가상 메모리 기능을 확장하여 한 주소공간에 로컬 메모리, 보조 기억장치, 원격 메모리를 대응하여 분산 메모리 구현
•
장점
◦
노드 개수가 늘어나도 확장성 좋음
◦
실제 메모리를 공유하기 위해 해야할 일들을 프로그래머가 신경 쓸 필요 없음
◦
복잡하고 큰 데이터 처리에 유리
◦
멀티 프로세서 시스템에 비해 저렴
◦
큰 가상 메모리 공간 제공
•
단점
◦
분산 되지 않은 공유 메모리에 비해 접근 속도가 느림
▪
NUMA
◦
공유 메모리가 동시에 둘 이상 접근 시 보호 메커니즘 필요
◦
성능 저하
◦
프로그래머가 분산 공유 메모리를 직접 제어하는것이 어려움
•
cf) NUMA
◦
Non-Uniform Memory Access
◦
각 프로세서가 로컬 메모리를 갖는 분산 공유 메모리
◦
네트워크를 통해 다른 프로세서의 메모리를 사용하므로 저장 위치에 따라 접근 속도가 상이
4. 원격 프로시저 호출 (RPC)
•
Remote Procedure Call
•
프로세스가 네트워크로 연결된 다른 컴퓨터에 있는 프로시저를 호출하는 것
•
마치 같은 컴퓨터에 있는 것 처럼 이용 가능
4.1. 원격 프로시저 호출의 동작
•
클라이언트: 같은 주소공간에 있는 프로시저(스텁 루틴) 호출
•
스텁 루틴은 매개변수나 결과를 메세지로 만든 후 네트워크를 통해 전달
4.2. 원격 프로시저 호출의 구현
•
고려사항
◦
이상적으로 RPC 사용과 로컬 프로시저의 사용이 구별되지 않아야 함
◦
서로 다른 주소공간에 속하기 때문에 메모리 주소를 리턴하는 참조 호출은 의미 없음
◦
RPC 수시자는 호출이 생성된 곳과 유사한 환경에서 실행되어야 함
▪
예시) 전역변수 참조하는 경우
•
예시)