[운영체제] 13강 - 분산 운영체제

2026. 6. 3. 18:39·방송통신대학교/⚙️운영체제

✅ 1. 분산 운영체제의 개요

(1) 분산 시스템

  • 분산 시스템: 여러 대의 독립된 컴퓨터가 네트워크로 연결되어 서로 협력하면서, 사용자에게는 마치 하나의 시스템처럼 보이도록 동작하는 시스템을 의미한다.

  • 분산 시스템은 자원 공유, 성능 향상, 신뢰성 향상, 통신의 편리성 등의 장점이 있음.

(2) 분산 시스템 - 장점

  • 자원 공유: 독립된 각 컴퓨터의 자원을 네트워크상에서 연결된 컴퓨터끼리 공유하기 때문에, 병목을 완화할 수 있으며 저장에 대한 용량이 컴퓨터 여러대 분량으로 늘어 날 수 있는 장점이 있음.

  • 성능 향상: 분산 시스템은 여러 대의 프로세서에 작업을 분할하여 병렬적으로 동시에 수행시키기 때문에, 많은 클라이언트가 동시에 작업을 요청해도 복수의 서버가 처리 할 수 있어서 성능 향상이 됨.

  • 신뢰성 향상: 서버 컴퓨터 한 대가 고장나더라도 다른 컴퓨터가 작업을 계속 수행하기 때문에 서버에 대한 신뢰성이 높아짐.

  • 통신의 편리성: 단일 시스템 내부에서 동작하는 서비스와 같은 서비스를 제공하는 것이 분산 시스템의 특징이기 때문에 여러개의 다른 기능을 가지는 서버들이 하나의 서버로 보이도록 통신의 편리성의 장점이 있음.

(3) 분산 시스템 - 네트워크 구성

  • 분산 시스템은 여러대의 컴퓨터가 서버로써, 작동하는데 네트워크 구성이 되어있어야만 한 대의 서버처럼 이용이 가능함.

  • 네트워크 연결방법: 완전연결 네트워크, 부분연결 네트워크, .. 등 다양한 네트워크 연결 방법이 존재 할 수 있음.
  • 분산 시스템 구축 시 고려사항: 위와 같은 네트워크 연결방법은 망 구축비용, 통신비용, 신뢰성에 따른 고려사항이 존재함.

  • 즉, 네트워크 연결방법에 따라서 망 구축비용이 비싸거나 적게 될 수 있으며, 통신비용 또는 신뢰성에 따른 장단점도 각각 존재 할 수 있음. ( 각 연결방법에 대한 장단점을 분석해서 어떤식으로 네트워크를 구성할지를 고민해야함. )

  • 근거리 통신망(LAN): 해당 네트워크를 지리적 범위에 따라서 특정 범위가 근거리 범위라고 한다면, 해당 통신망은 근거리 통신망(LAN)으로 부름. 쉽게 말해, 학교 강의실, 사무실, 하나의 건물, 또는 집 안처럼 제한된 좁은 지역을 연결한 네트워크를 의미하며, 거리가 가깝기 때문에 전송 속도가 매우 빠르고 에러 발생률이 낮음. ( 와이파이같은 것임 )

  • 원거리 통신망(WAN): 도시와 도시, 국가와 국가, 더 나아가 전 세계를 연결하는 거대한 네트워크로, LAN과 LAN을 연결한 것이라고 보면 됨. ( 우리가 쓰는 인터넷이 대표적인 WAN 임 )

(4) 분산 운영체제

  • 분산 운영체제: 분산 시스템을 관라히기 위한 운영체제를 의미하며, 쉽게말해 네트워크로 연결 된 여러 컴퓨터를 하나의 거대한 고성능 컴퓨터를 쓰는 것처럼 느끼게 만들어 주는 운영체제를 의미한다.
  • 투명성 제공: 분산 운영체제의 가장 중요한 목표는 투명성을 제공하는 것이며, 여기서 투명하다는 것은 투명인간처럼 "사용자가 네트워크의 존재나 시스템의 복잡함을 눈치채지 못하게 숨겨준다"는 뜻을 가짐.
  • 즉, 투명성은 로컬 자원과 원격 자원의 구분을 없애준다고 볼 수 있으며, 이는 사용자가 어떤 자원을 사용했을 때 이것이 로컬 자원이던 멀리 있는 원격 자원이던 원격 자원 접근에 필요한 일들을 분산 운영체제가 대신 해 주는 것이 투명성 제공이라 함.
  • 분산 운영체제에 적용할 수 있는 방법: 원격지에 있는 자원이나 연산 능력을 필요로 할 때, 무엇을 어디로 이동시켜서 문제를 해결한 것인가에 대한 세 가지 핵심 전략으로 데이터 이주, 계산 이주, 프로세스 이주가 있음.
  • 즉, 분산 운영체제는 클라우드 컴퓨팅을 예로 들면 클라우드 회사가 보유하고 있는 여러 리전들을 하나의 컴퓨터처럼 사용하기 위해서 분산 운영체제 시스템을 사용함.

  • 데이터 이주: 원격 데이터(서버)를 내 컴퓨터(로컬)로 가져와서 처리하는 방식으로, 데이터베이스만 서버에 있는 느낌임.
  • 계산 이주: 계산은 저 멀리 원격지에서 처리하게 하고, 결과만 전송받는 방식으로, 특정 알고리즘이나 무거운 로직만 전문적으로 처리하는 서버(프로세스)를 원격지에 따로 대기시켜 두고, 필요할 때마다 호출하는 방식으로 볼 수 있음.
  • => 즉, 데이터를 가져오기에는 너무 많은 경우 데이터 처리를 해당 서버에서 처리를 한 뒤, 결과만 받는 느낌임.
  • 프로세스 이주: 실행 중인 프로세스(작업 덩어리) 자체를 통째로 원격지로 이사시키는 방식으로, 용량이 큰 프로세스 전체를 옮겨서 해당 서버에서 데이터를 처리 한 뒤, 결과만 받는 느낌임.
  • 정리: 데이터 이주는 데이터베이스만 두고 쓰는 서버, 계산 이주는 프로세스의 특정 알고리즘 함수 + 데이터베이스 서버, 프로세스 이주는 프로세스 전체 + 데이터베이스 서버로 볼 수 있음.

✅ 2. 분산 파일 시스템

(1) 분산 파일 시스템이란?

  • 분산 파일 시스템은 분산 운영체제를 구성하는 필수적인 하위 시스템임.

  • 분산 파일 시스템: 클라이언트가 원격 파일을 로컬 파일처럼 사용할 수 있게 해주는 분산 운영체제의 하위 시스템을 의미함.
  • 즉, 물리적으로 다른 컴퓨터(서버)에 저장되어 있는 파일들을, 마치 내 컴퓨터(로컬)에 있는 것처럼 똑같이 사용할 수 있게 해주는 시스템을 의미함. ( DFS = 분산 파일 시스템 )
  • DFS의 네이밍 방식: 클라이언트가 원격 파일에 어떻게 접근(이름을 지정)하는지 두 가지 방식으로 나눌 수 있음.
  • (1) 호스트 이름과 로컬 이름을 조합: 어떤 서버의 어떤 파일인지 명시적으로 주소를 다 적어주는 방식임.
  • 예를들면, serverA:/images/photo.jpg 처럼 "serverA라는 컴퓨터 안에 있는 images 폴더 photo.jpg를 가져와달라고 직접 지칭을 하는 형태를 의미함.
  • (2) 원격 디렉터리를 로컬 디렉터리에 마운트: 위의 mount 명령어가 대표적인 예시이며, 10.10.10.10 서버에 있는 /backups라는 폴더를, 내 컴퓨터의 /var/backups라는 폴더에 "백그라운드로 연결(마운트)해라"라는 뜻을 가짐.

(2) 원격 파일에 대한 요청 처리

  • 원격 파일에 대한 요청 처리는 RPC를 통해서 구현이 되어있으며, 이는 네트워크 사용이 많아지면 효율성에 문제가 발생 할 수 있음. ( 해당 문제는 아래 캐시를 이용해서 해결이 됨. )

(3) 캐시를 이용한 분산 파일 시스템

  • 매번 원격지에서 요청을 해서 가지고오게 되면, 네트워크 사용에 대한 효율성이 떨어지기 때문에 캐시에 미리 저장을 해두는 형태로 효율성을 올릴 수 있음.
  • 다만, 캐싱을 할 디렉토리 및 파일의 교체 정책 및 캐시 일관성 문제를 고려해야 하지만, 전체 시스템의 성능면에선 매우 좋음.

✅ 3. 분산 메모리

(1) 분산 메모리란?

  • 분산 메모리: 원격 시스템인 네트워크로 연결 된 컴퓨터들의 메모리들을 의미함.
  • 원격 시스템의 메모리를 효율적으로 접근할 수 있게 해주는 특징이 있음.
  • 분산 메모리를 구현하는 두 가지 모델: 원격 메모리, 분산 공유 메모리

(2) 분산 메모리 모델 - 원격 메모리

  • 원격 메모리: 원격 메모리 API 를 통해서 원격 메모리 서버의 메모리를 이용하는 방식임.
  • 쓰기 어려운 방식이라 일반적으로는 사용하지 않는듯.

(3) 분산 메모리 모델 - 분산 공유 메모리(DSM)

  • 분산 공유 메모리(DSM): 물리적으로 분리된 메모리를 하나의 주소공간(가상메모리)을 통해 접근할 수 있게 해주는 방식이며, 쉽게 말해, 운영체제가 로컬 메모리 및 원격 메모리에 대해서 가상메모리를 통해 분류를 해주게 됨. ( 투명성 제공을 해줌 )

  • <분산 공유 메모리 장점>
  • (1) 노드 개수가 늘어나도 잘 확장됨: 하나의 하드웨어 공유 메모리 시스템은 메인보드 설계상 꽂을 수 있는 CPU와 메모리 슬롯의 한계가 명확하지만, DSM은 물리적으로 독립된 컴퓨터(노드)를 네트워크에 추가하고 소프트웨어 설정을 잡아주기만 하면 되므로, 시스템의 크기와 성능을 확장(스케일 아웃)하기에 매우 용이함.
  • (2) 실제로 메모리를 공유하기 위해 해야 할 일들을 프로그래머가 신경 쓸 필요 없음: 투명성 제공
  • (3) 복잡하고 큰 데이터 처리에 유리 + 큰 가상 메모리 공간 제공: 다루어야 할 데이터가 수백 GB 혹은 TB 단위로 커지면, 단일 PC의 물리 메모리(RAM)에는 다 담을 수 없기 때문에, DSM은 여러 컴퓨터의 메모리를 전부 합쳐서 하나의 거대한 가상 주소 공간으로 맵핑(위의 2가지 내용)을 통해서 마치 내 컴퓨터에 엄청나게 큰 메모리가 꽂혀 있는 것처럼 쓸 수 있음.
  • (4) 멀티프로세서 시스템에 비해 저렴: 스케일 업(컴퓨터 성능 업)보단 스케일 아웃(컴퓨터 대수 업)이 더 싸기 때문에 멀피르소세서 시스템보다 저렴 할 수 있음.

  • <분산 공유 메모리 단점>
  • (1) 분산되지 않은 공유 메모리에 비해 접근속도 느림: 로컬은 바로 사용이 가능하지만, 원격지의 경우 네트워크를 사용해서 공유 메모리에 접근해야 하기 때문에 접근속도가 느릴 수 있음.
  • (2) 공유 메모리에 동시에 둘 이상이 접근할 때 보호 메커니즘 필요: 여러 노드(컴퓨터)가 하나의 거대한 가상 공유 메모리를 바라보고 있기 때문에, 동시에 메모리 주소의 데이터를 수정하려고 하는 상황이 발생 할 수 있는데, 접근에 대한 보호 메커니즘이 필요할 수 있음.
  • (3) 성능이 떨어질 수 있음: 앞선 (1) 느린 네트워크 속도, (2) 보호 메커니즘의 오버헤드가 합쳐져 시스템 전체 성능이 떨어질 수 있음.
  • (4) 프로그래머가 분산 공유 메모리를 직접 제어하는 것이 쉽지 않음: 운영체제가 위치 및 이주에 대한 투명성을 제공해주기 때문에 복잡한 과정을 프로그래머가 생략 할 수 있어 좋지만, 이것이 반대로 성능 관점에서 성능을 올리기 위해서는 투명성의 베일을 걷어내고, 구조를 알아야 성능을 올릴 수 있는 문제가 있음.

(4) 분산 메모리 모델 - NUMA(접근 속도 관련 문제 해결)

  • NUMA(Non-Uniform Memory Access): 현재 고성능 서버 아키텍처를 지배하고 있는 핵심 하드웨어 설계이며, 메모리가 물리적으로 분산되어 있지만, 하나의 하드웨어 내부의 메모리가 있는 것이므로, 하드웨어 관점의 분산 공유 메모리이다.
  • 그 외 위에서 배운 내용은 네트워크 관점의 분산 공유 메모리임.

✅ 4. 원격 프로시저 호출

(1) 원격 프로시저 호출(RPC)

  • 원격 프로시저 호출(RPC): 원격 프로세스와 통신하기 위한 추상화된 호출 방식을 의미한다.
  • 쉽게 말해, RPC는 서로 다른 컴퓨터에서 실행되는 프로세스 간의 메시지 통신을 일반적인 함수 호출이라는 추상화로 감춰, 분산 시스템을 하나의 시스템처럼 사용할 수 있도록 하는 메커니즘임. 이 덕분에 투명성을 제공받을 수 있음.
  • 또한, 함수 호출을 할 때, 이게 원격지인지 로컬인지에 대한 것은 투명성을 통해 내부 운영체제가 알아서 해줌.

(2) 원격 프로시저 호출(RPC) - 동작 과정

  • 원격 프로시저 호출의 동작: 클라이언트 애플리케이션이 동일하게 로컬 프로시저를 호출 할 때, 만약 원격 서버의 함수라고 한다면, 스텁 루틴과 RPC 메커니즘을 통해서 원격 서버의 함수를 호출 한 뒤, 결과값을 반환을 받는 원리임.

  • 고려사항 1: 함수 호출을 할 때, 해당 함수가 로컬 프로시저, 원격 프로시저(RPC 사용)인지에 대한 구별이 되지 않아야함. 즉, 사용자 입장에서는 단순히 함수 호출로 봐야하는 투명성을 제공해줘야함.
  • 고려사항 2: 로컬과 원격지는 각각 독립된 메모리 주소 공간을 가져 메모리 내부의 데이터 위치가 다르기 때문에, 메모리 주소가 아닌 실제 데이터(값)을 통째로 복사해서 전달하는 값 호출방식을 이용해야 함.
  • 고려사항 3: 네트워크를 통해 함수 호출 요청을 받는 컴퓨터는 요청을 보낸 곳과 데이터의 물리적 표현 형식이 호환되어야 오류가 안나는데, 이는 CPU 회사마다 데이터 처리가 다르고, 32비트 또는 64비트 환경에 따라서 데이터 타입의 물리적 크기가 다를 수 있기 때문에 이러한 사항을 고려해야함.

(3) 원격 프로시저 호출(RPC) - 구현 예시

  • 원격 함수 호출 시 스텁 루틴을 수행하는데, 내부적으로 원격지의 스텁을 호출해 함수를 수행 한 뒤, 반환 받는 원리임.
  • 분산 운영체제가 RPC 내부의 스텁 루틴을 내부적으로 수행을 해줌.

'방송통신대학교 > ⚙️운영체제' 카테고리의 다른 글

📚 운영체제 1강 - 운영체제 소개  (0) 2026.07.25
[운영체제] 12강 - 저장장치 및 파일관리  (0) 2026.04.30
[운영체제] 11강 - 장치관리  (0) 2026.04.25
[운영체제] 10강 - 페이지 교체 알고리즘  (0) 2026.04.17
[운영체제] 9강 - 가상 메모리  (0) 2026.04.14
'방송통신대학교/⚙️운영체제' 카테고리의 다른 글
  • 📚 운영체제 1강 - 운영체제 소개
  • [운영체제] 12강 - 저장장치 및 파일관리
  • [운영체제] 11강 - 장치관리
  • [운영체제] 10강 - 페이지 교체 알고리즘
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    배열
    방송통신대학교
    Python
    알고리즘
    컴퓨터과학 개론
    함수
    방송대
    방통대
    운영체제
    이산수학
    C언어
    파이썬
    자료구조
    유비쿼터스
    그래프
    컴퓨터의 이해
    컴퓨터과학과
    Java
    spring
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[운영체제] 13강 - 분산 운영체제
상단으로

티스토리툴바