맨위로가기

분산 운영 체제

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

분산 운영 체제는 여러 컴퓨터의 자원을 통합하여 단일 시스템처럼 보이도록 하는 운영 체제이다. 사용자에게는 단일 노드처럼 보이지만, 내부적으로는 여러 노드로 구성되어 규모와 가용성을 높인다. 마이크로커널을 사용하여 유연성과 확장성을 확보하고, 파일 시스템 및 프로세스에 네트워크 투명성을 제공하는 것이 특징이다. DYSEAC, Lincoln TX-2 등의 초기 시도를 거쳐 1970년대 본격적인 연구가 시작되었으며, 투명성, 프로세스 간 통신, 자원 관리, 신뢰성, 가용성, 성능, 동기화, 유연성 등의 설계 고려 사항이 존재한다. Amoeba, L4 마이크로커널 패밀리, Mach, QNX 등이 분산 운영 체제의 예시이다.

더 읽어볼만한 페이지

  • 운영체제 - 모르프OS
    모르프OS는 1999년 Quark 마이크로커널 기반으로 개발되어 AmigaOS의 대안을 목표로 PowerPC 기반 컴퓨터를 위해 만들어진 운영체제로, 빠른 속도와 세련된 인터페이스를 지향하며 AmigaOne, Macintosh, Efika, Pegasos 등의 특정 하드웨어에서 실행되도록 설계되었다.
  • 운영체제 - 티맥스 윈도
    티맥스 윈도는 티맥스소프트가 개발한 운영 체제로, 자체 웹 브라우저와 오피스 프로그램을 포함했지만, 상용화에 실패하고 기술 논란과 상표권 분쟁을 겪었다.
  • 소프트웨어의 역사 - AI 겨울
    AI 겨울은 인공지능 연구에 대한 자금 지원과 관심이 크게 감소했던 시기를 가리키며, 기계 번역의 어려움, 신경망의 한계, 전문가 시스템 문제, 5세대 컴퓨터 실패 등의 요인으로 여러 차례 침체기를 겪었으나, 2000년대 이후 음성 및 이미지 인식 분야에서 성과를 거두며 부흥했고, 2022년 이후 대규모 언어 모델 등장으로 관심과 투자가 폭발적으로 증가했다.
  • 소프트웨어의 역사 - 천공 카드
    천공 카드는 1725년 직기 제어에 처음 사용되어 데이터 저장 및 처리에 널리 활용되었으며, 1950년대 자기 테이프 등장으로 쇠퇴했으나 문화적 유산으로 남아있다.
  • 컴퓨터 네트워크 - NORSAR
    NORSAR는 노르웨이 셸러에 위치한 지진 연구 및 데이터 센터이며, 기초 지진학 연구, 소프트웨어 개발, 석유 산업 컨설팅 등의 활동을 수행하며, 포괄적 핵실험 금지 조약을 위한 노르웨이 국가 데이터 센터 역할을 수행한다.
  • 컴퓨터 네트워크 - 라우터
    라우터는 네트워크 간 데이터 패킷을 전달하는 네트워크 장비로, ARPANET의 IMP에서 시작하여 다양한 종류로 발전해 왔으며, 최신 네트워크 기술과 함께 네트워크의 확장성, 안정성 및 효율성을 향상시키는 데 중요한 역할을 한다.
분산 운영 체제
기본 정보
유형운영 체제
설계 구조분산 시스템
특징자원 공유
병렬 처리
높은 가용성
확장성
투명성
주요 목표
자원 공유네트워크를 통해 자원을 공유하고 활용함
투명성사용자에게 단일 시스템처럼 보이도록 숨김
병렬 처리작업을 분산하여 처리 속도 향상
확장성시스템 규모를 쉽게 확장 가능
높은 가용성일부 시스템 오류에도 전체 시스템은 계속 작동
아키텍처
클라이언트-서버 모델클라이언트가 서버에 요청을 보내고, 서버가 응답하는 방식
피어-투-피어 모델모든 노드가 동등한 역할을 수행하며, 자원을 공유하는 방식
주요 기술
메시지 전달프로세스 간 통신을 위한 기본 기술
분산 파일 시스템여러 시스템에 분산된 파일을 관리
분산 데이터베이스여러 시스템에 분산된 데이터를 관리
분산 합의 알고리즘분산 시스템에서 합의를 이루기 위한 알고리즘
장점
높은 신뢰성시스템의 일부에 장애가 발생해도 다른 부분이 정상적으로 작동 가능
우수한 확장성필요에 따라 시스템의 규모를 쉽게 확장 가능
자원 공유네트워크를 통해 자원을 효율적으로 공유 가능
단점
복잡한 설계시스템 설계 및 구현이 복잡함
높은 유지보수 비용시스템 유지보수가 어려움
보안 문제분산 환경에서의 보안 취약점 발생 가능성 증가
응용 분야
클라우드 컴퓨팅클라우드 컴퓨팅 환경에서 대규모 분산 시스템 구축에 활용
빅 데이터 처리빅 데이터 분석 및 처리를 위한 플랫폼으로 활용
분산 데이터베이스대규모 데이터 관리를 위해 사용
블록체인블록체인 기술의 기반 기술로 활용
예시
분산 파일 시스템HDFS
GlusterFS
분산 데이터베이스Cassandra
MongoDB
분산 컴퓨팅 플랫폼Apache Hadoop
Apache Spark

2. 설명

분산 운영 체제는 운영 체제에 필요한 필수 서비스와 기능을 제공하지만, 규모와 가용성 증가와 같은 추가 요구 사항을 지원할 수 있도록 속성 및 특정 구성을 추가한다. 사용자에게 분산 운영 체제는 단일 노드, 모놀리식 운영 체제와 유사한 방식으로 작동한다. 즉, 여러 노드로 구성되어 있지만 사용자와 애플리케이션에게는 단일 노드로 보인다.

최소한의 시스템 수준 기능을 추가 사용자 수준 모듈식 서비스와 분리하면 "메커니즘과 정책의 분리"가 제공된다. 메커니즘과 정책은 각각 "무엇이 수행되는가"와 "어떻게 수행되는가"로 간단하게 해석할 수 있다. 이러한 분리는 유연성과 확장성을 증가시킨다.

모놀리식 커널, 마이크로커널 및 하이브리드 커널 기반 운영 체제의 구조


네트워크로 연결된 여러 컴퓨터나, 여러 프로세서를 탑재한 컴퓨터에서 계산 자원을 분배하고, 계산 부하를 분산시켜 계산 효율을 높이는 기능을 제공하는 것이 분산 운영 체제의 기능이다.

OS 자체의 기능까지 분산하려면 마이크로커널이 더 유리하지만, 분산 OS라고 해서 반드시 마이크로커널일 필요는 없다.

파일 시스템이나 프로세스에 네트워크 투명성이 있는 것이 분산 OS의 전형적인 기능이다. 보안 등의 이유로, 현재 주류는 분산 OS로서 커널이 기능을 갖는 것이 아니라, 일반 OS에서 사용자 프로세스 또는 장치 드라이버RPC나 MPI의 기능을 구현하는 방향으로 나아가고 있다.

3. 커널

각 로케일(일반적으로 노드)에서 커널은 노드의 기본 하드웨어와 리소스를 운영하는 데 필요한 최소한의 노드 수준 유틸리티 집합을 제공한다. 이러한 메커니즘에는 노드의 리소스, 프로세스, 통신 및 입출력 관리 지원 기능의 할당, 관리 및 처리가 포함된다.[5] 커널 내에서 통신 하위 시스템은 분산 OS에서 가장 중요하다.[3]

분산 OS에서 커널은 종종 낮은 수준의 주소 공간 관리, 스레드 관리 및 프로세스 간 통신 (IPC)을 포함한 최소한의 기능 집합을 지원한다. 이러한 설계의 커널을 마이크로커널이라고 한다.[6][7] 모듈식 특성은 분산 OS에 필수적인 기능인 안정성과 보안을 향상시킨다.[8]

3. 1. 시스템 관리

시스템 관리 구성 요소는 노드의 ''정책''을 정의하는 소프트웨어 프로세스다. 이러한 구성 요소는 커널 외부의 운영 체제 부분으로, 상위 수준 통신, 프로세스 및 리소스 관리, 신뢰성, 성능 및 보안을 제공한다. 이는 단일 엔터티 시스템의 기능과 일치하며 분산 환경에 필요한 투명성을 추가한다.[3]

운영 체제의 분산 특성으로 인해 글로벌 시스템에 대한 노드의 책임을 지원하기 위한 추가 서비스가 필요하다. 또한 시스템 관리 구성 요소는 신뢰성, 가용성 및 지속성의 "방어적" 책임을 수용한다. 이러한 책임은 서로 충돌할 수 있으며, 일관된 접근 방식, 균형 잡힌 관점 및 전체 시스템에 대한 깊은 이해는 수확 체감을 식별하는 데 도움이 될 수 있다. 정책과 메커니즘의 분리는 이러한 충돌을 완화한다.[9]

3. 2. 운영 체제로서의 협력

분산 운영 체제의 아키텍처와 설계는 개별 노드와 전역 시스템 목표를 모두 실현해야 한다. 아키텍처와 설계는 정책과 메커니즘을 분리하는 방식과 일관되게 접근해야 한다. 이렇게 함으로써, 분산 운영 체제는 기본 명령 및 제어 노력에 대한 사용자의 인식을 절대적으로 최소화하면서 효율적이고 신뢰할 수 있는 분산 컴퓨팅 프레임워크를 제공하려고 시도한다.[8]

커널과 시스템 관리 구성 요소 간의 다단계 협업, 그리고 분산 운영 체제의 개별 노드 간의 협업은 분산 운영 체제의 기능적 과제이다. 이는 시스템 내에서 목적의 완벽한 조화를 유지하고 동시에 구현과 의도를 완전히 분리해야 하는 지점이다. 이 과제는 분산 운영 체제가 신뢰할 수 있고, 효율적이며, 사용 가능하고, 강력하며, 확장 가능하고, 확장 가능한 시스템의 기초와 프레임워크를 만들 수 있는 기회이다. 그러나 이 기회는 복잡성 측면에서 매우 높은 비용이 든다.

3. 3. 복잡성의 대가

분산 운영 체제에서 내재된 복잡성이 과도하면 시스템 전체가 사용자를 혐오하게 만들 수 있다.[10] 따라서 분산 운영 체제를 실현하는 논리적 대가는 여러 분야와 여러 수준에서 방대한 양의 복잡성을 극복하는 것으로 계산해야 한다. 이 계산에는 가장 작은 구현조차도 달성하는 데 필요한 설계 투자 및 아키텍처 계획의 깊이, 폭 및 범위가 포함된다.[10]

이러한 설계 및 개발 고려 사항은 중요하며 용서가 없다. 예를 들어, 분산 운영 체제의 전체 아키텍처 및 설계 세부 사항에 대한 깊은 이해가 매우 초기에 필요하다.[1] 분산 운영 체제를 개발하는 데는 방대한 설계 고려 사항이 내재되어 있으며, 이러한 각 설계 고려 사항은 잠재적으로 다른 많은 설계 고려 사항에 상당한 영향을 미칠 수 있다.[10] 이로 인해 개별 설계 고려 사항과 많은 순열 측면에서 균형 잡힌 접근 방식에 막대한 노력이 필요하다. 이러한 노력에 도움이 되도록 대부분의 사람들은 분산 컴퓨팅 파워에 대한 문서화된 경험과 연구에 의존한다.

4. 역사

1970년대에 본격적인 분산 컴퓨팅 연구와 실험이 시작되어 1990년대까지 이어졌으며, 1980년대 후반에 관심이 집중되었다. 이 기간 동안 많은 분산 운영 체제가 도입되었지만, 상업적으로 성공한 것은 거의 없었다.[11][12][13]

원시적인 분산 운영 체제 구성 요소 개념의 근본적이고 선구적인 구현은 1950년대 초로 거슬러 올라간다.[14][15][16][17][18][19] 이러한 초기 단계들은 분산 컴퓨팅에 직접 초점을 맞추지 않았을 수도 있지만, 분산 컴퓨팅과 관련된 분야에서 지속적인 연구를 촉진하는 토대를 마련했다.

1970년대 중반, 분산 컴퓨팅 분야에서 중요한 발전이 이루어졌다. 이러한 발전은 1990년대까지 이어진 연구의 견고하고 안정적인 기반을 제공했다.

다중 프로세서 및 멀티코어 프로세서 시스템 연구의 확산은 분산 OS 개념의 부활을 이끌었다.

4. 1. DYSEAC

최초의 시도 중 하나는 범용 동기식 컴퓨터인 DYSEAC였다.[20] 1954년 4월 미국 국립 표준 기술 연구소(NIST)의 연구원은 Association for Computing Machinery의 초기 간행물 중 하나에서 DYSEAC의 자세한 사양을 발표했다. 이 사양에서는 마스터-슬레이브 방식보다는 피어 투 피어 방식을 선호하는 다중 컴퓨터 시스템의 아키텍처를 논의했다.[20]

DYSEAC은 다른 컴퓨터와 상호 협력할 수 있도록 설계되었다. ALAN L. LEINER는 ''DYSEAC 시스템 사양''에서 "외부 장치에는 DYSEAC과 동일한 디지털 언어를 사용하는 다른 본격적인 컴퓨터도 포함될 수 있습니다. 예를 들어, SEAC 또는 이와 유사한 다른 컴퓨터를 DYSEAC에 연결하여 조정된 프로그램을 사용하면 공동 작업에서 상호 협력할 수 있습니다."라고 설명했다. 또한 "공통 작업에 대한 감독 제어는 처음에 시스템 전체에 느슨하게 분산된 다음 일시적으로 한 컴퓨터에 집중되거나 필요에 따라 한 기계에서 다른 기계로 빠르게 전달될 수 있습니다"라고 언급하며, 단순한 마스터-슬레이브 관계가 아닌 컴퓨터와 외부 장치 간의 상호 협력을 강조했다.

DYSEAC은 분산 제어를 갖춘 초기 컴퓨터의 예 중 하나이다. 미국 육군부(Dept. of the Army) 보고서에 따르면 1954년 4월에 신뢰할 수 있다는 인증을 받았으며 모든 수락 테스트를 통과했다.[20] 1954년 5월에 정시에 완성되어 인도되었다.[20] 이것은 2대의 부속 차량과 6톤의 냉장 용량을 갖춘 트랙터 트레일러에 설치된 "이동식 컴퓨터"였다.[20]

4. 2. Lincoln TX-2

링컨 TX-2는 실험적인 입출력 시스템으로 묘사되었으며, 유연하고 동시적으로 작동하는 입출력 장치, 즉 다중 프로그래밍을 강조했다. TX-2의 설계는 모듈식으로, 높은 수준의 수정 및 확장을 지원했다.[12]

이 시스템은 다중 시퀀스 프로그램 기법을 사용했다. 이 기법을 통해 여러 개의 프로그램 카운터가 각각 32개의 가능한 프로그램 코드 시퀀스 중 하나와 연결될 수 있었다. 이러한 명시적으로 우선순위가 지정된 시퀀스는 인터리빙되어 동시에 실행될 수 있었으며, 처리 중인 계산뿐만 아니라 시퀀스의 제어 흐름 및 장치 전환에도 영향을 미쳤다.

DYSEAC과 유사하게 TX-2는 개별적으로 프로그래밍된 장치가 동시에 작동하여 처리량을 증가시킬 수 있었다. 중앙 장치의 모든 성능은 모든 장치에 사용할 수 있었다. TX-2는 분산 제어를 나타내는 또 다른 시스템의 예시였으며, 중앙 장치에는 전용 제어가 없었다.

4. 3. 상호 통신 셀

초창기 메모리 접근 추상화 시도의 일환으로 상호 통신 셀이 있었는데, 여기서 셀은 일련의 메모리 요소로 구성되었다. 메모리 요소는 기본적으로 이진 전자 플립플롭 또는 릴레이였다. 셀 내에는 ''심볼''과 ''셀''의 두 가지 유형의 요소가 있었다. 각 셀 구조는 이름과 일련의 매개변수로 구성된 데이터를 문자열 형태로 저장한다. 정보는 셀 연관을 통해 연결된다.[13]

이 이론은 주소가 낭비적이고 가치 없는 간접 참조 계층이라고 주장했다. 정보는 직접 검색과 교차 검색의 두 가지 방식으로 접근되었다. 직접 검색은 이름을 받아 매개변수 집합을 반환한다. 교차 검색은 매개변수 집합을 통해 투영하고 주어진 매개변수의 부분 집합을 포함하는 이름 집합을 반환한다. 이는 각 키 (이름)에 대해 여러 (매개변수)을 허용하는 수정된 해시 테이블 자료 구조와 유사했다.

셀 방식 메모리는 많은 장점을 가질 수 있는데, 그 내용은 다음과 같다.

  • 시스템의 논리의 주요 부분은 셀에 저장된 정보의 연관 내에 분산되어 있다.
  • 이러한 정보 연관의 흐름은 저장 및 검색 행위에 의해 어느 정도 안내된다.
  • 저장 및 검색에 필요한 시간은 대부분 상수이며 메모리의 크기 및 채우기 요소와 전혀 관련이 없다.
  • 셀은 논리적으로 구별할 수 없어 유연하게 사용하고 크기를 비교적 쉽게 확장할 수 있다.


이러한 구성은 분산 시스템에 이상적이었다. 저장 및 검색을 위해 메모리를 통한 상수 시간 투영은 본질적으로 원자적이며 상호 배타적이었다. 셀 방식 메모리의 내재적인 분산 특성은 매우 유용했을 것이다. 사용자 인터페이스, 컴퓨터 하드웨어/주변 장치, 또는 애플리케이션 프로그래밍 인터페이스에 미치는 영향은 간접적이었다.

정열(C. Y.) 리는 분산 시스템을 고려하여 다음과 같이 말했다.

우리는 여기서 ... 스캔, 검색, 주소 지정 및 계산에서 벗어난, 논리 설계의 거시적인 개념을 가진 분산 논리 시스템의 기본 아이디어를 제시하고자 했다. 우리는 기계의 진화적 규모가 낮은 기계에만 적합한 세부적인 국지적 문제의 부담에서 어떻게든 벗어나야 한다./We have attempted here to present the basic ideas of a distributed logic system with a macroscopic concept of logical design, divorced from the operations of scanning, searching, addressing, and computing. We must somehow get away from the burden of detailed local problems appropriate only for machines of a lower order of magnitude of evolutionary scale.영어

4. 4. 기초 연구

4. 4. 1. 일관된 메모리 추상화

공유 메모리 멀티프로세서에서 확장 가능한 동기화 알고리즘 [21]

4. 4. 2. 파일 시스템 추상화

분산 파일 시스템의 측정[22]

공유 가상 메모리 시스템에서의 메모리 일관성[23]

4. 4. 3. 트랜잭션 추상화

사가 [24]

4. 4. 4. 영속성 추상화

OceanStore: 전 지구적 규모의 영구 저장 아키텍처[29]

4. 4. 5. 코디네이터 추상화

복제된 데이터에 대한 가중 투표 [30]

부분 동기 상태에서의 합의 [31]

4. 4. 6. 신뢰성 추상화

''정상 검사''

비잔틴 장군 문제[32]

고장 정지 프로세서: 내결함성 컴퓨팅 시스템 설계를 위한 접근 방식[33]

''복구 가능성''

''분산'' 스냅샷: 분산 시스템의 전역 상태 결정[34]

분산 시스템에서의 낙관적 복구[35]

5. 분산 컴퓨팅 모델

이 점을 더 잘 설명하기 위해, 세 가지 시스템 소프트웨어 아키텍처인 중앙 집중형, 분산형, 그리고 배포형을 살펴보겠다. 이 검토에서는 조직, 연결, 그리고 제어라는 세 가지 구조적 측면을 고려한다. 조직은 시스템의 물리적 배열 특성을 설명한다. 연결은 노드 간의 통신 경로를 다룬다. 제어는 앞서 언급한 두 가지 사항의 작동을 관리한다.
조직집중 시스템은 모든 구성 요소가 단일 제어 요소에 직접적으로 의존하는 단일 구조 수준을 갖는다. 반면 분산 시스템은 계층적이다. 최하위 수준은 시스템 개체의 하위 집합을 통합하고, 이러한 개체 하위 집합은 더 높은 수준에서 결합되어 중앙 마스터 요소에서 절정에 이르는 방식으로 구성된다. 분산 시스템은 수준의 개념이 없는 자율 요소의 집합이기도 하다.
연결집중형 시스템은 구성 요소를 중심 허브 엔티티에 허브 앤 스포크 방식으로 직접 연결한다. 분산 시스템(일명 네트워크 시스템)은 구성 요소와 중심 엔티티 간의 직접 및 간접 경로를 통합한다. 일반적으로 이는 임의의 두 요소 사이에 단일 최단 경로만 있는 계층 구조로 구성된다. 마지막으로, 분산 운영 체제는 패턴을 요구하지 않으며 임의의 두 요소 간에 직접 및 간접 연결이 가능하다. 1970년대의 "실 꿰기" 현상이나 스피로그래프 그림을 완전 연결 시스템으로, 그리고 거미줄 또는 미국 도시 간의 고속도로 시스템을 ''부분 연결 시스템''의 예로 생각해 볼 수 있다.
제어연결 흐름을 중앙 개체로 지시하는 중앙 집중식 및 분산 시스템과 달리, 분산 시스템은 임의의 경로를 따라 통신한다. 제어는 효율성, 응답성, 복잡성의 균형을 맞추면서 시스템 요소에 작업 및 데이터를 할당하는 것을 포함한다.

중앙 집중식 및 분산 시스템은 더 많은 제어를 제공하여 옵션을 제한함으로써 관리를 용이하게 할 수 있다. 분산 시스템은 명시적으로 제어하기가 더 어렵지만, 수평적으로 더 잘 확장되고 시스템 전체의 고장 지점이 더 적다. 이러한 연관성은 설계에 의해 부과된 요구 사항에 부합하지만, 조직적 혼란에는 부합하지 않는다.

5. 1. 조직

집중 시스템은 모든 구성 요소가 단일 제어 요소에 직접적으로 의존하는 단일 구조 수준을 갖는다. 반면 분산 시스템은 계층적이다. 최하위 수준은 시스템 개체의 하위 집합을 통합하고, 이러한 개체 하위 집합은 더 높은 수준에서 결합되어 중앙 마스터 요소에서 절정에 이르는 방식으로 구성된다. 분산 시스템은 수준의 개념이 없는 자율 요소의 집합이기도 하다.

5. 2. 연결

집중형 시스템은 구성 요소를 중심 허브 엔티티에 허브 앤 스포크 방식으로 직접 연결한다. 분산 시스템(일명 네트워크 시스템)은 구성 요소와 중심 엔티티 간의 직접 및 간접 경로를 통합한다. 일반적으로 이는 임의의 두 요소 사이에 단일 최단 경로만 있는 계층 구조로 구성된다. 마지막으로, 분산 운영 체제는 패턴을 요구하지 않으며 임의의 두 요소 간에 직접 및 간접 연결이 가능하다. 1970년대의 "실 꿰기" 현상이나 스피로그래프 그림을 완전 연결 시스템으로, 그리고 거미줄 또는 미국 도시 간의 고속도로 시스템을 ''부분 연결 시스템''의 예로 생각해 볼 수 있다.

5. 3. 제어

연결 흐름을 중앙 개체로 지시하는 중앙 집중식 및 분산 시스템과 달리, 분산 시스템은 임의의 경로를 따라 통신한다. 제어는 효율성, 응답성, 복잡성의 균형을 맞추면서 시스템 요소에 작업 및 데이터를 할당하는 것을 포함한다.

중앙 집중식 및 분산 시스템은 더 많은 제어를 제공하여 옵션을 제한함으로써 관리를 용이하게 할 수 있다. 분산 시스템은 명시적으로 제어하기가 더 어렵지만, 수평적으로 더 잘 확장되고 시스템 전체의 고장 지점이 더 적다. 이러한 연관성은 설계에 의해 부과된 요구 사항에 부합하지만, 조직적 혼란에는 부합하지 않는다.

6. 설계 고려 사항

6. 1. 투명성

애플리케이션이 분산 여부 및 하드웨어나 기타 구현 세부 사항에 관계없이 작동하는 시스템을 처리할 수 있는 능력을 '''투명성''' 또는 '''단일 시스템 이미지'''라고 한다. 시스템은 특정 애플리케이션 요구 사항을 충족하기 위해 선택적으로 다양한 정도로 투명성을 위반할 수 있다. 예를 들어, 분산 운영 체제는 한 컴퓨터의 하드 드라이브를 "C:"로, 다른 컴퓨터의 드라이브를 "G:"로 표시할 수 있다. 사용자는 장치 드라이버 또는 드라이브의 위치에 대한 지식이 필요하지 않다. 두 장치는 애플리케이션의 관점에서 동일한 방식으로 작동한다. 투명성이 낮은 인터페이스는 애플리케이션이 드라이브를 호스팅하는 컴퓨터를 알아야 할 수 있다.

분산 운영 체제에서 투명성은 다양한 형태로 나타난다.

  • '''접근 투명성''': 사용자는 원격 자원과 로컬 자원을 구별하지 않고 동일한 방식으로 접근할 수 있다.[3]
  • '''위치 투명성''': 사용자는 자원의 물리적 위치를 알 필요 없이 이름이나 식별자를 통해 접근할 수 있다. 명명 투명성과 사용자 이동성의 두 가지 뚜렷한 투명성 측면으로 구성된다. 명명 투명성은 시스템 엔티티에 대한 물리적 또는 논리적 참조가 엔티티의 위치 또는 사용 또는 애플리케이션에 대한 로컬 또는 원격 관계를 표시해서는 안 된다. 사용자 이동성은 참조가 시작된 시스템 위치에 관계없이 시스템 엔티티를 일관되게 참조해야 한다.[8]
  • '''마이그레이션 투명성''': 자원이 시스템 내에서 이동하더라도 사용자는 이를 인식하지 못하고 계속해서 사용할 수 있다.[36]
  • '''복제 투명성''': 데이터나 서비스가 여러 곳에 복제되어 있더라도 사용자는 단일 복사본처럼 사용할 수 있다.[36]
  • '''동시성 투명성''': 여러 사용자가 동시에 자원을 공유하더라도 서로 간섭하거나 충돌하지 않는다.[36]
  • '''오류 투명성''': 시스템의 일부에서 오류가 발생하더라도 사용자는 이를 인식하지 못하거나, 시스템이 자동으로 복구하여 서비스를 계속 제공한다.[9]
  • '''성능 투명성''': 시스템 부하에 따라 성능이 변동되더라도, 사용자는 일관된 성능을 경험한다. 시스템 정책은 다른 사용자/사용자 클래스/작업보다 일부 사용자/사용자 클래스/작업을 선호할 수 있다.[8]
  • '''크기/확장 투명성''': 시스템의 규모가 확장되거나 축소되어도 사용자는 이를 인식하지 못하고, 시스템은 자동으로 자원을 관리한다.[8]
  • '''수정 투명성''': 시스템의 구성 요소가 변경되거나 업그레이드되더라도 사용자는 이를 인식하지 못한다.[9]
  • '''제어 투명성''': 사용자는 시스템의 제어 메커니즘(예: 로드 밸런싱, 오류 복구)을 인식하지 못하고, 시스템이 자동으로 관리한다. 모든 시스템 정보, 상수, 속성, 구성 설정을 모든 사용자와 애플리케이션에 일관된 모양, 의미 및 지시로 제공한다.[3]
  • '''데이터 투명성''': 사용자는 데이터의 저장 방식(예: 분산 파일 시스템, 분산 데이터베이스)을 인식하지 못하고, 시스템이 자동으로 데이터를 관리한다.[3]
  • '''병렬 처리 투명성''': 여러 프로세서에서 작업이 동시에 처리되더라도 사용자는 단일 프로세서에서 처리되는 것처럼 느낀다. 논란의 여지가 있는 투명성의 가장 어려운 측면이며, Tanenbaum에 의해 분산 시스템 설계자를 위한 "성배"로 묘사된다.[37]

6. 1. 1. 투명성 영역

분산 운영 체제에서 투명성은 다양한 형태로 나타난다.

  • 접근 투명성: 사용자는 원격 자원과 로컬 자원을 구별하지 않고 동일한 방식으로 접근할 수 있다.
  • 위치 투명성: 사용자는 자원의 물리적 위치를 알 필요 없이 이름이나 식별자를 통해 접근할 수 있다.
  • 마이그레이션 투명성: 자원이 시스템 내에서 이동하더라도 사용자는 이를 인식하지 못하고 계속해서 사용할 수 있다.
  • 복제 투명성: 데이터나 서비스가 여러 곳에 복제되어 있더라도 사용자는 단일 복사본처럼 사용할 수 있다.
  • 동시성 투명성: 여러 사용자가 동시에 자원을 공유하더라도 서로 간섭하거나 충돌하지 않는다.
  • 오류 투명성: 시스템의 일부에서 오류가 발생하더라도 사용자는 이를 인식하지 못하거나, 시스템이 자동으로 복구하여 서비스를 계속 제공한다.
  • 성능 투명성: 시스템 부하에 따라 성능이 변동되더라도, 사용자는 일관된 성능을 경험한다.
  • 크기/확장 투명성: 시스템의 규모가 확장되거나 축소되어도 사용자는 이를 인식하지 못하고, 시스템은 자동으로 자원을 관리한다.
  • 수정 투명성: 시스템의 구성 요소가 변경되거나 업그레이드되더라도 사용자는 이를 인식하지 못한다.
  • 제어 투명성: 사용자는 시스템의 제어 메커니즘(예: 로드 밸런싱, 오류 복구)을 인식하지 못하고, 시스템이 자동으로 관리한다.
  • 데이터 투명성: 사용자는 데이터의 저장 방식(예: 분산 파일 시스템, 분산 데이터베이스)을 인식하지 못하고, 시스템이 자동으로 데이터를 관리한다.
  • 병렬 처리 투명성: 여러 프로세서에서 작업이 동시에 처리되더라도 사용자는 단일 프로세서에서 처리되는 것처럼 느낀다.

6. 2. 프로세스 간 통신

프로세스 간 통신(IPC)은 분산 운영 체제 내의 노드 내 및 노드 간의 스레드 및/또는 프로세스 간의 일반적인 통신, 프로세스 상호 작용 및 데이터 흐름을 구현하는 것이다. 노드 내 통신 및 노드 간 통신 요구 사항은 투명성을 지원하는 통신 기능을 구현하는 일반적인 접근 방식인 하위 수준 IPC 설계를 유도한다. 이러한 의미에서 프로세스 간 통신은 분산 운영 체제의 하위 수준 설계 고려 사항에서 가장 중요한 기본 개념이다.

6. 3. 프로세스 관리

프로세스 관리는 분산 프로세스 간의 효과적이고 효율적인 자원 공유를 위한 정책과 메커니즘을 제공한다. 이러한 정책과 메커니즘은 프로세스 및 포트를 프로세서에 할당하고 해제하는 작업과 프로세스 실행을 실행, 일시 중지, 마이그레이션, 중단 또는 재개하는 메커니즘을 지원한다. 이러한 자원과 작업은 서로 관련하여 로컬 또는 원격일 수 있지만, 분산 OS는 시스템의 모든 프로세스에 대한 상태와 동기화를 유지한다.

예를 들어, 부하 분산은 일반적인 프로세스 관리 기능이다. 부하 분산은 노드 성능을 모니터링하고 시스템의 균형이 맞지 않을 때 노드 간의 활동을 이동시키는 역할을 한다. 부하 분산 기능 중 하나는 이동할 프로세스를 선택하는 것이며, 커널은 우선 순위 기반 선택을 포함한 여러 선택 메커니즘을 사용할 수 있다. 이 메커니즘은 '최신 요청'과 같은 정책을 기반으로 프로세스를 선택한다.

네트워크로 연결된 여러 컴퓨터나, 여러 프로세서를 탑재한 컴퓨터에서 계산 자원을 분배하고, 계산 부하를 분산시켜 계산 효율을 높이는 기능을 제공하는 것이 분산 운영 체제의 기능이다. OS 자체의 기능까지 분산하려면 마이크로커널이 더 유리하지만, 분산 OS라고 해서 반드시 마이크로커널일 필요는 없다.

파일 시스템이나 프로세스에 네트워크 투명성이 있는 것이 분산 OS의 전형적인 기능이다. 보안 등의 이유로, 현재 주류는 분산 OS로서 커널이 기능을 갖는 것이 아니라, 일반 OS에서 사용자 프로세스 또는 장치 드라이버RPC나 MPI의 기능을 구현하는 방향으로 나아가고 있다.

6. 4. 자원 관리

시스템 자원은 메모리, 파일, 장치 등 시스템 전체에 분산되어 있으며, 주어진 시점에서 이러한 노드 중 어느 곳이든 가벼운 부하에서 유휴 상태에 있을 수 있다. ''부하 공유'' 및 부하 분산은 유휴 CPU를 찾는 것, 언제 이동할 것인지, 무엇을 이동할 것인지 등 많은 정책 지향적 결정을 필요로 한다. 이러한 결정을 돕기 위해 많은 알고리즘이 존재하지만, 이는 시나리오에 가장 적합한 알고리즘과 시나리오를 둘러싼 조건을 선택하는 데 있어 두 번째 수준의 의사 결정 정책을 요구한다.

네트워크로 연결된 여러 컴퓨터나, 여러 프로세서를 탑재한 컴퓨터에서 계산 자원을 분배하고, 계산 부하를 분산시켜 계산 효율을 높이는 기능을 제공하는 것이 분산 운영 체제의 기능이다.

파일 시스템이나 프로세스에 네트워크 투명성이 있는 것이 분산 OS의 전형적인 기능이다. 보안 등의 이유로, 현재 주류는 분산 OS로서 커널이 기능을 갖는 것이 아니라, 일반 OS에서 사용자 프로세스 또는 장치 드라이버RPC나 MPI의 기능을 구현하는 방향으로 나아가고 있다.

6. 5. 신뢰성

분산 운영 체제는 높은 수준의 신뢰성, 즉 오류를 방지 및/또는 복구하는 능력을 달성하는 데 필요한 리소스와 서비스를 제공할 수 있다. 고장은 시스템에서 오류를 일으킬 수 있는 물리적 또는 논리적 결함이다. 시스템이 신뢰성을 가지려면 고장의 부정적인 영향을 어떻게든 극복해야 한다.

고장을 처리하는 주요 방법에는 고장 회피, 고장 감내 및 고장 감지 및 복구가 있다. 고장 회피는 고장 발생을 최소화하기 위해 취하는 사전 예방 조치를 포괄한다. 이러한 사전 예방 조치는 트랜잭션, 복제 및 백업의 형태로 이루어질 수 있다. 고장 감내는 고장이 발생한 경우에도 시스템이 계속 작동할 수 있는 능력이다. 이러한 경우, 시스템은 완전한 기능을 감지하고 복구해야 한다. 어떤 경우든, 수행되는 모든 조치는 단일 시스템 이미지를 유지하기 위해 모든 노력을 기울여야 한다.

6. 6. 가용성

가용성은 시스템이 요청에 응답할 수 있는 시간의 비율이다.

6. 7. 성능

다수의 벤치마크 지표는 처리량, 응답 시간, 단위 시간당 작업 완료, 시스템 활용률 등과 같은 성능을 정량화한다. 분산 운영 체제와 관련하여 성능은 대부분 프로세스 병렬성과 IPC 간의 균형으로 귀결된다. 지원에 필요한 메시지와 관련하여 병렬성의 작업 세분성을 적절하게 관리하는 것은 매우 효과적이다. 또한 데이터를 복사하는 대신 프로세스를 마이그레이션하는 것이 언제 더 유익한지 식별하는 것도 효과적이다.

6. 8. 동기화

협력하는 동시 프로세스는 변경 사항이 정확하고 예측 가능한 방식으로 발생하도록 보장하는 동기화의 필요성을 내재하고 있다. 이러한 필요성의 범위를 정의하는 세 가지 기본 상황은 다음과 같다.

:* 하나 이상의 프로세스가 다른 하나 이상의 프로세스가 계속 진행하기 위해 특정 시점에서 동기화해야 한다.

:* 하나 이상의 프로세스가 계속 진행하기 위해 비동기 조건를 기다려야 한다.

:* 또는 프로세스가 공유 리소스에 대한 독점적인 접근 권한을 설정해야 한다.

부적절한 동기화는 원자성, 일관성, 격리성 및 지속성의 손실, 교착 상태, 라이브락 및 직렬화 가능성의 손실을 포함한 여러 실패 모드로 이어질 수 있다.

6. 9. 유연성

분산 운영 체제의 유연성은 모듈형 특성과 풍부한 상위 수준의 서비스 제공을 통해 향상된다. 커널/마이크로커널의 완전성과 품질은 이러한 서비스 구현을 단순화하고, 서비스 제공자가 더 많은 공급자를 선택할 수 있도록 돕는다.

7. 연구

7. 1. 복제 모델을 구성 요소 객체 모델로 확장

E1 분산 운영 체제의 아키텍처 설계가 이루어졌다.[38] 크로노스(Cronus) 분산 운영 체제가 개발되었다.[39] MINIX 분산 운영 체제의 설계 및 개발이 이루어졌다.[40]

7. 2. 수용된 책임을 통한 복잡성/신뢰 노출

데날리(Denali) 격리 커널의 확장성과 성능.[41]

7. 3. 다중/다중 코어 중심 시스템

멀티커널은 확장 가능한 멀티코어 시스템을 위한 새로운 운영체제 아키텍처이다.[42] 코리는 많은 코어를 위한 운영체제이다.[43] 알모스는 cc-NUMA [많은 코어]/[멀티코어]를 위한 고급 지역성 관리 운영체제이다.[44]

7. 4. 극단적인 이기종 환경에서의 분산 처리

헬리오스는 위성 커널을 이용한 이기종 멀티프로세싱을 지원한다.[45]

7. 5. 다중 수준의 복잡성에서 효과적이고 안정적

테셀레이션은 다중 코어 클라이언트 운영 체제에서 시공간 분할을 하는 방식이다.[46]

8. 분산 운영 체제의 예

Amoeba, L4 마이크로커널 패밀리, Mach, QNX 등은 분산 운영 체제의 예이다. 이들은 마이크로커널을 기반으로 하는 경우가 많으며, 네트워크 투명성을 제공하여 여러 컴퓨터에 분산된 프로세스들이 마치 하나의 시스템처럼 동작하도록 한다.

참조

[1] 논문 Distributed operating systems anno 1992. What have we learned so far? 1993-09
[2] 서적 Centralized and Distributed Operating Systems https://archive.org/[...] Prentice Hall
[3] 서적 Distributed Operating Systems: The Logical Design https://books.google[...] Addison-Wesley Pub. Co.
[4] 서적 Design of Distributed Operating Systems: Concepts and Technology https://books.google[...] Intertext Publications
[5] 서적 Classic Operating Systems: From Batch Processing to Distributed Systems https://books.google[...] Springer
[6] 문서 Using LOTOS for specifying the CHORUS distributed operating system kernel 1992
[7] 문서 COOL: kernel support for object-oriented environments ACM, New York, NY 1990
[8] 서적 Distributed Operating Systems: Concepts and Design https://archive.org/[...] IEEE Press
[9] 서적 Distributed Operating Systems and Algorithms https://books.google[...] Addison Wesley
[10] 문서 Augmenting reflective middleware with an aspect orientation support layer ACM, New York, NY 2007
[11] 논문 System Specifications for the DYSEAC 1954-04
[12] 간행물 The Lincoln TX-2 Input-Output System Association for Computing Machinery 1957-02-26
[13] 간행물 Intercommunicating cells, basis for a distributed logic computer Association for Computing Machinery 1962-12-04
[14] 간행물 System design of the Gamma 60 https://www.computer[...] 1958-05-08
[15] 문서 Organizing a network of computers to meet deadlines 1957-12-09
[16] 문서 PILOT, the NBS multicomputer system ACM, New York, NY 1958-12-03
[17] 문서 Computer design from the programmer's viewpoint ACM, New York, NY 1958-12-03
[18] 논문 PILOT—A New Multiple Computer System 1959-07
[19] 간행물 Organization of computer systems: the fixed plus variable structure computer https://dl.acm.org/d[...] ACM, New York, NY 1960-05-03
[20] 문서 A Third Survey of Domestic Electronic Digital Computing Systems Ballistic Research Laboratories Report No. 1115 1961-03
[21] 간행물 Algorithms for scalable synchronization on shared-memory multiprocessors https://dl.acm.org/d[...] 1991-02
[22] 간행물 Measurements of a distributed file system http://people.csail.[...] ACM, New York, NY 1991-10-13
[23] 논문 Memory coherence in shared virtual memory systems 1989-11
[24] 간행물 Sagas ACM, New York, NY 1987-05-27
[25] 간행물 Composable memory transactions http://citeseerx.ist[...] ACM, New York, NY 2005-06-15
[26] 간행물 Transactional memory: architectural support for lock-free data structures http://hpl.americas.[...] ACM, New York, NY 1993-05-16
[27] 간행물 Software transactional memory for dynamic-sized data structures http://citeseerx.ist[...] ACM, New York, NY 2003-07-13
[28] 간행물 Software transactional memory http://citeseerx.ist[...] ACM, New York, NY 1995-08-20
[29] 간행물 OceanStore: an architecture for global-scale persistent storage http://citeseerx.ist[...] ACM, New York, NY 2000
[30] 간행물 Weighted voting for replicated data http://pages.cs.wisc[...] ACM, New York, NY 1979-12-10
[31] 논문 Consensus in the presence of partial synchrony https://groups.csail[...] 1988-04
[32] 논문 The Byzantine Generals Problem http://people.cs.uch[...] 1982-07
[33] 논문 Fail-stop processors: an approach to designing fault-tolerant computing systems 1983-08
[34] 논문 Distributed snapshots: determining global states of distributed systems 1985-02
[35] 논문 Optimistic recovery in distributed systems
[36] 서적 Distributed Operating Systems: Concepts and Practice https://archive.org/[...] Prentice Hall
[37] 서적 Distributed Operating Systems https://archive.org/[...] Prentice Hall
[38] 논문 Architectural design of dE1 distributed operating system 2004-10
[39] 간행물 The Cronus distributed operating system ACM, New York, NY 1986-09-08
[40] 간행물 Design and development of MINIX distributed operating system ACM, New York, NY 1988
[41] 간행물 In Proceedings of the 5th Symposium on Operating Systems Design and Implementation
[42] 간행물 In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles 2009-10-11
[43] 간행물 Proceedings of the 2008 Symposium on Operating Systems Design and Implementation (OSDI) 2008-12
[44] 간행물 In Proceedings of the 5th national seminar of GDR SoC-SIP 2011
[45] 간행물 In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles 2009-10-11
[46] 간행물 HotPar09
[47] 저널 Distributed operating systems anno 1992. What have we learned so far? 1993-09
[48] 서적 Centralized and Distributed Operating Systems https://archive.org/[...] Prentice Hall
[49] 서적 Distributed Operating Systems: The Logical Design https://books.google[...] Addison-Wesley Pub. Co.
[50] 서적 Design of Distributed Operating Systems: Concepts and Technology https://books.google[...] Intertext Publications



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com