분산 운영체제의 개요
분산 시스템
- 메모리나 클럭을 물리적으로 공유하지 않은 프로세서들의 집합
- 네트워크로 연결되어 상호 협력 가능
네트워크를 중심으로 여러 프로세스(서버, 클라이언트 ,자원 등)이 연결이 되어있다.
서버: 자원을 제공하는 쪽
클라이언트: 자원을 사용하는 쪽
분산 시스템의 목적
- 자원 공유
- 연산속도 향상
- 신뢰성 향상
- 통신의 용이성
자원 공유
- 연결된 다른 사이트의 자원을 사용
- 예: 원격 사이트의 파일 공유, 원격 사이트에서의 프린팅, 분산 DB의 정보 처리 등
연산속도 향상
- 분할이 가능한 작업을 분산 시스템의 여러 사이트에 분산시켜 동시 처리
- 부하 공유를 통해 과부하 해소 및 전체 처리속도 향상
신뢰성 향상
- 일부 사이트에서 장애가 발생하더라도 전체 시스템의 동작이 멈추지 않음
- 장애 검출, 장애 시스템의 기능을 다른 시스템으로 이동, 복구 후 자연스런 복귀 등 필요
- 하드웨어나 데이터의 중복을 통한 해결 가능
통신의 용이성
- 통신 네트워크로 연결된 사이트들의 사용자간 정보 교환 가능
- 하위 수준: 시스템간 메시지 전달
- 상위 수준: 파일 전송, 로그인, 메일 전송, 원격 프로시저 호출(RPC) 등
네트워크 구성
- 완전 연결 네트워크, 부분 연결 네트워크
- 비교기준: 구축비용, 통신비용, 가용성
완전 연결 네트워크: 모든 사이트들이 연결되어 있음, 사이트간 직접 통신 가능
부분 연결 네트워크: 모든 사이트들이 연결되어 있지 않음
구축비용: 사이트들을 물리적으로 연결하는 비용
통신비용: 메시지를 보내는 데 쓰이는 시간과 비용
가용성: 링크나 사이트의 고장 시 접근 가능성
네트워크 연결 비교
완전연결 네트워크: 구축비용 많음, 통신비용 적음, 가용성 높음
부분연결 네트워크: 구축비용 적음, 통신비용 많음, 가용성 적음
부분 연결 네트워크의 구성
트리 구조 네트워크
링크수 : 사이트수 - 1
통신비용: 비교적 저렴
가용성: 낮음
스타형 네트워크(트리 구조의 일종)
링크수 : 사이트수 - 1
통신비용: 저렴
가용성: 높음(단, 중앙 사이트 제외)
링형 네트워크
링크수 : 사이트수
통신비용: 높음
가용성: 비교적 높음
버스형 네트워크
링크수 : 사이트수
통신비용: 저렴
가용성: 높음(단, 버스 제외)
분산 운영체제
투명성 제공
- 사용자는 로컬 자원을 사용하는 것과 동일한 방식으로 원격지 자원을 사용
- 분산 운영체제가 알아서 원격지 자원을 쓸 수 있도록 해줌
운영체제가 제공하는 기능
- 데이터 이주
- 계산 이주
- 프로세스 이주
데이터 이주
- 원격지의 데이터를 필요한 곳으로 전송하여 사용
- 전체 전송 방식, 일부 전송 방식
계산 이주
- 원격지의 대량의 데이터가 필요한 경우 원격지에서 처리 후 결과를 받음
- 원격 프로시저 호출(RPC) 이용
프로세스 이주
- 프로세스 자체를 원격지로 이주시킴으로써 부하분산, 계산속도 향상 가능
분산 파일 시스템
클라이언트가 서버에 저장된 파일을 마치 로컬 파일인 것처럼 처리할 수 있는 파일 시스템
투명한 DFS: DFS의 클라이언트 인터페이스는 로컬 파일과 원격 파일을 구별하지 않음
DFS의 네이밍 방식
- 호스트 이름과 로컬 이름을 조합하는 방식
- 원격 디렉토리들을 로컬 디렉토리에 붙이는 방식
원격 파일에 대한 접근 요청
- 원격 서비스 메커니즘: RPC 활용
- 캐시 활용 방법: 캐시 교체 정책, 캐시 업데이트 정책, 캐시 일관성 문제 등 고려하여 캐시를 이용
분산 메모리
- 메모리 인터페이스가 원격 컴퓨터의 메모리를 참조하도록 하는 것
- 두 가지 모델: 원격 메모리, 분산 공유 메모리
원격 메모리
- 일반적인 메모리 인터페이스와 다른 원격 메모리 API 사용
- <(net#, host#, port#), block, offset>
- 데이터 일관성 유지: 프로그래머의 책임
- 원격 메모리는 논리적 메모리를 정의하고 공유하도록 하는 메모리 API를 통해 분산 메모리를 구현함
원격 분산 공유 메모리
- 가상 메모리 인터페이스를 이용
- 원격 메모리를 로컬 메모리처럼 취급
- 메모리 관리자는 가상주소 공간 구성을 위해 네트워크 네이밍과 투명성 고려
- 데이터 일관성 유지: 운영체제의 책임
- 분산 공유 메모리는 로컬 컴퓨터의 페이징 시스템을 확장하여 분산 메모리를 구현함
원격 분산 공유 메모리의 예: NUMA
- NUMA(Non-Uniform Memory Access) 구조
- 각 프로세서가 로컬 메모리를 가짐
- 데이터 저장 위치가 로컬 메모리냐 원격 메모리냐에 따라 접근 속도의 차이 발생
원격 프로시저 호출
한 컴퓨터에서 작동하고 있는 애플리케이션이 다른 컴퓨터에 있는 프로시저를 호출할 수 있도록 하는 클라이언트-서버 메커니즘
RPC를 사용하기 위해서 클라이언트 애플리케이션과 원격 서버 애플리케이션에서 각각 스텁 루틴 사용
스텁(stub)루틴: 파라미터나 결과를 메시지로 만든 후 네트워크를 통해 전달
RPC 프로시저들은 먼저 ‘이름 서버’에 저장
LookUp을 통해 ‘이름 서버’ 에서 RPC를 확인
Pack을 통해 인수들을 변환해서 Send로 메시지 서버로 전달
원격 서버에서 작업 후 Recive → Unpack 후 RPC 원격 함수를 반환
'공부 > CS공부' 카테고리의 다른 글
운영체제 - 가상메모리 정리 (방송통신대학교 운영체제) (0) | 2022.06.11 |
---|---|
운영체제 - 메모리관리 정리 (방송통신대학교 운영체제) (0) | 2022.06.11 |
운영체제 - 교착상태 정리 (방송통신대학교 운영체제) (0) | 2022.05.28 |