Search
🏫

[운영체제] 13. 분산 운영체제

[운영체제] 14. 운영체제 보안
CS
Operation System
2023/06/0712:24
[운영체제] 14. 운영체제 보안
CS
Operation System
2023/06/0712:24

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 수시자는 호출이 생성된 곳과 유사한 환경에서 실행되어야 함
예시) 전역변수 참조하는 경우
예시)