맨위로가기

아메바 (운영 체제)

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

1. 개요

아메바는 1983년에 개발된 분산 운영 체제이다. C 언어로 개발되었으며, SPARC, Intel, MC68030, Sun-3, VAX 등 다양한 플랫폼에서 작동하며, 하드 디스크가 없는 컴퓨터에서도 사용 가능하다. 마이크로커널 기반으로 설계되어 안정성과 확장성을 높였으며, 객체 기반 구조와 Capability-based security를 통해 보안을 강화했다. 원격 프로시저 호출(RPC)과 자체 개발한 FLIP 프로토콜을 사용하여 분산 프로세스 간 통신을 지원하며, 유닉스 API를 부분적으로 지원한다. 2001년 이후 개발이 중단되었으며, 파이썬 프로그래밍 언어 개발에 영향을 미쳤고, 분산 시스템 연구 및 교육에 활용되었다.

더 읽어볼만한 페이지

  • 분산 컴퓨팅 구조 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 분산 컴퓨팅 구조 - 맵리듀스
    맵리듀스는 대용량 데이터 처리를 위해 구글에서 개발한 프로그래밍 모델이자 프레임워크로, Map과 Reduce 함수를 사용하여 데이터를 병렬 처리하며 하둡 등의 오픈 소스 구현을 통해 널리 쓰인다.
  • 네덜란드의 발명품 - 배당
    배당은 기업이 이익을 주주에게 분배하는 것으로, 네덜란드 동인도회사가 최초로 정기적인 배당을 지급한 사례로 알려져 있으며, 신뢰도 향상 및 자본 조달에 기여하고, 현금, 주식, 현물 등 다양한 형태로 지급되며, 배당 수익률, 배당 성향 등으로 평가된다.
  • 네덜란드의 발명품 - 수은 온도계
    수은 온도계는 수은의 열팽창을 이용하여 넓은 온도 범위를 측정하는 장치로, 과거에는 널리 사용되었으나 수은의 독성 때문에 현재는 사용이 줄어들고 안전한 대체재로 대체되는 추세이다.
아메바 (운영 체제) - [IT 관련 정보]에 관한 문서
기본 정보
아메바 로고
개발자앤드루 타넨바움, 프란스 카슈크
커널 종류마이크로커널
지원 플랫폼i386/i486
MIPS
모토로라 68030
NS 32016
썬 3/50 및 3/60
SPARC
VAX
계열유닉스 계열
최신 버전5.3
사용 언어C
모듈라 2
Orca
파스칼
언어영어
라이선스MIT 라이선스
웹사이트아메바 웹사이트

2. 역사

1983년, 아메바 1.0의 최초 프로토타입이 개발되었다.[6] 수년 후, 유럽 공동체 (EC)의 후원을 받아 광역 분산 시스템 프로젝트로 유럽 각국에서 사용되었다.[6] 이 때의 버전은 Amoeba 3.0이었다. 아메바는 C 언어를 사용하여 개발되었다.[7] 아메바는 약 5년 동안 학술 조직, 기업, 각국 정부 조직 등에서 사용되었다.

아메바는 SPARC, Intel 80386, Intel 486, MC68030, Sun-3/50, Sun-3/60, VAX 등 여러 플랫폼에서 작동한다. 사용자는 하드 디스크가 없는 컴퓨터를 통해서도 아메바를 사용할 수 있으며, 필요에 따라 여러 프로세서를 제공받는다. 프로세서는 프로세서 풀에 배치되어 필요에 따라 제공 및 해제되며, 지리적으로 분산될 수 있다. 파일 서버, 디렉터리 서비스, 데이터베이스와 같은 전용 서비스는 전용 컴퓨터가 제공하는 경우가 많다. 아메바를 사용하기 위한 터미널은 일반적으로 큰 비트맵 디스플레이와 마우스를 갖춘 X 터미널이다. 암스테르담 자유 대학교에서는 약 80대의 SPARC 컴퓨터로 아메바를 구성하고, 이더넷으로 네트워크를 구성하기도 했다.

아메바는 객체 기반으로 설계되었으며, 각 객체는 추상 데이터형으로 특정 기능을 제공한다. 이러한 객체는 응용 소프트웨어에서 원격 프로시저 호출(RPC)을 통해 사용된다. 보안은 Capability-based security 개념에 기반하며, 객체는 케이퍼빌리티라는 특별한 티켓을 사용하여 보호된다.[8]

아메바의 개발은 현재 중단된 것으로 보이며, 최신 버전(5.3)을 구성하는 파일의 최종 업데이트 날짜는 2001년 2월 12일이다.

3. 주요 특징

아메바는 여러 대의 컴퓨터를 네트워크로 연결하여 사용자에게 단일 시스템처럼 보이도록 하는 분산 운영 체제이다.[5] 네트워크로 연결된 여러 워크스테이션은 프로세서 "풀"에 연결되어, 터미널에서 프로그램을 실행하면 사용 가능한 모든 프로세서에서 실행되고 운영 체제가 부하 분산을 제공한다.[5]

아메바는 마이크로커널 기반 구조를 채택하여 운영 체제의 핵심 기능을 최소화하고, 대부분의 기능을 서버 프로세스로 분리하여 안정성과 확장성을 높였다. 시스템의 모든 자원은 객체로 관리되며, 케이퍼빌리티 기반 보안을 통해 객체에 대한 접근을 제어한다.[8]

원격 프로시저 호출(RPC) 메커니즘을 제공하여, 네트워크를 통해 분산된 프로세스 간의 통신을 지원하며, 클라이언트-서버 모델을 기반으로 한다.[5] 각 스레드는 통신을 위한 고유한 네트워크 전체 "주소" 역할을 하는 48비트 "포트"를 할당받는다.[5] 또한, 자체 개발한 네트워크 프로토콜인 FLIP을 사용하여 투명성, RPC 지원, 그룹 통신, 프로세스 마이그레이션, 보안 등의 기능을 제공한다.

유닉스와의 호환성을 위해 POSIX 표준을 부분적으로 구현했으며, 사용자 인터페이스와 API는 유닉스를 모델로 했다.[5] 초기에는 자체 윈도우 시스템을 사용했지만, 버전 4.0부터 X 윈도우 시스템을 사용한다.[5]

아메바는 SPARC, 인텔 80386, 인텔 486, MC68030, Sun-3, VAX 등 다양한 플랫폼에서 작동하며, 서로 다른 아키텍처를 가진 컴퓨터들을 하나의 시스템처럼 구성할 수 있다. 사용자는 하드 디스크가 없는 컴퓨터를 통해서도 아메바를 사용할 수 있으며, 필요에 따라 프로세서 풀에서 프로세서를 제공받거나 반환할 수 있다. 파일 서버, 디렉터리 서비스, 데이터베이스와 같은 전용 서비스는 전용 컴퓨터가 제공하는 경우가 많다. 암스테르담 자유 대학교에서는 약 80대의 SPARC 컴퓨터로 아메바를 구성하고, 이더넷으로 네트워크를 구성하기도 했다.

4. 구성 요소

4. 1. 프로세스 관리

아메바(Amoeba)의 프로세스는 기본적으로 주소 공간과 그곳에서 실행되는 스레드의 집합이다.[9]

프로세스는 아메바에서 객체 중 하나로 인식된다. 여러 개의 자식 프로세스를 생성할 수 있으며, 생성된 자식 프로세스는 다시 여러 개의 손자 프로세스를 생성할 수 있다. 즉, 아메바에서 프로세스는 UNIX나 MS-DOS와 마찬가지로 트리 구조를 구성한다. 부모 프로세스는 생성한 자식 프로세스를 일시 중지, 재개, 소멸시킬 수 있다.[10]

아메바의 프로세스 생성은 UNIX와는 다르다. UNIX에서는 `fork`를 통해 부모 프로세스 메모리 이미지 복사본을 만들고, `exec`로 복사본을 지정된 프로그램으로 교체하는 방식은 큰 오버헤드를 발생시킨다. 아메바에서는 의도한 메모리 이미지를 사용하여 특정 프로세서에서 처음부터 올바르게 시작하는 새로운 프로세스를 생성하는 것이 가능하다.[10] 부모 프로세스와 자식 프로세스는 모두 병렬로 실행될 수 있다.

아메바에서 프로세스는 최소한 하나 이상의 스레드를 가지며, 멀티스레딩을 이용한 프로그래밍이 가능하다. 프로세스는 실행 중에 자신의 스레드를 생성하거나 종료할 수 있으며, 스레드는 각각 고유의 스택을 갖는다. 스레드를 동기화하는 방법으로는 시그널과 뮤텍스 그리고 세마포어의 세 가지 방법을 제공한다. 스레드는 모두 커널이 관리하며,[11] 커널에 의한 스레드 스케줄링은 우선순위에 기반한다.

4. 2. 메모리 관리

Amoeba의 메모리 관리는 매우 단순하다.[12]

프로세스는 여러 개의 세그먼트를 가질 수 있으며, 프로세스의 가상 주소 공간의 원하는 위치에 배치할 수 있다.[12] 세그먼트는 페이징되지 않고 완전히 주 기억 장치 (메인 메모리)에 상주한다.[11] 메모리 관리 유닛 (MMU)이라는 하드웨어를 사용하여 각 세그먼트를 주 기억 장치에 인접하게 배치한다.[11]

이러한 설계 덕분에 Amoeba에서 프로세스 실행은 원격 프로시저 호출 (RPC)을 수반하는 경우를 포함하여 빠르다. 또한, 페이징구현할 필요가 없어 Amoeba의 설계가 간단해지고 커널도 작아져 관리가 용이하다.

4. 3. 마이크로커널

아메바는 마이크로커널의 사상에 기초하여 설계되었다.[13] 아메바의 마이크로커널 아키텍처는 클라이언트-서버 모델이다.[13] 아메바는 프로세서마다 실행되는 마이크로커널과 서버군으로 구성된다.[13] 서버군은 마이크로커널과는 별개의 시스템 소프트웨어군이며, 기존의 운영 체제(OS)가 제공하는 기능의 대부분을 제공한다.[13]

아메바의 마이크로커널에는 다음과 같은 4가지 중요한 기능이 있다.[13]

4. 4. 서버

아메바(Amoeba) 운영 체제의 기능 대부분은 마이크로커널 외부에서 프로세스로 동작하는 서버군에 의해 구현되었다.[14] 모든 서버는 일련의 스텁 절차로 정의되어 있으며, 초기에는 C 언어로, 나중에는 Amoeba 인터페이스 언어(AIL)로 정의되었다.[14] AIL로 정의된 스텁은 AIL 컴파일러에 의해 변환되어 라이브러리에 묶여 클라이언트에서 사용할 수 있다.[14]

주요 서버는 다음과 같다:[15]

  • 블렛 서버(bullet server): 파일 서버 역할을 하며, 파일 관리, 생성, 읽기, 삭제 등의 기본 명령을 제공한다.
  • 디렉토리 서버(directory server) (솝 서버(soap server)): 디렉토리와 경로명을 관리한다.
  • 복제 서버(replication server): 디렉토리 서버가 관리하는 객체군의 복제를 백그라운드에서 자동으로 수행한다. 세대 기구와 가비지 컬렉션 기구를 갖추고 있으며, 사용되지 않는 객체는 가비지 컬렉터가 처리한다.
  • 실행 서버(run server): 프로세스를 실행할 최적의 컴퓨터를 선택한다. 프로세서 아키텍처, 부하 상황, 주기억 장치 용량 등을 고려한다.
  • 부트 서버(boot server): 서버의 동작 상태를 감시하고, 필요한 경우 조치를 취한다. 부트 서버 자체의 복제도 가능하다.
  • TCP/IP 서버(TCP/IP server): TCP/IP 프로토콜을 사용하여 다른 컴퓨터와 통신하는 기능을 제공한다. X 터미널 연결, 다른 시스템과의 통신, 인터넷 접속 등에 사용된다. FLIP을 사용할 수 없는 경우에 사용된다.
  • 기타 서버: 디스크 입출력, 장치 입출력, 난수 생성, 전자 메일 송수신 등을 수행한다.

4. 5. 통신

Amoeba는 2지점 간 메시지 통신을 사용한 원격 프로시저 호출 (RPC)과 그룹 통신의 두 가지 통신 형태를 지원한다[16]. 이 두 가지 통신 형태는 통신 프로토콜로서 Fast Local Internet Protocol (FLIP)을 사용한다.

Amoeba는 세계적인 인터넷에 참여할 수 있다. 또한, Amoeba를 구성하는 여러 컴퓨터는 몇몇 도메인으로 분할된다. 1개의 도메인 내(일반적으로 1개의 LAN)에서 서비스를 제공하는 컴퓨터는 브로드캐스트를 사용하여 서비스를 제공한다. 네트워크 브로드캐스트를 통해 서비스를 제공하는 서버 컴퓨터의 주소가 특정된다. 도메인 간 통신에 관해서는, 미리 등록 서비스에 명시적으로 등록해 둘 필요가 있다.

도메인 내 통신은 프록시 서버를 통해 송수신된다. 이러한 방식에는 다음과 같은 이점이 있다.

  • 도메인 내 통신은 최대한의 속도로 프로세스 전환 없이 이루어진다.
  • 원격 컴퓨터와의 통신은 도메인 내 클라이언트 (컴퓨터)와 서버 간의 통신과 아무런 차이가 없다. 둘 다 같은 원격 프로시저 호출 (RPC) 프로토콜로 통신이 이루어진다.

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

원격 프로시저 호출 (RPC, 리모트 프로시저 콜)은 두 지점 간의 통신으로, 클라이언트가 서버에 요청 메시지를 전송하고 서버가 클라이언트에 응답 메시지를 반환하는 방식으로 구성된다.

클라이언트 측은 요청 메시지를 서버에 전송하면 서버로부터 응답 메시지를 수신할 때까지 블록된다.

표준적인 서버마다 클라이언트가 호출하기 위한 인터페이스가 정의되어 있다.

클라이언트는 이 인터페이스에 따라 스텁을 통해 서버와 통신한다.

클라이언트는 스텁의 인터페이스에 정의된 대로 서버에 인수를 포함한 요청 메시지를 전송하고, 스텁의 인터페이스에 정의된 형식으로 서버로부터 응답 메시지를 수신한다.

4. 5. 2. 그룹 통신

Amoeba의 그룹은 어떤 작업을 수행하거나 서비스를 제공하기 위해 협력하는 1개 이상의 프로세스로 구성된다.

그룹 통신은 그룹이 신뢰성 있는 방식으로 그룹으로서의 처리를 실행하기 위한 통신 형태이다.

그룹 통신의 기본적인 기능으로는 다음과 같은 것들이 있다.[17]

  • 새로운 그룹을 생성하고 인수를 설정한다.
  • 프로세스가 기존 그룹에 참가한다.
  • 프로세스가 기존 그룹에서 탈퇴한다.
  • 그룹의 전체 멤버를 대상으로 신뢰성 있는 방식으로 메시지를 전송한다.


그룹 통신의 구현의 기본을 이루는 중요한 생각은 "신뢰성 있는 동보 통신 (reliable broadcasting)"이다.[18]

그룹 통신의 프로토콜은 ''k'' 개의 프로세서 집단의 손실(크래시)에 견딜 수 있도록 설계되었다.[19]

그룹 생성 시, 이 ''k''라는 탄성 계수를 지정한다.

''k''의 크기에 따라 Amoeba는 프로세서의 중복도를 증감시킨다.

중복도가 증가하면, 내고장성은 높아지지만, 실행은 늦어진다.

4. 5. 3. Fast Local Internet Protocol (FLIP)

'''Fast Local Internet Protocol''' ('''FLIP''')은 네트워크 계층통신 프로토콜로, 아메바에서 사용된다.

FLIP는 아메바 개발 중에 병행하여 개발되었다.

아메바를 구성하는 컴퓨터군은 모두 FLIP를 사용하여 서로 통신을 주고받는다.

개념적으로는, 아메바에서의 네트워크 계층 프로토콜을 FLIP 외의 IP 등 다른 네트워크 계층 프로토콜로 대체하는 것이 가능하다.

FLIP는 아메바 외의 시스템에서도 구현이 가능하다.

실제로 UNIX에서 동작하는 FLIP가 구현되어 있다.

즉, 아메바와 UNIX 컴퓨터 간에 FLIP를 사용하여 통신할 수 있으며, 더 나아가 아메바에 의존하지 않고 UNIX 컴퓨터끼리 FLIP를 사용하여 통신하는 것도 가능하다.

또한 앤드루 타넨바움은 FLIP의 "MS-DOS용 버전을 만들 수 없는 이유는 없다."라고 언급했다.[20]

FLIP는 통신 프로토콜의 집합으로, 다음에 나타내는 요건을 충족하도록 설계되었다.[21]

  • 투명성
  • 원격 프로시저 호출 (RPC, 리모트 프로시저 콜) 지원
  • 그룹 통신 (여러 프로세스로 구성된 "그룹"에서 사용되는 통신) 지원
  • 프로세스 마이그레이션 - 프로세스를 어떤 컴퓨터에서 다른 컴퓨터로, 네트워크가 달라도 아무도 눈치채지 못하게 이동하는 것을 가능하게 함
  • 보안 - 암호화 기술을 통해 프로세스가 다른 프로세스를 흉내 내는 것을 불가능하게 함
  • 네트워크 관리 - 자동 재구성을 위한 지원
  • 광역 네트워크 지원

FLIP에서는 1GB까지의 크기의 데이터그램을 다룰 수 있다.

FLIP의 상위 계층에서 TCP/IP나 TCP/IP를 기반으로 하는 프로토콜을 동작시킬 수 있다.

이처럼 아메바는 TCP/IP 네트워크에 참여할 수 있다.

5. 응용

파이썬 프로그래밍 언어는 원래 아메바 플랫폼을 위해 개발되었다.[22] 분산 시스템, 병렬 처리, 컴퓨터 네트워크 연구 및 교육에 활용되었다.

6. 한계

참조

[1] 웹사이트 Amoeba FTP ftp://ftp.cs.vu.nl/p[...]
[2] 웹사이트 Licence https://www.cs.vu.nl[...] 2023-07-19
[3] 웹사이트 Why was Python created in the first place? https://www.python.o[...] Python FAQ 2008-02-11
[4] 논문 A comparison of two distributed systems: Amoeba and Sprite http://pdos.csail.mi[...] 1991
[5] 간행물 The Amoeba distributed operating system — a status report http://citeseerx.ist[...] 1991
[6] 서적 1995
[7] 서적 1995
[8] 서적 1995
[9] 서적 1995
[10] 서적 1995
[11] 서적 1995
[12] 서적 1995
[13] 서적 1995
[14] 서적 1995
[15] 서적 1995
[16] 서적 1995
[17] 서적 1995
[18] 서적 1995
[19] 서적 1995
[20] 서적 1995
[21] 서적 1995
[22] 웹사이트 Why was Python created in the first place? http://www.python.or[...] Python FAQ 2008-02-11
[23] 웹인용 Amoeba FTP ftp://ftp.cs.vu.nl/p[...] 2017-02-12
[24] URL http://www.cs.vu.nl/[...]
[25] 웹인용 Why was Python created in the first place? https://www.python.o[...] Python FAQ 2008-02-11



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

문의하기 : help@durumis.com