뱅가드(마이크로커널)

Vanguard (microkernel)
뱅가드
개발자로스 핀레이슨, 애플 컴퓨터
OS 제품군V-시스템
작업 상태중단됨
소스 모델폐쇄 소스
초기 릴리즈1993; 29년 전 (1998년)
마케팅 대상데스크톱 시스템
다음에서 사용 가능영어
플랫폼모토로라 68000 시리즈
커널형마이크로커널
선행자V-시스템

뱅가드는 1990년대 초 연구 지향적인 애플 어드밴스트 테크놀로지 그룹([1]ATG)의 애플 컴퓨터에서 개발된 단종된 실험용 마이크로커널이다.뱅가드는 V-System을 기반으로 표준화된 객체 식별자와 성능 향상을 위한 고유한 메시지 체인 시스템을 도입했다.뱅가드는 애플의 어떤 상용 제품에도 사용되지 않았다.개발은 1993년 이 프로젝트의 주 연구원인 로스 핀레이슨이 애플을 떠나면서 끝이 났다.

기본개념

뱅가드는 일반적으로 V-시스템과 매우 유사했지만, 운영체제의 진정한 객체 지향 프로그래밍에 대한 지원을 추가했다.이는 커널서버 인터페이스를 개체로 내보냈다는 것을 의미하며, 이는 새로운 코드로 계승되고 확장될 수 있다.이 변경은 시스템에 가시적인 영향을 미치지 않으며, 주로 프로그래밍을 쉽게 하는 소스 코드의 변경이다.

예를 들어 뱅가드는 네트워킹 및 파일 서버 등 여러 다른 서버에서 지원하는 입출력(I/O) 클래스를 가지고 있었는데, 이 클래스는 새로운 애플리케이션이 I/O 인터페이스와 호출 방법을 가져와 상호 작용할 수 있다.이것은 또한 새로운 서버들을 프로그래밍할 표준이 있었고 코드를 더 쉽게 공유할 수 있었기 때문에 훨씬 더 쉽게 작성하게 했다.

V 메시징 의미론

거의 모든 마이크로커널의 핵심 개념은 하나의 큰 커널을 통신 서버 세트로 분해하는 것이다.컴퓨터 시스템의 모든 하드웨어를 제어하는 하나의 더 큰 프로그램을 갖는 대신에, 다양한 의무는 기계의 다른 부분을 통제할 수 있는 권한이 주어지는 더 작은 프로그램들에 배분된다.예를 들어, 한 서버에는 네트워킹 하드웨어를 제어할 수 있는 권한이 부여되는 반면 다른 서버에는 하드 디스크 드라이브를 관리하는 작업이 있다.다른 서버가 파일 시스템을 처리하여 이 두 하위 수준 서버를 모두 호출할 것이다.사용자 애플리케이션은 커널이 시스템 호출(syscall)이나 트랩을 통해 이 작업을 수행하도록 요구하는 것과 대조적으로, 어떤 형태의 IPC(프로세스통신)를 사용하여 이러한 서버에 메시지를 보내 서비스를 요청한다.

V 아래에서 IPC 시스템은 클라이언트 애플리케이션의 관점에서 원격 프로시저 호출(RPC)을 기반으로 개념적으로 모델링된 것으로 보인다.클라이언트는 커널 또는 다른 응용프로그램에서 지원되는 호출에 대한 정보가 들어 있는 인터페이스 정의 파일을 가져온 다음 이 정의를 사용하여 요청을 패키지화했다.호출되면, 커널은 즉시 인수하여 결과를 검사하고 정보를 적절한 핸들러, 잠재적으로 커널 내에서 전달한다.그런 다음 어떤 결과도 커널을 통해 고객에게 다시 전달되었다.

일반적으로 클라이언트 애플리케이션에 나타나는 시스템의 작동은 일반적인 단일 커널로 작업하는 것과 매우 유사하다.전달된 결과가 제3자 핸들러에서 나올 수 있지만, 이것은 본질적으로 고객에게는 보이지 않았다.이러한 요청을 처리하는 서버는 클라이언트와 유사한 방식으로 작동하여 커널과의 연결을 열어 데이터를 전달한다.그러나 서버는 일반적으로 더 오래 지속되는 요청을 처리하기 위해 필요한 새로운 스레드를 생성했다.이러한 것들이 처리되고 응답들이 게시되면, 쓰레드는 할당 해제될 수 있고, 서버는 추가 요청을 기다리는 수신 모드로 들어갈 수 있다.

대조적으로, 대부분의 마이크로커널 시스템은 동기식 절차 호출 대신 비동기식 통신 모델에 기반을 두고 있다.표준 마이크로커널 시스템인 마하(Mach)는 메시지를 I/O로 모델링하여 여러 가지 중요한 부작용이 있다.이 중 일차적인 것은 Unix 유사 시스템의 정상적인 작업 스케줄러는 일반적으로 I/O 요청을 기다리는 클라이언트를 차단하므로, 이러한 방식으로 메시지 대기 중인 애플리케이션을 일시 중지하고 재시작하는 작업은 이미 기본 시스템에 내장되어 있다는 것이다.이러한 접근방식의 단점은 스케줄러가 상당히 중량감이 있고, 이를 "심각한 성능 병목현상"이라고 부르며 성능개선을 위한 광범위한 개발노력으로 이어졌다는 점이다.V-System 모델에서는 프로세스 스케줄러를 참조할 필요가 없으므로 오버헤드를 통과하는 메시지가 감소하며, 다음에 무엇을 실행해야 하는지, 즉 서버를 호출해야 하는지에 대해서는 의문의 여지가 없다.V 접근 방식의 단점은 응답 처리에 시간이 걸릴 수 있는 경우 서버를 위해 더 많은 작업이 필요하다는 것이다.

체인

V와는 대조적으로 뱅가드 휘하의 IPC 시스템에 한 가지 주요한 추가는 메시지 체인의 개념으로, 한 번의 왕복으로 여러 대의 상호 작용하는 서버 사이에 하나의 메시지를 송신할 수 있게 했다.이론적으로 체인은 일반적인 다단계 연산의 성능을 향상시킬 수 있다.

클라이언트 응용 프로그램이 파일을 읽어야 하는 경우를 고려하십시오.일반적으로 이것은 커널에 파일 서버를 찾기 위해 하나의 메시지를 필요로 하고, 그 다음 파일 서버에 대한 세 개의 메시지를 더 필요로 한다. 하나는 파일 이름을 개체 ID로 분해하기 위해서, 다른 하나는 그 ID를 열기 위해서, 그리고 마지막으로 다른 하나는 파일을 읽기 위해서.뱅가드의 체인을 사용하여, 이러한 모든 요청을 포함하는 클라이언트에 의해 하나의 메시지를 작성할 수 있다.메시지는 커널로 전송된 다음, 최종적으로 데이터를 반환하기 전에 세 가지 요청을 모두 처리하는 파일 서버로 전달된다.

일반적으로 마이크로커널 시스템과 관련된 성능 문제의 대부분은 메시지가 애플리케이션 간에 앞뒤로 전달될 때 컨텍스트 스위치에 기인한다.위의 예에서 V 시스템에서 실행되는 경우, 클라이언트가 커널로 전환하거나 커널에서 전환할 때 각 요청에 대해 2개씩 총 8개의 컨텍스트 스위치가 총 8개의 컨텍스트 스위치가 있어야 한다.Vanguard에서 체인을 사용하는 것은 이것을 오직 3개의 스위치로 줄일 것이다; 하나는 클라이언트에서 커널로, 다른 하나는 커널에서 파일 서버로, 그리고 마지막으로 서버에서 클라이언트로.경우에 따라 컨텍스트 스위치의 오버헤드가 요청을 실제로 실행하는 데 걸리는 시간보다 크므로 뱅가드의 체인 메커니즘은 실제 성능 개선을 초래할 수 있다.

개체 이름 지정

뷔는 간단한 분산형 네임 서비스도 도입했다.분산 V 시스템에 다양한 개체를 나타내는 잘 알려진 문자 이름을 저장한 서비스(예:2nd floor laser printer애플리케이션은 이름 서버에 이름으로 개체를 요청할 수 있고, 그 개체와 상호작용을 할 수 있는 식별자를 돌려줄 것이다.네임 서비스는 별도의 서버가 아니었고, 커널의 코드로 관리되었다.이를 운영체제 스프링(Spring)의 풀네임 서버와 대조해 보자. 스프링(Spring)은 시스템 내부의 객체에 대해 알고 있었을 뿐만 아니라, 시스템의 다른 서버에서도 파일 이름이나 IP 주소와 같은 개인 이름을 번역하는 데 사용되었다.

V-시스템에서 서버의 개체는 32비트 정수라고 하는 애드혹프라이빗 를 통해 언급되었다.클라이언트는 특정 작업에 대한 대화를 유지하기 위해 이러한 키를 서버에 전달한다.예를 들어, 응용 프로그램은 커널에 파일 시스템을 요청하고 프로그램 ID를 나타내는 32비트 키를 건네받은 다음 이 키를 사용하여 파일 시스템에 파일을 열라는 메시지를 보낼 수 있다.my addresses, 64비트 키를 반환하게 된다.이 예제의 키는 서버의 소유권이며, 시스템 전체에 걸쳐 사용되고 있는 일반적인 키 형식은 없었다.

이러한 종류의 이름 해결은 V하에서 너무나 흔하게 이루어졌기 때문에 저자들은 이러한 열쇠들을 뱅가드 휘하의 일등 시민으로 만들기로 결정했다.서버가 방금 사용하게 된 객체 ID를 사용하는 대신, 뱅가드 아래에서 모든 서버는 128비트 키, 즉 서버 식별자를 포함하는 첫 64비트, 두 번째는 서버 내의 객체를 식별하는 키를 이해하고 반환할 것으로 기대되었다.서버 ID는 커널에서 유지 관리되어 참조 중인 서버가 원격 컴퓨터에 있는 경우 네트워크를 통해 메시지를 전달할 수 있었다.고객에게 이것은 보이지 않았다.의도하지 않은 소프트웨어에 의한 성공적인 추정을 막기 위해 ID가 무작위로 할당되었는지 여부는 불분명하다.

참조

  1. ^ Finlayson, Ross S.; Hennecke, Mark D.; Goldberg, Steven L. (20–23 September 1993). From V to Vanguard: The Evolution of a Distributed, Object-Oriented Microkernel Interface. Proceedings of the USENIX Microkernels and Other Kernel Architectures Symposium. USENIX. San Diego, California.