본문 바로가기

공부/CS공부

운영체제 - 분산 운영체제 정리 (방송통신대학교 운영체제)

반응형

분산 운영체제의 개요

분산 시스템

  • 메모리나 클럭을 물리적으로 공유하지 않은 프로세서들의 집합
  • 네트워크로 연결되어 상호 협력 가능

네트워크를 중심으로 여러 프로세스(서버, 클라이언트 ,자원 등)이 연결이 되어있다.

서버: 자원을 제공하는 쪽

클라이언트: 자원을 사용하는 쪽

분산 시스템의 목적

  • 자원 공유
  • 연산속도 향상
  • 신뢰성 향상
  • 통신의 용이성

자원 공유

  • 연결된 다른 사이트의 자원을 사용
  • 예: 원격 사이트의 파일 공유, 원격 사이트에서의 프린팅, 분산 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 원격 함수를 반환

반응형