KR100201772B1 - 다중설비운영체제구조 - Google Patents

다중설비운영체제구조 Download PDF

Info

Publication number
KR100201772B1
KR100201772B1 KR1019920700523A KR920700523A KR100201772B1 KR 100201772 B1 KR100201772 B1 KR 100201772B1 KR 1019920700523 A KR1019920700523 A KR 1019920700523A KR 920700523 A KR920700523 A KR 920700523A KR 100201772 B1 KR100201772 B1 KR 100201772B1
Authority
KR
South Korea
Prior art keywords
network
message
file system
data
request
Prior art date
Application number
KR1019920700523A
Other languages
English (en)
Other versions
KR920704226A (ko
Inventor
히츠데이비드
쉬바르쯔알란
라우제임스
해리스가이
Original Assignee
프레드 너보
오스펙스 시스템즈 인코퍼레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23601436&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100201772(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 프레드 너보, 오스펙스 시스템즈 인코퍼레이티드 filed Critical 프레드 너보
Publication of KR920704226A publication Critical patent/KR920704226A/ko
Application granted granted Critical
Publication of KR100201772B1 publication Critical patent/KR100201772B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Executing Machine-Instructions (AREA)
  • Programmable Controllers (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Selective Calling Equipment (AREA)

Abstract

본 발명은 다중설비 운영체제 구조를 채용하는 컴퓨터시스템에 관한 것이다. 컴퓨터시스템은 사전설정된 세트의 동종설비(162,164,166,168)를 실현하는 다수의 프로세서 유니트(12,14,16)을 포함한다. 각각의 동종설비는 다수의 관련 함수와 프로세서 유니트를 상호 연결시키는 통신버스(22)를 포함한다. 각각의 프로세서 유니트는 중앙 프로세서(30,80,100)와, 실행시 사전설정된 동종설비를 실현하고 멀티 태스킹 인터페이스 함수를 수행하는 저장 프로그램(68,86,134)을 포함한다. 멀티 태스킹 인터페이스 함수는 제어메시지에 응답하여 사전설정된 동종설비의 실행함수를 선택하고 제어 메시지를 제공하는 사전설정된 동종설비에 응답하여 컴퓨터시스템의 또다른 동종설비의 함수의 성능을 요청하고 그에 응답한다. 프로세서 유니트의 멀티 태스킹 인터페이스 함수는 통신버스를 통해 상호간 통신한다.

Description

다중설비 운영체제 구조
제1도는 본 발명의 다중설비 운영체제 구조를 실현하기 위한 바람직한 컴퓨터시스템 구조의 개략적인 블록선도.
제2도는 본 발명의 바람직한 실시예에 따른 네트워크 통신 동종설비를 실현하기 위한 네트워크 통신 프로세서의 블록선도.
제3도는 본 발명의 바람직한 실시예에 따른 화일시스템 제어기 동종설비를 실현하기 위한 화일시스템 프로세서의 블록선도.
제4도는 본 발명의 바람직한 실시예에 따른 저장장치 동종설비를 실현하기 위한 저장 프로세서의 블록선도.
제5도는 본 발명의 바람직한 실시예에서 공유메모리로서 사용되는 주요 메모리 어레이의 개략적인 블록선도.
제6도는 본 발명의 바람직한 실시예에 따라 구성되는 다중설비 운영체제 구조의 블록선도.
제7도는 동종설비간을 이동하여 메시지의 위치를 식별하는 메시지 기술어를 나타낸 도면.
제8도는 본 발명의 바람직한 실시예에서 사용되는 동종설비 메시지를 나타낸 도면.
제9도는 종래의 프로그램 기능호출을 간단히 나타낸 도면.
제10도는 본 발명의 바람직한 실시예에 따른 설비간 기능호출을 간단히 나타낸 도면.
제11도는 본 발명의 바람직한 실시예에 따른 두가지 동종설비의 인터페이스 기능을 보인 제어상태선도.
제12도는 본 발명의 바람직한 실시예의 동종설비를 통한 LFS 판독요청에 필요한 데이타흐름을 보인 도면.
제13도는 본 발명의 바람직한 실시예의 동종설비를 통한 LFS 기록요청에 필요한 데이타흐름을 보인 도면
제14도는 본 발명의 바람직한 실시예에 따른 네트워크 통신 및 지역 호스트 동종설비간의 비 LFS 데이타 패킷의 데이타흐름을 보인 도면.
제15도는 본 발명의 바람직한 실시예에 따른 두가지 네트워크 통신 동종설비간에 송달되는 데이타 패킷의 데이타 흐름을 보인 도면.
* 도면의 주요부분에 대한 부호의 설명
10 : 컴퓨터 시스템 12 : 네트워크 제어기
14 : 화일시스템 제어기 16 : 대량기억장치 프로세서
18 : 시스템메모리 20 : 호스트 프로세서
24 : 구동 어레이 30 : 중앙처리장치
42,44 : LAN 제어기 46,48 : 버퍼 메모리
54,56 : LAN 버스 62 : 이차 데이타 버스
68 : 지역 공유메모리 70 : 버퍼
본 출원은 다음의 미합중국 특허출원의 관련출원이다.
1. 병렬 입/출력 네트워크 화일서버 구조 ( 발명자 : 존 로우, 래리 보우처, 윌리엄 피츠, 스티븐 블라이트맨 )
2. 동기 핸드세이킹 및 블록모드 데이타전달을 활용하는 향상된 VME 버스 프로토콜 ( 발명자 : 다릴 디. 스타 )
3. 의사동기 핸드세이킹 및 블록모드 데이타전달을 활용하는 버스 잠금 FIFO 다중프로세서 통신시스템 ( 발명자 : 윌리엄 피츠, 스티븐 블라이트맨, 다릴 디. 스타 )
4. 신속전달 지향 메모리 억세스 제어기 ( 발명자 : 다릴 디. 스타, 스티븐 블라이트맨, 래리 보우처 )
상기한 출원은 모두 본 출원의 출원인에게 양도되었으며, 본 명세서에 참조자료로서 언급된다.
본 발명은 운영체제 소프트웨어 구조에 관한 것으로, 특히 다중 태스킹 프로세스 커널에 기초한 다중 프로세서 운영체제 구조에 관한 것이다.
컴퓨터와 관련된 분야에서 생산량을 향상시키기 위한 욕구는 종종 컴퓨터 처리량을 향상시킴으로써 실현된다. 종래의 화일서버는 사용자 워크스테이션과 관련한 잠재적인 생산량의 제한적인 요인으로서 인지된다.
화일서버는 이더네트 따위의 통신망을 통해 사용자 워크스테이션 및 잠재적인 다른 워크스테이션 화일서버에 연결되는 통상적인 컴퓨터시스템이다. 화일서버는 공통의 자원베이스를 사용자에게 제공한다. 주요자원은 전형적으로 자료화일의 저장 및 관리에 있지만, 특정 형태의 프로그램의 단일처리, 전자우편 전달 및 다른 화일서버 및 서비스로의 게이트웨이 연결을 포함하는 추가적인 서비스가 또한 포함된다.
사용자 워크스테이션은 다수의 통신망 프로토콜을 활용하여 화일서버와 대화할 수도 있다. 통상적으로 알려진 바와 같이, 폭넓게 사용되지 않는 경우의 프로토콜은 TCP/IP이다. 이 프로토콜과 그 지원 유틸리티 프로그램은 다중 사용자 워크스테이션과 화일서버간의 논리적인 통신채널을 생성한다. 이들 통신채널은 일반적으로 지점간 화일전송을 위해 최적화된다. 즉 다중 사용자 화일 억세스 제어 또는 작업관리는 제공되지 않는다. 또한, 이들 프로토콜을 지원하는 유틸리티 프로그램은 일단 전송된 화일을 관리하기 위한 전체적인 이행능력은 물론 화일전송을 초기화하기위해 사용자대화의 중요한 등급을 과한다.
최근에 다수의 네트워크 연결 원격화일시스템 메커니즘이 개발되어, 화일시스템의 일부분이 사용자의 지역 기억장치, 하나 또는 다수의 화일서버 또는 다른 사용자 워크스테이션간에 물리적으로 분산된다 하더라도, 사용자에게 일관된 단일형태의 자료화일의 화일시스템을 제공하고 있다. 이들 네트워크 화일시스템 메커니즘은 제역의 자료화일과 네트워크를 통해서만 억세스될 수 있는 화일시스템의 원격적으로 분산된 부분의 자료화일간의 구별을 드러내지 않는다. 그로한 화일시스템 메커니즘의 장점으로 화일서버에 의해 본질적으로 제공되는 정도까지 화일서버상에 물리적으로 나타나는 자료화일에 걸친 다중 사용자 억세스제어를 보유하며, 사용자 워크스테이션의 뷰를 실제로 단순화하고 화일시스템의 생산적인 활용을 들 수 있다.
현재 사용되고 있는 네트워크시스템 메커니즘은 선 마이크로시스템즈의 네트워크 화일시스템(NFS) 및 어메리칸 텔레폰 앤드 텔레그래프의 원격 화일공유(RFS) 시스템으로서 알려져 있다.
네트워크 화일시스템 메커니즘의 즉각적으로 일어나는 결과는 통신망 및 화일서버의 처리량의 조건을 사실상 증가시키기 위해 작용한다는데 있다. 따라서, 단일 화일서버에 의해 제공될 수 있는 사용자 워크스테이션의 수는 증가된 화일 억세스 응답시간으로부터 얻어지는 생산량이 감소하지않고 최대서비스에서 또는 그 이상에서 운영되는 네트워크에 기인하는 통신효율이 떨어지지 않도록 조화있게 설정되어야 한다.
사용자 워크스테이션의 수의 증가는 또다른 화일서버를 추가하고, 화일서버간의 화일시스템을 중복시키거나 가능하면 분할하고 화일서버간의 전용 고밴드폭 네트워크 연결을 제공함으로써 처리된다. 따라서, 종래의 화일서버의 제한된 처리량의 또다른 결과는 단가가 크게 증가하고 효과적으로 제공될 수 있는 사용자 워크스테이션의 수에 관련된 화일서버 베이스의 구성이 복잡해진다는 것이다.
많은 기술적이고 실제적인 이유로 인해 복잡하게 하는 또다른 요인은 화일서버가 부착된 사용자 워크스테이션과 동일하거나 유사한 운영체제를 실행시킬 수 있어야만 한다는 점이다. 그 이유로는 화일서버상에서 유지 및 관측 프로그램을 실행시키고, 요구되는 화일자료로부터 원격적으로 실행될 수 있을 경우 통신망을 과도하게 로드할 수 있는, 데이타베이스 서버 따위의 프로그램을 실행시킬 필요가 있다는 점에 있다. 종종 빠뜨릴 수 있는 또다른 사항으로 화일서버에 유일한 운영체제를 지원하는 비용를 해결할 필요성이 있다는 점이다.
이러한 고려사항들이 주어지면, 화일서버는 전형적으로 확장된 데이타저장성능을 구비하고 각각의 사용자 워크스테이션상에 나타나는 것과는 약간 다른 통신망 인터페이스를 갖춘 범용 컴퓨터가 된다. 또한, 많은 화일서버는 단지 물리적으로 다시 패키지화된 워크스테이션이다. 불행하게도, 다중 통신망 인터페이스를 구비한다손 치더라도, 그러한 워크스테이션에 기초한 컴퓨터는 가격/성능의 관점에서 볼 때, 대형그룹의 사용자 워크스테이션의 단일 화일서버로서의 기능을 수행하지 못하거나 그러한 기능을 수행하는데 부적절할 수 있다.
유지되는 화일시스템 설비 데이타 전달 밴드폭 가능성과 관련하여, 종래의 범용 컴퓨터에 의해 제공되는 처리량은, 기본적으로 일반적인 설계의 속성에 기인하는 다수의 요인에 의해 제한된다. 컴퓨터시스템 설계는 필연적으로 실행될 운영체제의 레벨과 속성, 실행된 어플리케이션의 속성 및 어플리케이션의 동질성에 좌우된다. 예를 들어, 과학적인 계산에만 사용되는 컴퓨터시스템은 전적으로 운영체제가 없이 사용되고, 한번에 단일 사용자에게만 제한되며, 예상되는 고도의 동질성를 가진 어플리케이션에 가장 적합한 특정 계산 하드웨어를 채용할 수도 있다. 역으로, 운영체제가 요구되는 경우, 시스템설계는 전형적으로 스스템의 단일의 주요 프로세서의 주변의 제어 프로세싱 부담을 감소시키기 위한 노력을 통해 운영체제를 실행시키는 단일 프로세서의 제어하에서 동작하는 전용주변제어기의 활용을 필요로 한다. 범용 컴퓨터시스템 설계에서 되풀이되는 과제는 능동의 주요 프로세서의 수를 증가시키는데 있다. 가장 단순한 분석에 의해, 컴퓨터시스템의 산출량 성능의 선형개량이 예상될 수도 있다. 그러나, 주요 프로세서의 증가된 수의 활용은 공통 주변자원의 제어 부담 및 경쟁의 더욱 큰 성장에 의해 방해를 받게된다. 또한, 프로세서의 수가 증가되었을 때 신속히 떨어지기 전에, 산출량의 순수한 개량이 약간 증가하는 것으로 보여진다.
따라서, 본 발명의 목적은 네트워크 화일시스템 요청에 대해 서비스하기 위한 효율적이고 확장가능한 컴퓨터시스템을 제공하기 위해 다중 프로세서 시스템을 제어하기 위한 운영체제 구조를 제공하는데 있다.
이는 다중설비 운영체제 구조를 채용하는 컴퓨터시스템에서 달성된다. 컴퓨터시스템은 사정설정된 세트의 동종의 설비를 실현하기 위한 다수의 프로세서 유니트를 포함하는 바, 각각의 동종의 설비는 다수의 관련 기능 및 프로세서 유니트를 상호연결하기 위한 통신버스를 실현한다. 각각의 프로세서 유니트는 중앙 프로세서 및, 실행시에 사전설정된 동종의 설비를 실현하고 다중 태스킹 인터페이스 기능을 실현하는 저장된 프로그램을 포함한다. 다중 태스킹 인터페이스 기능은 사전설정된 동종의 설비의 실행기능을 선택하기 위한 제어 메시지에 응답한다. 다중 태스킹 인터페이스 기능은 컴퓨터시스템의 또다른 동종의 설비의 기능을 요청하거나 그에 응답하기 위해 제어 메시지에 제공하기 위한 사전설정된 동종의 설비에 또한 응답한다. 다수의 프로세서 유니트 각각의 다중 태스킹 인터페이스 기능은 네트워크 버스를 통해 상호 통신한다.
따라서, 본 발명의 바람직한 실시예에서, 세트로 된 동종의 설비는 네트워크 통신, 화일시스템 제어, 저장 제어 및 지역 호스트 운영체제를 포함한다.
본 발명의 장점은 운영의 통일을 유지하기 위해 추가적인 제어 부담을 약간만 초래하면서 단일의 동질적인 시스템내에서 모두 각각의 경우 각각의 프로세서상에서 다중의 설비를 실현하기 위해 제공한다는 점이다.
본 발명의 또다른 장점은 네트워크 화일시스템 요청을 처리하는데 있어서의 부담을 최소화하기 위해 동종설비간의 직접적인 통신이 지원된다는 것이다.
본 발명의 다른 장점은 유사한 설비간의 동종설비간의 직접통신을 포함하는 단일의 동질적인 운영체제환경에서 여러 가지 실례의 각각의 동종의 설비 및 각각의 동종의 프로세서를 포함할 수 있도록 쉽게 확장가능한 컴퓨터시스템 소프트웨어 구조를 실현한다는 점이다.
본 발명의 또다른 장점은 동시에 그리고 다른 동종의 설비의 독립된 동종의 설비간의 통신과의 충돌을 피하면서 운영되는 설비로서의 운영체제를 포함할 수도 있다는 점이다. 운영체제 동종 설비 자체는 표준 화일서버 운영체제와의 호환성을 유지하기 위해 워크스테이션 운영체제와 적절히 호환가능한 종래의 운영체제일 수도 있다. 운영체제 동종설비는 비 네트워크 화일시스템 요청의 취급을 포함하여 다른 동종의 설비로부터의 예외조건을 취급할 수 있도록 사용될 수도 있다. 따라서, 본 발명의 다중설비 운영체제구조는 종래의 단일 프로세서 화일서버로서 사용자 워크스테이션에 나타난다.
본 발명의 다른 장점은 단일의 동질적인 컴퓨터시스템내에서 다중의 특정 동종설비를 지원하기 위한 메시지에 기초한 운영체제 구조 및 성능이 뛰어나고 산출량이 우수한 화일서버를 실현하는데 특히 적절한 성능을 제공하는데 있다.
이하, 본 발명의 이러한 장점 및 또다른 장점과 특징들을 첨부도면에 예시한 바람직한 실시예의 상세한 설명을 통해 명백하게 밝히기로 한다.
본 발명이 여러가지 하드웨어 구조에 폭넓게 적용가능하고 소프트웨어 구조는 다양한 특정방식으로 표시되고 실현될 수도 있지만, 여기서는 예시한 바람직한 실시예에 국한되어 상세히 설명하기로 한다.
Ⅰ. 시스템구조 개요
A. 하드웨어구조 개요
도면부호 10으로 표시된 본 발명의 하드웨어 시스템의 바람직한 실시예를 나타내는 블록선도가 제1도에 도시되어 있다. 바람직한 하드웨어 시스템(10)의 구조는 앞서 언급한 관련출원( 발명의 명칭 : 병렬 입/출력 네트워크 화일서버 구조 )에서 상세히 설명하고 있다. 이 출원은 본 명세서에서 참조자료로서 서술된다.
시스템(10)의 하드웨어 구성부는 고 밴드폭 후면 버스(22)에 의해 상호 연결되는 네트워크 제어기(12), 화일시스템 제어기(14) 및 대량기억장치 프로세서(16)를 포함한다. 이들 각각의 제어기(12,14,16)는 고성능 프로세서 및 지역 프로그램 기억장치를 포함함으로써 버스(22)에 억세스할 필요성을 최소화하는 것이 바람직하다. 오히려, 제어기(12,14,16)에 의한 버스(22)의 억세스는 필요하다면 제어기(12,14,16), 시스템 메모리(18) 및 지역 호스트 프로세서(20)간에 제어정보 및 사용자 워크스테이션 데이타를 정송하는 것이 요구될 때 억세스를 전송하는 것이 사실상 제한된다.
예시한 바람직한 시스템(10) 구성은 4개의 네트워크 제어기(121-4), 2개의 화일 제어기(141-2), 2개의 대량기억장치 프로세서(161-2), 4개의 시스템 메모리 카드로 이루어진 뱅크(181-4) 및 후면 버스(22)에 연결되는 호스트 프로세서(20)를 포함한다. 그러나, 본 발명은 이러한 프로세서의 수 및 형태에 국한되지는 않는다. 오히려, 6개 이상의 네트워크 통신 프로세서(12) 및 2개 이상의 호스트 프로세서(20)가 본 발명의 범주내에서 실현될 수 있다.
각각의 네트워크 통신 프로세서(NP)(121-4)는 네트워크 쌍(261-264)으로 도시된 두 개의 독립적인 이더네트 네트워크 연결을 지원하기 위한 모토롤러 68020 프로세서를 포함하는 것이 바람직하다. 각각의 네트워크 연결은 종래의 개개의 이더네트 네트워크 연결을 위해 지정된 초당 10 메가비트의 데이타 전송률을 직접 지원한다. 따라서, 본 발명의 바람직한 하드웨어 실시예는 초당 80 메가비트의 조합된 최대 데이타 산출량을 실현한다.
화일시스템 프로세서(FP)(141-2)는 주로 특정 계산엔진으로서 동작하며, 각각은 고성능의 모토롤러 68020 마이크로프로세서, 4메가바이트의 지역 자료기억장치 및 1/4 메가바이트보다 작은 고속 프로그램 메모리 기억장치를 포함한다.
기억장치 프로세서(SP)(161-2)는 지능 소형 컴퓨터시스템 인터페이스(SCSI) 제어기로서의 기능을 수행한다. 각각은 모토롤러 68020 마이크로프로세서, 지역 프로그램 및 데이타 메모리 및 10개의 병렬 SCSI 채널로 된 어레이를 포함한다. 구동 어레이(241-2)는 기억장치 프로세서(161-2)에 연결되어 대량 기억장치를 제공한다. 구동 어레이(241-2)는 하나에서 세개까지 균일하게 깊은 SCSI 기억장치 소자의 10개의 유니트-와이드 어레이인 것이 바람직하다. 본 발명의 바람직한 실시예는 각각의 어레이(241-2) 유니트용의 종래의 768 메가바이트의 5 1/4 인치의 하드디스크 드라이브를 사용한다. 따라서, 각각의 구동어레이 레벨은 각각의 기억장치 프로세서가 쉽게 전체 18 기가바이트를 지원함으로써 약 6 기가바이트의 저장성능을 달성한다. 따라서, 시스템(10)은 전체 36 기가바이트의 조합된 자료저장능력을 실현할 수 있다.
본 발명의 바람직한 실시예에 있어서의 지역 호스트 프로세서(20)는 선 마이크로시스템즈에서 제조되고 판매되는 모델면 Sun3E120인 선 중앙 프로세서 카드이다.
최종적으로, 시스템 메모리 카드(18)는 각각 컴퓨터시스템(10)내에서 공동으로 사용할 수 있는 32 비트 메모리의 48 메가바이트를 제공한다. 메모리는 시스템(10)의 각각의 프로세서에 대해 논리적으로는 가시적이다.
VME 버스(22)는 본 발명의 바람직한 실시예에서 네트워크 통신 프로세서(12), 화일시스템 프로세서(14), 기억장치 프로세서(16), 주메모리(18) 및 호스트 프로세서(20)를 상호 연결하는데 사용된다. 적어도 네트워크 통신 프로세서(12) 및 기억장치 처리기(16)상에서 실현되는 VME 버스(22)를 제어하기 위한 하드웨어 제어로직은 종래의 VME 전달 프로토콜 외에도 버스 마스터 신속전송 프로토콜을 실현한다. 그에 대응하여, 시스템 메모리(18)는 변형된 슬레이브 VME 버스 제어로직을 실현함으로써 시스템 메모리(18)는 네트워크 통신 프로세서(12) 및 기억장치 프로세서(16)의 신속한 데이타 전송자료 소오스 또는 목적지로서 또한 작용할 수 있게된다. 신속전송 프로토콜은 앞서 언급한 관련출원( 발명의 명칭 : 동기 핸드세이킹 및 블록모드 데이타전달을 활용하는 향상된 VME 버스 프로토콜 )에 기술되어 있다. 이 출원은 본 명세서에서 참조자료로서 언급된다.
시스템(10)의 구성이 초기의 바람직한 최대 하드웨어 구성을 나타내는 한, 본 발명은 제어기의 특정 숫자 또는 형태, 디스크 드라이브의 크기 및 형태, 그리고 신속 자료전송 VME 프로토콜의 사용등에 제한을 받지 않는다.
B. 소프트웨어구조 개요
MVS 및 VMS 따위의 다양한 주요한 또는 완전한 기능의 운영체제에 적용가능하지만, 본 발명의 바람직한 실시예는 어메리칸 텔레폰 앤드 텔레그래프의 유닉스 운영체제 및 선 마이크로시스템즈의 유닉스 운영체제의 SunOS 버전을 전제로하여 설명된다. 유닉스 운영체제의 구조는 실제적인 학술연구 및 모리스 제이. 바하가 저술하고 1986년 프렌티스 홀사에서 출간한 유닉스 운영체제를 포함하는 수많은 간행물에 있어서의 주요과제였다.
요약하면, 유닉스 운영체제는 화일시스템의 단순한 화일지향 개념모델을 실현하는 비선취형, 멀티테스킹, 멀티유저 커널과 관련하여 이루어진 것이다. 모델에서의 중심은 지역 및 원격 화일의 균일한 화일지향 다중 화일시스템을 제공하는 가상화일시스템(VFS) 인터페이스이다.
유닉스 화일시스템(UFS)은 가상화일시스템에 연결된다. 유닉스 화일시스템으로부터, 물리적인 장치, 의사장치 및 다른 논리적인 장치가 화일시스템 모델내의 단순한 화일로서 사용자의 견지로부터 나타나고 처리될 수 있다. 유닉스 화일시스템은 가상화일시스템에 인터페이스되어 화일의 속성을 획득하고 물리적 또는 논리적 장치의 저장된 파라미터를 획득하며, 또한 자료를 판독하고 기록하는 등의 화일지향 요청을 수용하고 그에 응답한다. 이들 기능을 수행할 때, 유닉스 화일시스템은 부착된 물리적 대량기억장치와 직접 반응하는 저급 소프트웨어 장치구동기와 대화한다. 유닉스 화일시스템은 가상화일시스템으로부터 통과할 때 논리적인 디스크 섹터 판독 및 기록요청의 레벨로 다운되는 논리적 화일지향 운영을 해결하는데 필요한 모든 동작을 처리한다.
원격화일로의 억세스를 화일시스템모델로 통합하기 위해, 가사화일시스템은 가능하다면, 네트워크 화일시스템 메커니즘을 통해 네트워크 통신을 수행하기 위한 연결점을 제공한다. 바람직한 네트워크 화일시스템 메커니즘(NFS)은 네트워크 화일시스템을 포함하여 본 발명의 문맥내에서 네트워크 화일시스템 스택으로서 언급될 수 있는 일련의 통신 프로토콜층이 존재한다는 가정하에서 이루어진다. 네트워크 화일시스템 층을 포함하여 이들 층은 전형적으로 국제표준기구의 개방형 시스템 상호연결(ISO/OSI) 모델과 일치하는 일련의 프로토콜처리층을 포함한다. OSI 모델은 앤드류 에스. 타넨봄이 저술하고 1988년 프렌티스 홀사에서 출간한 컴퓨터 네트워크(제2개정판)을 포함하여 특정의 실현뿐만 아니라 모델의 개념적인 양상과 관련한 다수의 간행물의 과제였다.
요약하면, 본 발명에 의해 활용되는 OSI 층은 OSI 기준모델로 설명되는 모두 7개의 층, 측 어플리케이션, 프레젠테이션, 세션, 트랜스포트, 네트워크, 데이타 링크 및 물리적인 층을 포함한다.
어플리케이션층 프로토콜(NFS)은 네트워크 화일서비스를 제공하기 위해 서버 및 사용자 지향 문맥에서 사용하기 위한 한 세트의 원격처리 호출정의를 제공한다. 그와같이, NFS 층은 유딕스 커널의 VFS와 프레젠테이션 프로토콜층간에 링크를 제공한다.
외부 데이타 표시(XDR)층으로서 제공되는 프레젠테이션층 프로토콜은 공통 서술과 다른 컴퓨터구조간의 데이타전송을 허용하는데 필요한 데이타의 암호와를 한정한다. 따라서, XDR은 이종의 컴퓨터시스템의 데이타표시간의 구문 및 어휘 번역을 책임진다.
원격처리 호출(RPC)층으로서 실현되는 세션층 프로토콜은 사용자 프로세서와 서버 프로세스간의 원격처리 호출능력을 제공한다. 종래의 화일서버의 경우, NFS층은 XDR층을 통해 서버 문맥내의 RPC층에 연결되어 화일 지향 데이타전달 및 네트워크 사용자의 관련요청을 지원한다.
사용자 데이타그램 프로토콜(UDR) 또는 전송제어 프로토콜(TCP)층으로서 실현되는 트랜스포트층 프로토콜은 단순히 연결되지 않은 데이타그램 전달 서비스를 제공한다. NFS는 UDP를 사용한다.
인터네트 프로토콜(IP)로서 실현되는 네트워크층 프로토콜은 IP루팅 데이타베이스에 저장된 어드레스 맵핑, 데이타 패킷손실 및 재조립에 기초하는 인터네트 루틴을 수행한다.
데이타 링크(DL)층은 패킷 프레임 정보에 기초하여 데이타 패킷의 전송 및 수신을 관리한다. 이 층은, 저급 데이타 전송 에러 교정/취급의 프로그램 제어 및 데이타흐름 제어를 포함하여 특정 통신 하드웨어와의 저급 소프트웨어 제어 인터페이스를 포함하기 때문에, 종종 장치구동기로서 언급된다. 그와 같이, 이 층은 IP층과의 독립적인 하드웨어 인터페이스를 나타낸다.
최종적으로, 물리적인 층인 이더네트 제어기는 네트워크 물리적 전송매체와의 하드웨어 인터페이스를 제공한다.
유니프로세서 VAX 구조용으로 실현되는 종래의 NFS 스택은 선마이크로시스템즈의 허가를 받은 상태에서 소오스 코드 형태로 사용가능하다.
본 발명의 바람직한 실시예는 그 운영체제 플랫홈으로서 종래의 SunOS 유닉스 커널, UFS의 Sun/VAX 참조 릴리즈 및 NFS 스택의 Sun/VAX 참조 릴리즈를 활용한다. 본 발명은 독립적인, 즉 유닉스 커널로부터 분리된 실행 소프트웨어 엔티티로서 NFS 스택의 실례를 설정한다. UFS 또는 대량 기억장치 구동기의 실례는 다시 유닉스 커널로부터 분리되는 각각의 독립적인 소프트웨어 엔티티로서 또한 설정된다. 이들 엔티티 또는 동종의 설비에는 각각 상호간의 직접적인 통신을 지원하는 인터페이스가 제공된다. 이 인터페이스 또는 메시징 커널층은 메시지 통과 멀티 태스킹 커널을 포함한다. 메시징 커널층은 특정 설비의 기능을 지원하기 위해 각각의 형태의 동종의 설비에 맞추어진다. 멀티 태스킹 운영이 제공됨으로써, 동종의 설비는 다중 동시처리를 관리할 수 있다. 메시지는 요청되는 기능의 속성에 기초하여 다른 동종의 설비로 향한다. 따라서, NFS 화일시스템이 요청되는 경우, 요청 메시지는 NFS 네트워크 통신 동종설비를 지나 직접 UFS 화일시스템 동종설비로 향하고, 필요에 따라 대량 기억장치 동종설비로 향한다. 관련 데이타 경로는 NFS 네트워크 통신 동종설비 및 VME 공유 어드레스 공간 주메모리를 경유하는 대량 기억장치 동종설비간에 위치한다. 따라서, 동종설비의 수는 논리적으로 제한되지 않으며 가장 통상적인 형태의 사용자 워크스테이션 화일시스템 요구의 서비스는 단지 최소량의 처리가 요구되는 한 충족된다.
최종적으로, NFS 스택, UFS 및 대량 기억장치 구동기를 포함하는 유닉스 커널은 또다른 동종의 설비로서 설정된다. 다른 동종의 설비를 구비함으로써 이 운영체제 설비에는 시스템(10)내의 또다른 엔티티로서의 다른 동종의 설비와 동시에 대화하기 위한 멀티 태스킹 인터페이스가 제공된다. 운영체제 커널 동종설비가 대부분의 NFS 요청의 즉각적인 서비스에 포함되지 않는 한, NFS 스택 동종설비와 대화하여 ARP 및 IP 데이타베이스의 관리와 사용자 워크스테이션으로부터의 초기 NFS 화일시스템 억세스 요청을 수행하고, NFS 스택 동종설비에 의해 수용되는 어떠한 비 NFS형 요청도 처리한다.
Ⅱ. 동종 프로세서
A. 네트워크 제어 프로세서
바람직한 네트워크 제어 프로세서의 블록선도가 제2도에 도시되어 있다. 네트워크 제어기(12)는 어드레스, 제어 및 데이타 라인을 포함하는 지역 중앙처리방치 버스(32)에 연결되는 32비트 중앙처리장치(CPU)(30)을 포함한다. CPU는 모토롤러 68020 프로세서인 것이 바람직하다. CPU 버스(32)의 데이타 라인부분의 폭은 32 비트이다. 네트워크 제어기(12)의 지역 버스(32)에 연결되는 모든 요소는 CPU(30)의 전망으로부터 맵핑된 메모리이다. 이는 부트 PROM(38)에 지역 버스(32)를 연결하는 버퍼(34)에 의해 인에이블된다. 부트 PROM(38)은 부트 프로그램과 그에 필요한 기동 및 동작 파라미터를 저장하기 위해 활용된다. 또다른 버퍼(40)에 의해, CPU(30)는 두개의 병렬 어드레스, 제어 및 16 비트 폭의 데이타 버스(54,56)를 경유하여 한쌍의 이더네트 근거리 통신망(LAN) 제어기(42,44), 그 지역 데이타 패킷 메모리(46,48) 및 관련 패킷지향 메모리 억세스(DMA) 제어기(50,52)를 분리상태 어드레스한다. LAN 제어기(42,44)는 CPU(30)에 의해 프로그램되어 이더네트 연결부(26)를 경유하여 전송될 때의 데이타 패킷의 저장 및 검색을 위한 각각의 지역 버퍼 메모리(46,48)를 활용한다. DMA 제어기(50,52)는 CPU(30)에 의해 프로그래밍되어 버퍼 메모리(46,48) 및 LAN 버스(54,56)에 또한 연결되는 각 쌍의 멀티플렉싱 FIFO(58,60)간에 데이타 패킷을 전송한다. 멀티플렉싱 FIFO(58,60)는 각각 LAN 버스(54,56)의 데이타 부분에 연결되는 16 비트 대 32 비트폭 데이타 멀티플렉서/디멀티플렉서와 한쌍의 내부 FIFO 버퍼를 포함한다. 따라서, 예를 들어 본 발명의 바람직한 실시예에 있어서, 첫번째 32 비트 폭 내부 FIFO는 멀티플렉서를 통해 16 비트폭 LAN 버스(54)에 연결된다. 또한 32 비트폭의 두번째 내부 FIFO는 이차 데이타 버스(62)에 연결된다. 멀티플렉싱 FIFO(58) 및 멀티플렉싱 FIFO(60)의 이들 내부 FIFO 버퍼는 LAN 버스(54,56) 및 이차 데이타 버스(62)의 논리적인 연결부 사이에서 교체된다. 따라서, LAN 버스(54,60) 및 이차 데이타 버스(62)의 데이타 전송비의 큰 차는 버스트 데이타 길이가 내부 FIFO(58,60)의 깊이와 동일한 경우에 유지될 수 있다.
CPU(30)에 의해 제어되는 고속 DMA 제어기(64)는 멀티플렉싱 FIFO(58,60) 및 향상된 VME 제어 로직블록(66)의 동작을 직결시키기 위해 제공되며, 이를 통해 이차 데이타 버스(62)상에 제공된 제이타는 VME 버스(22)의 데이타 라인에 통신된다. 멀티플렉싱 FIFO(58,60)의 목적은, 16 비트 대 32 비트 멀티플렉서 및 버퍼로서 작용하는 것 외에도, 향상된 VME 제어 로직블록(66)의 빠른 전송모드의 데이타 전송률을 궁극적으로 지원하는데 있다.
1/4 메가바이트 블록의 지역 공유메모리(68), 버퍼(70) 및 세 번째 멀티플렉싱 FIFO(74) 또한 지역 CPU 데이타 버스(32)에 연결된다. 메모리(68)는, 향상된 VME 제어 로직 블록(66) 및 버퍼(70)를 지나 향상된 VME 버스(22)의 메모리 어드레스 공간내에 또한 나타난다는 점에서 공유된다. 버퍼(70)는 이차 데이타버스(62) 및 지역 CPU 버스(32)간에 데이타를 전송하기 위한 양방향 데이타 경로를 제공하는 것이 바람직하며, CPU(30) 또는 향상된 VME 버스(22)로부터 상태단어를 수신하거나 저장하기 위한 상태 레지스터 어레이를 또한 포함한다. 멀티플렉싱 FIFO(58,60)과 동일한 멀티플렉싱 FIFO(74)은 CPU(30)를 위한 고속의 블록지향 데이타 전송성능을 제공한다.
최종적으로, 메시지 서술기 FIFO(72)는 이차 데이타 버스(62)와 지역 CPU 버스(32)간에 연결된다. 메시지 서술기 FIFO(72)는 메시지 서술기를 수용하기 위한 단일 공유메모리 위치로서 향상된 VME 버스(22)로부터 어드레스되는 것이 바람직하다. 메시지 서술기 FIFO(72)는 256 단어저장 능력을 갖춘 32 비트폭의 단일버퍼 FIFO인 것이 바람직하다. 본 발명의 바람직한 실시예에 따라, 메시지 서술기 FIFO는 앞서 언급한 관련출원 ( 발명의 명칭 : 버스 잠금 FIFO 다중프로세서 통신시트템 )에 상세히 설명되어 있다. 이 출원은 참고자료로서 본 명세서에 언급된다. 그러나, 완전하게 하기 위해, 향상된 VME 제어 로직블록(66)내에서 실현되는 향상은 FIFO(72)가 완전히 채워지지 않는한 향상된 VME 버스(22)로부터 메시지 서술기 FIFO(72)에 선취적으로 기록을 허용한다는 점이다. 메시지 서술기 FIFO(72)에 기록하는 것이 허용되지 않는 경우, 향상된 VME 제어 로직블록(66)은 향상된 VME 버스상에 VME 버스에러 신호를 등록함으로써 기록을 즉각적으로 약화시킬 수 있다.
B. 화일시스템 제어 프로세서
화일시스템 제어 프로세서(14,60)의 바람직한 구조가 제3도에 도시되어 있다. CPU(80), 바람직하게는 모토롤러 68020 프로세서는 지역 CPU 어드레스, 제어 및 32 비트폭 데이타 버스(82)를 경유하여 다양한 요소의 화일 제어기(14)에 연결된다. 이들 기본 요소는 화일시스템 제어프로그램을 저장하는데 사용되는 256 킬로바이트의 정적 RAM블록(84) 및 지역 데이타를 저장하는 4 메가바이트의 동적 RAM블록(86)을 포함한다. 이들 둘은 모두 지역 CPU 버스(82)에 직접 연결된다. 버퍼(88)는 지역 CPU(82)를 이차 32 비트폭 데이타 버스(90)에 연결하며, 이 데이타 버스는 차례로 향상된 VME 제어 및 로직블록(92)을 통해 VME 버스(22)의 데이타 버스 라인에 연결된다. 상태 레지스터 어레이 기억장치를 제공하는 것 외에도, 버퍼(88)는 메모리블록(84,86)이 VME 버스(22)상에서 지역 공유메모리로서 억세스되는 것을 허용한다. CPU(80)의 메모리 어드레스 맵내에서 화일 제어기 초기화 프로그램을 포함하는 부트 RPOM(96)을 논리적으로 위치시키기 위해 이차 버퍼(94)가 제공된다. 최종적으로, 단일 버퍼 메모리 서술기 FIFO(98)는 이차 데이타 버스(90) 및 지역 CPU 버스(82)간에 제공된다. 향상된 VME 버스(22)로부터 화일제어기(14)에 선취적으로 기록이 행해질 수 있도록 메시지 서술기 FIFO(98)가 다시 제공된다.
C. 기억장치 제어 프로세서
기억장치 프로세서(16)의 블록선도가 제4도에 도시되어 있다. CPU(100), 바람직하게는 모토롤러 68020 프로세서는 지역 CPU 어드레스, 제어 및 32 비트폭 데이타 버스(102) 및 버퍼(104)를 통해 연결됨으로써 부트 RPOM(106)과, 내부 주변 데이타 버스(110)에 차례로 연결되는 이중 버퍼구조 멀티플렉싱 FIFO(108)로의 억세스를 획득한다. 내부 주변 데이타 버스(110)는 차례로 이중 버퍼구조 멀티플렉싱 FIFO(1121-10) 및 SCSI 채널 제어기(1141-10)의 병렬채널 어레이를 통해 연결된다. SCSI 제어기(1141-10)는 구동 어레이(24)에 연결되는 각각의 SCSI 버스(SCSI0-SCSI9)를 지원한다.
이중버퍼 FIFO(1121-10) 및 SCSI 제어기(1141-10) 어레이의 동작에 대한 제어는 궁극적으로 메모리가 맵핑된 버퍼(116) 및 이중 포트구조 SRAM 명령블록(118)의 첫번째 포트를 경유하여 CPU(100)에 의해 이루어진다. SRAM 블록(118)의 두번째 포트는 이중 버퍼구조 FIFO(108,1121-10), 임시저장 버퍼메모리(122) 및 향상된 VME 버스(22)간의 저급의 데이타 전송을 제어하는 DMA 제어기(120)에 연결된다. 본 발명의 바람직한 실시예에 따라, DMA 제어기는 이중 포트구조 SRAM 블록(118)내의 CPU(100)에 의해 우송된 명령에 응답하여 데이타 블록 전송의 소오스 또는 목적지로서 이중 버퍼구조 FIFO(108,1121-10), 버퍼메모리(122) 및 향상된 VME 버스(22)중 어느 것을 선택한다. 이를 달성하기 위해, DMA 제어기(120)는 제어 버스(124)를 통해 이중 버퍼구조 FIFO(108,1121-10), SCSI 제어기(1141-10), 버퍼메모리(122), 한쌍의 이차 데이타 버스 버퍼(126,128) 및 향상된 VME 제어 및 로직블록(132)에 연결된다. 버퍼(126,128)는 내부 주변 데이타 버스(110)를 이차 데이타 버스(130) 및 버퍼메모리(122)에 선택적으로 연결함으로써 데이타를 송달하는데 사용된다. 본 발명의 바람직한 실시예에 따라 실현되는 DMA 제어기(120)는 앞서 언급한 관련출원 ( 발명의 명칭 : 신속전달 지향 메모리 억세스 제어기 )에 기술되어 있다. 이 출원은 참조자료로서 본 명세서에 언급된다. 최종적으로, 1 메가바이트의 지역 공유메모리 블록(134), 고속버퍼 및 레지스터 어레이(136) 및 선취적 기록메시지 기술기 FIFO(138)가 제공되어 지역 CPU 데이타 버스(102)에 직접 연결된다. 버퍼(136)는 또한 이차 데이타 버스(130)에 연결되는 반면, 메시지 서술기 FIFO(138)는 이차 데이타 버스(130)에 연결된다.
D. 주메모리 어레이
제5도는 메모리카드(18)의 바람직한 구조의 개략적인 블록선도를 보인 것이다. 각각의 메모리카드(18)는 향상된 VME 버스상에서 슬레이브로서 동작함으로써 어떠한 온-보드 CPU를 필요로 하지 않는다. 오히려, 타이밍제어 블록(150)만으로도 충분히 필요한 슬레이브 제어동작을 제공할 수 있다. 특히, 타이밍제어 블록(15)은 향상된 VME 버스(22)의 제어부로부터의 제어신호에 응답하여 향상된 VME 버스(22) 및 멀티플렉서 유니트(154)간의 32비트 데이타의 적절한 방향으로의 전달을 위한 32 비트폭 버퍼(152)를 인에이블시킨다. 멀티플렉서(154)는 데이타 전송방향에 따라 72 비트 단어메모리 어레이(156) 단위로 6 메가비트의 멀티플렉싱 및 디멀티플렉싱 기능을 제공한다. 에러교정 코드(ECC) 발생 및 검사 유니트(158)는 멀티플렉서(154)에 연결되어 다시 전송방향에 따라 메모리 어레이 단어당 8 비트의 ECC 데이타를 발생시키고 검증한다. 각각의 ECC 검증동작의 상태는 타이밍제어 블록(150)으로 다시 제공한다.
E. 호스트 프로세서
제1도에 도시한 호스트 프로세서(20)는 종래의 선 3E120 프로세서이다. 종래의 방식으로 설계된 이 제품으로 인해, 메시지 서술기 FIFO의 소프트웨어 에뮬레이션은 지역 호스트 프로세서의 공유메모리공간의 예약된 부분에서 수행된다. 이 소프트웨어 메시지 서술기 FIFO는 메시지 서술기 FIFO(72,98,138)의 기능을 제공한다. 본 발명의 바람직한 실시예는 도시되지 않은 지역 호스트 프로세서(20')를 포함하며, 이는 하드웨어 선취적 기록 메시지 서술기 FIFO를 포함하지만, 그렇지 않은 경우, 프로세서(20)와 기능적으로 등가이다.
Ⅲ. 동종설비 구조
A. 동종설비 기능
제6도는 본 발명의 다중 동종설비 구조를 예시한 것이다. 그러나, 세트로 된 동종설비의 하나만을 예로서 나타내어 도면을 간략히 하였다.
동종설비는 네트워크 통신설비(NC)(162), 화일시스템 설비(FS)(164), 기억장치 설비(S)(166) 및 호스트 설비(H)(168)를 포함한다. 완전하게 하기 위해, 메모리(18)는 논리적 자원(18')으로서 예시하였고, 이와 유사하게 디스크 어레이(24)는 자원(24')으로서 예시하였다.
네트워크 통신설비(162)는 메시징 커널층(178)과 NFS 스택을 포함한다. 메시징 커널층(178)은 다중처리를 지원하는 멀티 태스킹 커널을 포함한다. NFS 스택을 재실행하는 코드의 논리적으로 동시에 행해지는 실행은 동종 프로세러에 이해 실행되는 프로세스 문맥에 대한 참조로서 지원된다. 각각의 프로세스는 프로세스 ID(PID)에 의해 독특하게 식별된다. 동종 프로세서에 의한 문맥실행 스위치는 설비의 멀티 태스킹 커널내에 삽입되는 프로세스 스케쥴러에 의해 제어된다. 프로세스는 연속적인 실행에 요구되는 자원 또는 조건이 유용하지 않을 때까지 동종의 프로세서에 의한 프로세스 실행이 계속되는 경우, 최소한으로 활성화될 수도 있다. 그러한 자원 또는 조건의 유용성의 예고를 대기할 때 프러세스는 차단된다. 본 발명의 일반적인 문맥내에서의 네트워크 통신설비(162)로 인해, 프로세스 차단의 주요 소오스는 충분한 패킷 프레임이 수용되어 고레벨 층으로 전송가능한 완전한 데이타그램으로 조립될 때 까지 NC 프로세스가 대기상태에서 일련의 패킷 프레임을 각각 수신할 때 간략히 실행되는 네트워크 및 하위층내에 놓이게 된다. 반대로, NC 프로세스는 수행된 화일시스템 또는 지역 호스트 기능, 즉 또다른 동종설비에 의해 제어되거나 실현되는 기능을 요청되면 차단된다.
메시징 커널층(178)은, 본 발명의 모든 메시징 커널층과 마찬가지로, 프로세스를 할당하여 각각의 통신프랜잭션을 수행한다. 프로세스를 할당함으로써, 메시징 커널층(178)은 사전에 차단된 프로세스를 그러한 프로세스의 대기열로부터 멀티 태스킹 커널에 의해 실행하기 위해 스케쥴된 활성화된 프로세스의 대기열로 전송한다. 통신트랜잭션의 결과, 프로세스는 프로세스를 차단된 프로세스의 대기열로 복귀시킴으로써 해제된다.
새로운 통신트랜잭션이 초기화되면, 할당된 프로세스의 어드레스 또는 프로세스 ID는 후속트랜잭션이 관련하는, 즉 적절한 처리 프로세스와 상관되는 구별되는 데이타가 된다. 예를 들어, 사용자 워크스테이션가 새로운 통신트랜잭션을 초기화할 경우, 그것은 이더네트 어드레스를 제공한다. 네트워크 통신설비는 저장하고, 후속하여 요청에 응답하여 사용자의 이더네트를 활용함으로써 그 응답을 특정의 요청 사용자에게로 다시 향하게 한다.
NC 설비는 이와 유사하게, 사용자의 요청을 이행하는데 필요한 요청의 일부분으로서 그 관련 프로세스의 독특한 설비 ID 및 PID를 또다른 동종설비에 제공한다. 따라서, NC 설비 프로세스는 응답하는 동종설비가 그 응답을 네트워크 통신 동종설비의 관련 프로세스로 다시 향하게 한다는 확신을 가지고 차단할 수도 있다.
논리적인 이더네트 연결부(26')를 지원하는데 필요한 NFS 스택의 네트워크 및 하위레벨층은 IP층(172) 및 데이타 링크층(170)으로서 함께 예시된다. IP 루트 데이타베이스(174)에 연결되는 IP층(172)은 초기에 NFS와 비 NFS 사용자 요청을 구별하는데 사용된다. NFS 요청은 NFS 스택의 나머지 층을 포함하는 NFS 서버(176)에 통신된다. NFS층은 차례로, 네트워크 메시징 커널층(178)에 NFS 요청을 전달한다. 호출의 속성에 의해, 메시징 커널층(178)은 NFS 요청 호출, IP층(172)으로부터의 비 NFS 호출 및 네트워크층(170)으로부터 직접 수신된 네트워크 호출을 분별할 수 있다.
네트워크 통신설비(162)에 의해 처리되는 요청의 주요부분을 재실행하는 NFS 요청의 특정한 예에 있어서, 관련 NC 프로세스는 메시징 커널층(178)을 호출하여 대응하는 메시지를 화일시스템 설비(164)의 메시징 커널층(180)에 등록한다. 관련 NC 프로세스는 응답 메시지 및 가능하면 데이타 전달이 미결인 상태로 차단된다. 즉, 메시징 커널층(178)이 NFS 요청 호출을 수신할 때, 특정 설비간 메시지가 준비되어 요청을 식별하기에 충분한 정보를 갖는 메시징 커널층(180) 및 요청이 행해진 설비로 향한다. 예시한 바와 같이, 메시지는 시스템(160)의 여러가지 메시징 커널층 사이에서 교환된다. 그러나, 메시지는 사실상 특정 동종설비가 실행되는 동종 프로세서를 연결시키는 향상된 VME 버스를 통해 물리적으로 전송된다. 동종설비와 동종 프로세서의 물리적 및 논리적인 관계는 시스템(16)의 초기화에 따라 각각의 메시징 커널층에 동종 프로세서의 관련 메시지 서술기 FIFO 어드레스를 제공함으로써 설정된다.
수신된 메시지에 응답하여, 메시징 커널층(180)은 멀티 태스킹 환경내에서 FS 프로세스를 할당하여 통신트랜잭션을 수행한다. 이능동 FS 프로세스는 수신된 메시지 문맥을 수반하여 지역 화일시스템(LFS) 서버(182)를 호출하는데 사용된다. 이 LFS 서버(182)는 필수적으로 UFS 의 변형이 되지 않은 예(184)이다. 궁극적으로 대량 기억장치의 장치구동기로서 사용되는 이 UFS(182)에 의해 차례로 등록되는 호출은 메시징 커널층(180)으로 다시 향한다. 메시징 커널층은 기능 호출의 속성에 의해 요청된 그러한 장치구동기 관련 기능을 구별한다. 메시징 커널층(180)은 관련 FS 프로세스를 차단하는 반면, 또다른 프로세서간 메시지가 준비되어 기억장치 설비(166)의 메시징 커널층(186)으로 향한다.
기억장치 설비(166)는 언제든지 요청을 트랙하기 위해 또한 요청되기 때문에, 단일 매니저 프로세서는 메시지를 수신하기 위해 사용된다. 산출량의 효율을 증대시키기 위해, 이 S 매니저 프로세스는 FIFO 인터럽트에 응답하여 대응하는 메시지 서술기가 방금 SP FIFO에 방금 기록되었는지를 나타내고, 요청 응답에 필요한 SP 프로세서 동작을 즉시 초기화한다. 따라서, 현재의 S 설비는 인터럽트 시간에서 메시지를 처리하고 분리적으로 할당된 프로세스의 문맥내에서는 처리하지 않는다. 그러나, 메시징 커널층(186)은 교대로 S 작용자 프로세스를 할당하여 각각 수신된 메시지 요청에 대해 서비스한다.
화일시스템 설비(164)로부터 제공된 메시지는 요청을 충족시키기 위해서 기억장치 설비의 요구되는 특정 기능을 지정하는데 필요한 정보를 포함한다. 할당된 능동 S 프로세스의 문맥내에서, 메시징 커널층(186)은 장치구동기(188)의 요청에 대응하는 기능을 호출한다.
요청되는 자원의 유용성과 속성에 따라 장치구동기(188)는 요청된 데이타가 디스크 어레이 자원(24')으로부터 검색되도록 한다. 데이타가 장치구동기층(188)을 경유하여 복귀할 때, 메시징 커널층(186)의 관련 S 프로세스는 데이타의 전송을 메모리 자원(18')내로 향하게 한다.
본 발명의 바람직한 실시예에 따라, 사실상 대용량의 메모리 자원(18')은 화일시스템(164)의 전용자원으로서 관리된다. 따라서, 메시지가 데이타를 디스크 어레이(24')로 또는 그로부터 전송하기를 요청할 경우, 화일시스템 설비(164)는 메모리 자원(18')의 적절히 할당된 부분을 참조하는 적절히 공유된 메모리 어드레스를 제공한다. 따라서, 데이타가 디스크 어레이(24')로부터 검색될 때, 메시징 커널층(186)의 관련 S 프로세스는 장치구동기층(188)으로부터, 데이타 경로(190)로 예시된 바와 같이, 메모리 자원(18')내의 메시지 지정 위치로 전송한다.
데이타 전송이 완료되면, 관련 S 프로세스는 메시징 커널층(186)으로 복귀하고, 응답 메시지가 준비되고 메시징 커널층(186)에 의해 메시징 커널층(180)에 등록된다. 그러면, 관련 S 프로세스는 메시징 커널층(186)에 의해 해제될 수도 있다.
이 응답 메시지에 반응하여, 메시징 커널층(180)은 관련 FS 프로세스, 즉 S 설비 데이타 전송을 요청한 프로세스를 차단하지 않는다. 이로부터, 차례로 관련 FS 프로세스는 UFS(182)를 실행하고 최종적으로 요청된 기능이 완료되었음을 나타내는 메시징 커널층(180)으로의 복귀를 등록한다. 이에 응답하여, 메시징 커널층(180)은 관련 FS 프로세스를 대신하여 응답 메시지를 준비하여 메시징 커널층(178)에 등록한다. 이 메시지는 메모리 자원(18')내에 기억된 요청 데이타의 공유메모리 어드레스를 포함하게 된다.
메시징 커널층(178)은 관련 NC 프로세스를 차단하지 않음으로써 화일시스템 설비(164)로부터의 응답 메시지에 반응한다. 그 NC 프로세스의 문맥내에서 메시징 커널층(178)은 공유 메모리 어드레스를 갖는 NFS 서버(176)로의 복귀를 수행한다. 메시징 커널층(178)은 데이타를 메모리 자원(18')으로부터 지시된 데이타 경로(192)를 경유하여 NFS 서버층(176)에 의해 사용되는 지역 저장메모리로 전송한다. 데이타는 NFS 서버층(176), IP 층(172)과 네트워크 및 하위층(170)을 통해 네트워크(26')상에 제공하기 위한 패킷내로 처리되며, 원래 요청된 사용자 워크스테이션으로 향한다.
이와 유사하게, 데이타가 NFS 기록전송의 일부로서 네트워크층17을 경유하여 수신되는 경우, 데이타는 버퍼로 들어가고 NFS 서버층(176)을 통해 처리된다. 완료될 때, NFS 서버(176)에 의한 메시징 커널층(178)으로의 호출의 결과, 설비간 통신트랜잭션의 첫번째 메시지가 화일시스템 설비(164)에 등록된다. FS 프로세스를 할당하여 요청 메시지를 처리하면, 메시징 커널층(180)은 메모리 자원(18')내의 공유메모리 어드레스를 포함하는 설비간 메시지를 가지고 메시징 커널층(178)의 관련 NC 프로세스에 응답한다. 그런다음, NFS 데이타는 메시징 커널층(178)에 의해 지역 공유메모리로부터 데이타 경로(192)를 경유하여 전송된다. 이 데이타 전송이 완료될 때, 또다른 설비간 메시지가 메시징 커널층(180)의 관련 FS 프로세스로 통과한다. 그런다음, 이 프로세스는 차단되지 않고 LFS/UFS(182)를 통해 데이타 전송요청을 처리한다. UFS(182)는 차례로, 메시징 커널층(180)을 통해 설비간 통신트랜잭션을 초기화하여 데이타를 준비하고, 궁극적으로 메모리 자원(18')으로부터 데이타 경로(190)와 장치구동기(188)를 경유하여 디스크 어레이 자원(24')으로 데이타를 전송한다.
호스트 운영체제 설비(168)는 사실상 TCP/IP 스택을 포함하는 SunOS 운영체제로 완전하게 실현된다. 메시징 커널층(194)는 메시징 커널층(178,180,180)과 그다지 다르지 않게 호스트설비(186)를 시스템(160)내에 논리적으로 통합하기 위해 제공된다. 설비(168)의 운영체제 커널부는 VFS(196) 및 표준 예인 UFS(198)를 포함한다. UFS(198)는 정상상태에서 메시징 커널층(194)을 호출함으로써 UFS(198) 요청의 지원을 제공하여 설비간 메시지를 기억장치(166)에 등록하는 대량 기억장치 구동기(200)에 차례로 연결된다. 따라서, 기억장치 설비(166)는 부트업의 초기상태를 제외하고는 지역 호스트 설비(168)와 화일시스템 설비(164)간에 기능적으로는 구별하지 않는다. 오히려, 둘다 동일하게 나타나거나, 그렇지 않으면 기억장치 설비(166)의 차이가 없는 논리적인 사용자로서 나타난다.
NFS 층(202)의 종래의 사용자의 실예는 VFS(196)에 또한 인터페이스된다. 즉, NFS 층(202)은 네트워크 통신설비(162)를 통해 연결된 또다른 화일서버로 향하는 사용자 요청을 처리하기 위해 사용자로서 지향된다. 이들 요청은 종래의 큰 예인 선 NFS 사용자 스택의 TCP/UDP 층(204)을 경유하여 처리된다. IP 및 데이타 링크층(206)은 층(204)에 연결된다. IP와 데이타 링크 층(206)은 메시징 커널층(194)과 직접 통신할 수 있도록 변형된다. 데이타 링크층(206)으로부터 직접 호출에 응답하여 초기화된 메시징 커널층(194)으로부터의 메시지는 네트워크 통신설비의 데이타 링크층(170)으로 직접 메시징 커널(178)에 의해 논리적으로 향하게 된다. 이와 유사하게, 지역 화일시스템의 비 NFS 요청으로서 인지되는 IP 층(172)으로부터의 호출은 메시징 커널층(178,194)을 통과하여 직접 TCP/UDP층(204)으로 향한다. 본 발명의 바람직한 실시예에 따라, 그러한 상황에서의 호스트 설비(168)에 의한 응답은 전체 호스트 TCP/IP 스택(214,204,206), 메시징 커널층(194,178) 및 최종적으로 NC 설비(162)의 데이타 링크층(170)을 통해 다시 처리된다.
IP 및 데이타 링크층(206)에 종속되어, 루트 데이타베이스(208)는 종래의 routed 데모 어플리케이션의 제어와 방향하에서 유지된다. 이것과 mount 따위의 관련 데모는 백그라운드 프로세스처럼 어플리케이션 프로그램층내에서 실행된다. 네트워크 통신설비(162)내에서 나타나는 루트 데이타베이스(208) 및 루트 데이타베이스(174)간의 동질성을 유지하기 위하여, 어플리케이션 프로그램층 및 호스트 설비(168)의 커널 기능간의 인터페이스로 제공되는 시스템 호출층(212)은 본 발명에 따라 변형된다. 변형은 설비간 통신 트랜잭션에 의해 메시징 커널층(194)으로부터 메시징 커널층(178)으로 제공될, 루트 데이타베이스(208)로 향하는 갱신 정보를 포함하는 메시지를 데모로부터 등록하기 위해 제공된다. 그러한 메시지가 수신되면, 메시징 커널층(178)은 적절한 갱신을 루트 데이타베이스(174)로 향하게 한다.
시스템 요청층(212)은 소켓으로 알려진 종래의 인터페이스층(214)을 경유하여 TCP/UDP 층으로 억세스하기 위해 제공된다. 저급 어플리케이션 프로그램은 시스템 요청층(212)을 사용하여 장치구동기(200)상에서 직접 호출함으로써 데이타 저장시스템을 직접 억세스할 수 있다. 시스템 호출층은 NFS 사용자(202) 및 UFS(198)로의 억세스 또는 그에 의한 억세스를 위해 VFS(196)과 인터페이스된다.
또한, 본 발명의 바람직한 실시예에 의해서 제공된 바와 같이, VFS(196)는 또한 지역 화일시스템(LFS) 사용자층(216)과 인터페이스된다. 종래의 VFS(196)는 다중 화일시스템간의 논리관계 및 다중 화일시스템으로의 억세스를 처리하기 위한 mount 모델을 실현한다. 이 모델에 의해, 화일시스템은 VFS(196)과 인터페이스되는 지정 화일시스템 층에 대해 설치된다. 화일시스템은 화일시스템 ID(FSID)로서 할당된다. FSID 식별 화일시스템에 대한 VFS(196)의 후속하여 요청되는 화일 운영은 적절한 화일시스템으로 향하게 된다.
본 발명에 따라, LFS 사용자층(216)은 화일시스템 설비(164)을 통해 설치된 화일시스템의 논리적인 설치에서 활용된다. 즉, VFS(196)에 나타난 호스트 설비의 화일지향 요청은, 그 FSID에 기초하여 LFS 사용자층(216)을 통해 메시징 커널층(194)으로 방향을 전환하고, 차례로 UFS(182)에 의해 서비스하기 위한 화일시스템 설비(164)의 메시징 커널층(180)으로 방향을 전환한다. 모델은 네트워크 화일시스템 요청을 처리하기 위해 확장된다. 그러면, 사용자 워크스테이션은, VFS(196)을 통해 사전에 수출된 화일시스템을 위한 설치요청을 등록한다. 설치요청은 네트워크 통신설비(162)에 의해 궁극적으로 호스트 설비(194)의 어플리케이션층(210)내에서 실행되는 설치 데모로 향하게 된다. 설치된 데모 응답은 수출이 성공적이라면 차례로 사용자에게 화일시스템의 FSID를 제공한다. 그 후에, 네트워크 통신설비(162)에 의해 수신된 사용자의 NFS 화일시스템 요청은, 요청이 제공된 FSID에 기초하여, 요청된 화일시스템을 설치한 적절한 화일시스템 설비(164)로 방향이 재설정된다.
따라서, 화일시스템이 UFS(182)에 의해 설치되고 네트워크 통신 및 호스트 설비(162,168)를 통해 수출되면, 그 화일시스템의 화일지향 NFS 요청은 호스트 설비(168)로 통과하거나 호스트 설비(168)에 의해 처리될 필요는 없다. 오히려, 그러한 NFS 요청은 적절한 화일시스템 설비(164)로 직접 편리하게 경로설정이 이루어진다.
본 발명의 주요한 이익은 이하에서 명백히 드러난다. 네트워크 통신, 화일시스템, 기억장치 및 호스트 설비(162,164,166,168)의 독립적인 다중 실례를 허용하는 것 외에, 모든 NFS 요청의 즉각적인 요구조건은 VFS(196)의 실제적인 성능부담 및 종래의 유닉스 운영체제 커널의 상위부분을 포함함이 없이 제공될 수도 있다.
최종적으로, 호스트 설비(168)의 또다른 양상은 어플리케이션 프로그램층(210)내에서 실행될 때 관리 어플리케이션 프로그램에 의해 적절히 시스템 호출층(212)을 경유하거나 직접 메시징 커널층(194)에 억세스할 수 있다는 점이다. 이 관리 프로그램은 메시징 커널층(194)에 의해 유지되는 상태 누적 데이타구조로부터 성능 데이타를 선택하고 대응하는 설비간 메시지를 활용함으로써 메시징 커널층(178,180,186)내의 상태 데이타구조로부터의 누적된 상태정보를 선택할 수 있다.
B. 메시징 커널층 기능
메시징 커널층(178,180,186,194)은 각각 작고 효율적인 멀티 태스킹 커널을 포함한다. 그와 같이, 각각의 커널층은 단지 기본적인 운영체제 커널 서비스만을 제공한다. 이들 서비스는 단순하고 가벼운 프로세스 스케줄링, 메시지 통과 및 메모리 할당을 포함한다. 표준기능 및 프로세스의 라이브러리는 sleep(), wakeup(), 에러로깅 및 실시간 시계 따위의 서비스를 종래의 유닉스 커널의 이들 함수와 사실상 유사한 방식으로 제공한다. 아래의 리스트는 메시징 커널층(178,180,186,194) 각각에 제공되는 멀티 태스킹 커널의 원시함수의 주요기능을 요약한 것이다.
k_register(name) 지정된 서비스의 제공자로서 현재의 프로세스를 등록한다.
k_resolve(name) 지정된 서비스용 프로세서 ID를 복귀시킨다.
k_send(msg,pid) 메시지가 복귀할 때까지 특정 프로세스 및 블록에 메시지를 전송한다.
k_reply(msg) 수신된 메시지를 그 전송자에게 복귀시킨다.
k_null_reply(msg) (메시지는 다시 복사될 필요가 없기 때문에 k_reply(msg) 보다 빠르게) 변형되지 않은 메시지를 전송자에게 복귀시킨다.
k_receive() 메시지가 이 프로세스로 전송될 때까지 차단한다.
메시지 커널층(178,180,186,194)의 균형은 설비와 주어진 설비가 또다른 설비를 요청하는 기능의 균형의 견지로부터 추정적으로 실현되는 루틴으로 이루어진다. 이들 루틴은 NFS 스택, UFS, 기억장치 구동기 또는 호스트 운영체제를 지원하는데 필요한 특정 인터페이스 기능을 제공하기 위해 멀티 태스킹 커널에 의해 제공되는 기능함수를 전제로 하여 성립된다. 그러한 루틴은 실제로 그들이 호출되는 기능을 수행하지 않기 때문에, 스텁 루틴으로 언급될 수도 있다.
C. 설비간 통신(IFC) 시스템
동종설비간의 정보통신은 일련의 통신트랜잭션으로서 수행된다. 요청 메시지 및 응답 메시지로서 한정되는 트랜잭션은, 다른 사람들이 성능데이타를 모으거나 진단을 수행하기 위해서 청취한다 하더라도 한쌍의 메시징 커널층 사이에서 발생한다. 단일트랜잭션은 중지될 수도 있다. 즉 응답 메시지는 대기될 수 있는 반면, 수신 메시징 커널층은 또다른 동종의 설비로 분리 통신트랜잭션을 초기화한다. 두번째 트랜잭션의 응답 메시지가 수신되면, 초기 통신트랜잭션에 대한 적절한 응답이 행해진다.
1. 메시지 서술기 및 메시지
송신 및 수신 메시징 커널층간의 메시지 전송은 두단계로 이루어진다. 첫번째 단계에서는 송신 메시징 커널층이 메시지 서술기를 수신 메시징 커널층에 기록한다. 이는 메시지 서술기가 수신 동종 프로세서의 서술기 FIFO에 기록됨으로써 달성된다. 두번째 단계에서는 메시지 서술기에 의해 식별되는 메시지가 실제로 또는 암시적으로 송신 메시징 커널층으로부터 수신 메시징 커널층으로 복사된다. 이 복사는, 실제로 수행될 때, 송신 동종 프로세서의 공유메모리 공간으로부터 수신 동종 프로세서의 공유메모리 공간으로 복사를 메모리하는 메모리이다. 통신트랜잭션의 속성에 따라, 메시지 복사는 실제로 송신 또는 수신 동종 프로세서에 의해 수행되거나 특수 통신트랜잭션을 초기화한 메시징 커널층에 의해 유지된 원 메시지의 이미지를 참조로하여 암시적으로 수행된다.
메시지 서술기에 의해 식별된 메시지는 수신 메시징 커널층에 의해 평가되어 어느 것이 메시지와 함께 완료되었는가를 결정한다. 본 발명의 바람직한 실시예에 의해 사용되는 메시지 서술기가 제7도에 도시되어 있다. 메시지 서술기는, 필수적으로, 두 필드로 분할된 단일 32 비트 단어이다. 그다지 중요하지 않은 필드는 서술기 변형기를 저장하는데 사용되는 반면, 고차수 30 비트 필드는 메시지에 공유메모리 어드레스를 제공한다. 변형기 필드의 바람직한 값을 표 1에 나타내었다.
전송된 요청 메시지로 인해, 수신 메시징 커널층은 메시지 복사를 수행한다. 앞서의 메시지에 대한 응답인 메시지로 인해, 송신 메시징 커널층은 메시지 복사가 수행되어야만 하는지의 여부를 듣게된다. 즉, 메시지의 내용이 수신 메시징 커널층에 의해 변경되지 않았다면, 송신 메시징 커널층의 지역 공유메모리 공간내에서 원 메시지 이미지를 가리키는 메시지 서술기에 응답함으로써 가상의 복사가 수행될 수도 있다. 이와 유사하게, 전진형 통신트랜잭션으로 인해, 수신 메시징 커널층은 복사를 수행한다. 승인 메시지가 제공될 때, 메시지 전방 트랜잭션은 완료된다. 승인의 목적은 기준 메시지 버퍼를 그 자유 버퍼풀에 복귀시킬 수 있다는 것을 알도록 송신 메시징 커널층에 알리는데 있다.
메시지의 바람직한 블록서식이 제8도에 예시되어 있다. 메시지는 128 바이트를 차지하도록 한정되는 단일 데이타 구조이다. 메시지의 초기 32 비트 단어는 메시지 형태와 독특한 동종설비 식별기를 암호화한다. 그런 다음, 메시지의 문장은 필요한 채움을 추가함으로써 현대의 최대 문장한계에 이르게 된다. 본 발명의 바람직한 실시예에 있어서, 문장 길이는 84 바이트이다. 설비간 통신(IFC) 제어 데이타 블록이 제공되며, 다시 128 바이트 길이의 메시지를 완료하는데 필요한 어떠한 채움문자에 선행한다. 이 IFC 제어 데이타는 원 메시지의 어드레스의 복사, 현재의 메시지와 관련된 송신 및 수신(목적지) 프로세스 식별기 및 메모리내에서 구조를 관리하는데 요구되는 대기열 링크를 포함하는 것이 바람직하다. 대표적인 메시지 구조를 표 2로 나타내었다.
이 구조(K_MSG)는 메시지 형태 필드(K_MSGTYPE), 메시지 문장(msg[]) 및 IFC 블록(addr, m16_sender_pid, m16_sender_pid, m16_dest_pid, m16_link)를 포함한다. 이 K_MSG 구조는 표 3에 보인 화일시스템 설비 메시지 구조(FS_STD_T)에 의 해 좋은 예가 되는 지정 메시지를 요약하는데 사용된다.
FD_STD_T 구조는 정렬된 구조의 제로 바이트를 갖는 K_MSG 구조상에 오버레이된다. 이 복합 메시지 구조는 전송되기 전에 메시지의 서식화의 일부로서 생성된다. 특정 메시지 환경에 적절한 다른 메시지 구조가 사용될 수도 있다. 그러나, 모두 상기 서술한 K_MSG 메시지와 블록서식의 사용과 일관된다.
2. IFC 메시지 발생
메시지 및 메시지의 속성을 전송하는 것에 대한 결정은 동종 설비에 의해 결정된다. 특히, 동종의 프로세서상에서 실행되는 프로세스가 데이타를 저장하거나 검색하고 그렇지 않으면 홀로는 서비스될 수 없는 어떤 조건을 처리하는 등의 또다른 동종설비의 지원을 필요로 할 때, 동종설비는 요구되는 기능 또는 지원을 요청하는 메시지를 발행한다. 본 발명에 따라 이 메시지는 설비가 종래의 유니프로세서 구성내에서 이루어지는 동일한 기능 호출에 응답하여 초기화된다. 즉, 종래의 단일 프로세서 소프트웨어 시스템에 있어서, 소정 기능의 실행은 서비스 루틴을 차례로 결정하고 호출하는 적절한 루틴을 호출함으로써 달성될 수도 있다. 이는 제9도에 예시되어 있다. 화살표(300)로 나타낸 루틴(A)에 대한 기능 호출은 루틴(B)를 선택하고 호출(302)할 수도 있다. 기능을 수행할 필요가 있다면, 루틴(B)는 또다른 루틴을 호출(304)할 수도 있다. 궁극적으로, 루틴(B)에 의해 호출되는 어떠한 함수도 함수(A)로 복귀하는 함수(B)로 복귀한다. 그런 다음, 함수(A)는 요청된 함수호출이 완료되면 복귀한다.
본 발명에 따라, 독립적인 동종설비가 각각의 프로세서상에서 실행될 수 있도록 여러 가지 메시징 커널층이 제공되었다. 이는 제10도에 도시되어 있으며, 함수(A',B')는 두 동종설비의 메시징 커널층을 나타낸다. 루틴(A)으로부터의 함수호출은(302)은 메시징 커널(A')에 대해 행해진다. A'가 호출된 지정함수를 실현하지 않는다 하더라도, 메시징 커널층(A')이 루틴(A)에 의해 요청되는 함수를 암시적으로 식별하고 루틴(B)이 실제로 요청되는 함수를 수행하는데 필요한 관련 함수호출 데이타를 수신할 수 있도록 스텁루틴이 제공된다. 메시징 커널층(A')은 호출 데이타를 포함하는 메시지를 준비하고 메시지 서술기(306)를 적절한 메시징 커널층(B')에 전송한다. 메시지가 새로은 통신트랜잭션을 초기화하고 있다고 가정할 경우, 메시징 커널층(B')은 메시지를 공유메모리에 복사한다.
메시지 형태에 기초하여, 메시징 커널(B')은 호출될 필요가 있는 지정 함수루틴(B)을 식별한다. 스텁루틴중 하나를 활용함으로써 메시지에 의해 전송된 데이타를 포함하는 호출은 루틴(B)에 대해 행해진다. 루틴(B)이 호출된 스텁 프로세스로 복귀하면, 메시징 커널층(B')은 메시징 커널층(A')에 대한 적절한 응답 메시지를 준비한다. 복귀하는 루틴(B)은 메시징 커널층(A')으로 또한 전송되어야 하는 복귀함수의 상태 따위의 기즌 데이타일 수도 있다. 이 데이타는 메시지가 A' 동종 프로세서의 공유메모리 공간으로 다시 복사되기 전에 메시지내로 복사된다. 메시지 복사는 원 메시지가 A' 동종 프로세서상에서 저장되었던 공유메모리 위치에 행해진다. 따라서, 응답 메시지의 목적지 저장위치를 식별하기 위해 두개의 메시징 커널층간에 대화할 필요없이 원 메시지의 이미지는 논리적으로 갱신된다. 그런 다음, 메시지를 가리키는 응답 메시지 서술기는 메시징 커널층(A')으로 전송된다.
메시징 커널층(A')은, 메시지 서술기와 메시지의 메시지 형태 필드의 연속적인 평가에 따라, 결과로서 지금 수신되는 응답 메시지가 되는 특정 프로세스를 식별할 수 있다. 즉 응답 메시지내에서 전송되고 이제 복귀된 원 메시지내에 제공된 프로세스 ID가 판독된다. 따라서, 메시징 커널층(A')은 응용가능한 응답 메시지를 구비하여 관련 프로세스 문맥내에서 호출 루틴(A)으로 복귀한다.
두 메시징 커널층의 관계의 매우 좁은 예가 제11도에 도시되어 있다. 제1메시징 커널층(310)은, 예를 들어, 네트워크 통신 동종설비(162)의 메시징 커널층(178)을 나타낸다. 그러한 경우, 스텁 루틴(A1-X)의 시리즈는 완전한 NFS 스택 인터페이스 및 직접 호출하거나 메시징 커널층(178)에 의해 호출되는 네트워크 통신설비의 모든 다른 함수에 대한 인터페이스를 포함한다. 따라서, 메시징 커널층에 대한 각각의 호출은 요청되는 함수의 형태 및 호출을 행하는 프로세스의 문맥에서 독특하게 식별가능하다. 메시징 커널층이 그 네트워크 통신설비의 NFS 스택에 의해 실현되는 함수를 호출하는 경우, 프로세스가 할당되어 호출은 독특한 문맥내에서 동작한다. 따라서, 스텁 루틴으로의 또는 그에 의한 호출은 각각 호출 또는 응답 프로세스의 프로세스 ID, PID에 의해 식별가능하다.
스텁 루틴(A1-X)에 대한 호출 프로세스는, 호출이 행해지면, 메시징 커널층내에서 실행을 시작한다. 이 실행은 함수호출 데이타를 수신하고 대응하는 메시지를 준비함으로써 호출을 서비스한다. 이는, 논리적 프로세스를 예시하기 위한 목적으로, 논리적 호출서식 버블(A1-X)에 의해 처리되는 것으로 보여진다. 메시지 버퍼는 메시지 대기열에 할당되고 부착된다. 호출되는 특정 스텁 루틴에 따라, 메시지의 내용은 다른 지정 메시지 데이타 구조에 의해 한정된 다른 데이타를 포함할 수도 있다. 즉, 각각의 메시지는 함수호출 데이타 및 호출 프로세서의 PID를 사용하여 적절한 호출서식 버블(A1-X)에 의해 서식화된다.
그런 다음, 메시지는 전송을 위한 A 메시지 상태 머신으로 논리적으로 통과된다. A 메시지 상태 머신은, 먼저 메시지의 위치를 식별하는 메시지 서술기를 등록하고 예를 들어 그것이 전송된 새로운 메시지임을 나타내므로서 메시지 전송을 초기화한다.
메시지 서술기의 목적지는 의도되는 목적지 동종 프로세서상에 나타나는 메시지 서술기 FIFO의 공유메모리 어드레스이다. 지정 메시지 서술기 FIFO는 호출된 스텁 루틴 및 호출이 제공된 데이타에 기초하여 효과적으로 선택된다. 즉 예를 들어, 메시징 커널층(178)은 특정 화일시스템을 설치한 특정 화일시스템 설비(164)에 대한 호출이 제공된 FSID와 상관된다. 메시징 커널층(178)이 화일시스템 설비(164)와 FSID를 상관시킬 수 없으면, 화일시스템 수출 및 설치실패의 결과로서, NFS 요청은 에어를 가지고 사용자에게 복귀된다.
메시지 서술기가 적절한 동종설비의 메시징 커널층(312)으로 통과하면, 메시징 커널층(310)의 멀티 태스킹 커널은, 응답 메시지가 수신될 때 까지 송신 프로세스를 차단한다. 한편, 층(310) 커널의 멀티 태스킹은 메시지 서술기 FIFO로부터 메시지 서술기를 판독함으로써 초기화된 도입 메시지를 계속해서 처리하고, 메시지가 스텁루틴(A1-X)를 통해 수신된 호출에 기초하여 전송되도록 요청한다.
메시징 커널층(312)은 메시징 커널층(310)과 유사하지만, 특히 호출 서식, 복귀 서식 및 스텁 루틴(B1-X)에 대한 층의 실현은 A층의 대응부와는 다르다. 예를 들어, 메시징 커널층(312)이 화일시스템 설비(164)의 메시징 커널층(180)인 경우, 스텁 루틴(B1-X)은 또다른 설비로부터의 메시지에 응답하여 직접 호출되거나 또다른 설비를 위한 함수호출을 수신할 수도 있는 장치구동기(188) 및 UFS(182)의 기능을 매칭시킨다. 따라서, B 메시지 분석기에 의해 대표되는 메시지, 호출 서식 및 복귀 서식 버블이 준비 및 처리는 화일시스템 설비에 적합하게 맞춰진다. 이러한 차이를 제외하면, 메시징 커널층(310,312)은 동일하다.
메시징 커널층(312)의 멀티 태스킹 커널에 의해 실현되는 B 메시지 상태 머신은 메시지 서술기 FIFO로부터 메시지 서술기를 판독하는 동종 프로세서의 결과로서 메시지 서술기를 수신한다. 메시지 서술기가 새로운 메시지 트랜잭션을 초기화하는 경우, 즉 메시지 변형기가 0이거나 2인 경우, B 메시지 상태 머신은 메시지 서술기에 의해 지시된 메시지를 동종 프로세서의 지역 공유메모리내의 새로이 할당된 메시지 버퍼내에 복사한다. 메시지 변형기에 의해 메시지가 존재하는 메시지 트랜잭션에 대한 응답인 것으로 나타나면, B 메시지 상태 머신은 메시지가 메시지 서술기에 의해 식별된 사전 할당된 버퍼에 이미 복사된 것으로 추정된다. 최종적으로, 메시지 서술기 변형기가 메시지에 의해 지시된 메시지가 자유롭게 된 것임을 나타내면, B 메시지 상태 머신은 B 멀티 태스킹 커널의 자유로운 메시지 버퍼풀로 그것을 복귀시킨다.
수신된 메시지는 초기에 검사되어 메시지 형태를 결정한다. 이 단계는 B 메시지 분석기 버블에 의해 예시되어 있다. 메시지 형태에 기초하여, 대응하는 데이타 구조가 선택되고, 그에 의해 메시지는 적절히 판독될 수 잇다. 관련 서비싱 목적지 프로세스의 프로세스 ID는 또한 메시지로부터 판독되며 문맥 스위치가 행해진다. 메시지의 상세한 판독은 일련의 복귀 서식 버블(B1-X)로서 도시되어 있다. 메시지가 판독되면, 메시징 커널층(312)은 스텁 루틴을 선택하여 수신된 메시지에 의해 요청된 함수를 적절히 수행하며, 스텁 루틴을 통해 함수호출을 수행한다. 또한, 함수호출을 수행함으로써 메시지에 의해 포함되는 데이타는 호출된 루틴으로 전송될 수 있도록 적절히 서식화된다.
3. IFC 통신프랜잭션
제12도는 네트워크 통신설비 또는 지역 호스트 설비가 본 발명의 디스크 어레이(24)로부터 인지된 데이타를 획득할 수 있도록 사용되는 일련의 통신트랜잭션을 보인 것이다. 유사한 일련의 통신 트랜잭션은 디스크 어레이로부터 디렉토리를 판독하고 따른 디스크 관리 데이타를 판독하는데 사용된다. 명확히 하기 위하여, 메시지의 전송은 시간을 기준으로 하여 설명되지만, 시간은 일정한 척도를 이루어져 있지는 않다. 또한 명확히 하기 위해, 메시지 구조를 의사적으로 도시하여 메시지를 준비하는 여러가지 양상을 설명하기로 한다.
a. LFS 판독트랜잭션
시간(t)에서, NFS 판독요청은 네트워크 통신설비(162)의 메시징 커널층(178)에 의해 실행(송신) 프로세스(PID=A$$)로부터 수신된다. 그렇지 않고, t에서의 판독요청은 등가의 LFS 판독요청을 등록하는 호스트 프로세스로부터 이루어질 수 있다. 각각의 경우, 대응하는 LFS 메시지 (message#1)가 준비된다(message#1.msg_type=fc_read; message#1. sender_pid=a$$; message#1.dest_pid=B$$).
목적지 프로세스(PID=B$$)은 판독요청이 제공된 FSID에 의해 식별된 화일시스템을 설치한 화일시스템 설비의 관리자 프로세스로서 메시징 커널층(178,194)에 인지된다. FSID와 특정 FS 설비의 PID를 관련시키면 모든 메시징 커널층의 초기화를 이룰 수 있다.
일반적으로, 적어도 하나의 관리자 프로세스는 각각의 메시징 커널층을 초기화하는 동안 생성된다. 이들 관리자 프로세스는 직간접으로 호스트 설비상에서 실행되는 네임서버 관리자 프로세스(SC_NAME_SERVER)로 레지스터한다. 후속하여, 다른 관리자 프로세스는 네임서버 관리자에게 또다른 관리자 프로세스의 PID를 획득했는지를 물어본다. 간접적인 관계로 인해, 네임서버 관리자 프로세스로 레지스터되는 감독하는 관리자 프로세스는 감독하는 관리자 프로세스의 PID와 관련하여 질의를 받을 수 있다.
예를 들어, 이름이 화일시스템 집행자(FC_VICE_PRES)인 단일 프로세스가 활용되어 시스템(16)내의 잠재적인 다중 FS 설비를 감독한다. FC_VICE_PRES 프로세스는 직접 네임서버 관리자(SC_NAME_SERVER) 프로세스로 레지스터된다. 각각의 FS 설비의 관리자 프로세스는 화일시스템 집행자(FC_VICE_PRES) 프로세스로 레지스터하고, 따라서 간접적으로 네임서버 관리자(SC_NAME_SERVER)에 인지된다. 개개의 FS 관리자 프로세스는 설치된 화일시스템의 주어진 FSID로 레지스터된다. 따라서, 네임서버 관리자(SC_NAME_SERVER)는 지정된 화일시스템 집행자(FC_VICE_PRES)의 PID와 관련하여 NC 설비에 의해 질의될 수 있다. 그런 다음, NC 설비는 FSID에 의해 식별된 화일시스템으로의 억세스를 제어하는 지정되지 않은 관리자 프로세스의 PID와 관련하여 질의를 할 수 있다.
감독하지 않은 관리자 프로세스의 기능은 메시지의 인지된 목적지가 되는 것이다. 따라서, 그러한 관리자 프로세스는 초기에 통신트랜잭션내에 수신된 메시지를 처리한다. 각각의 메시지는 처리를 위한 적절한 지역 사용자 프로세스에 할당된다. 따라서, 여러 가지 설비는 요청된 메시지를 전송하기 위해, 사용자 프로세스의 PID가 아닌 또다른 설비의 관리자 프로세스의 PID만을 알 필요가 있다.
t에서, 점선 화살표로 나타낸 대응하는 메시지 서술기(md#1vme_addr;mod=0)은 FS의 메시징 커널층(180)으로 전송된다.
t에서, FS 메시징 커널층(160)은 평가를 위해 실선 화살표로 나타낸 바와 같이, 메시지(message#1)를 복사하고, 사용자 프로세스를 할당하여 요청을 처리하며, 사용자 프로세스의 문맥내에서 VFS(182)의 요청된 함수를 호출한다. 요청된 데이타가 이미 메모리 자원(18')내에 존재하면, S 메시징 커널층(186)과의 통신트랜잭션은 요구된지 않으며, FS 메시징 커널층(180)은 즉시 t에서 연속한다. 그러나, 디스크 판독이 요구되면, 메시징 커널층(180)은 UFS(182)에 의해 지향되어 또다른 통신트랜잭션을 초기화함으로서 기억장치 설비(166)에 의해 데이타의 검색을 요청한다. 즉, UFS(182)는 기억장치 구동기에 메시징 커널층(180)의 스텁 루틴을 호출한다. 메모리 자원(18')(message#2.msg_type=sp_read;message#2.vme_addr=xxxxh;message#2.seder_pid=B$$;message#2.dest_pid=C$$)내의 버퍼 위치를 참조하는 벡터 어드레스를 포함하는 메시지(message#2)가 준비된다. t에서, 대응하는 메시지 서술기는 S 메시징 커널층(186)으로 전송된다.(md#2vme_addr; mod=0).
t에서, S 메시징 커널층(186)은 평가를 위해 메시지(message#2)를 복사하고, 사용자 프로세스를 할당하여 요청을 처리하고 사용자 프로세스의 문맥내에서 장치 구동기(188)의 요청된 함수를 호출한다. t및 t사이에서, 요청된 데이타는 메모리 자원(18')내의 메시지 지정위치(message#2.vme_addr=xxxxh)로 전송된다. 완료될 때, 장치 구동기는, 예를 들어 데이타 전달의 성공적(err=0)인 또는 성공적이지 않은(err=-1) 상태를 가지고 S 메시징 커널층(186)의 호출 스텁루틴으로 복귀한다. 에러가 있는 경우, 메시지는 갱신되고(message#2.err=-1) t에서 메시징 커널층(180)(md#2vme_addr)에 복사된다. 응답 메시지 서술기(md#2vme_addr; mod=1)는 t에서 FC 메시징 커널층(180)으로 전송된다. 그러나, 에러가 없는 경우, k_null_reply(msg)가 사용된다. 이로부터 t에서는 변형되지 않은 메시지가 복사되지는 않고, t에서 응답 메시지 서술기(md#2vme_addr; mod=1)가 전송된다.
메시지 서술기와 응답 메시지(message#2)가 처리되면, FS 메시징 커널층(180)은 차단되고 UFS(182)의 호출 프로세스로 복귀한다(message#2.sender_pid=B$$). 오염된 처리가 완료된 후, 데이타 전송을 지원하거나 완료하기 위해 요청된 기억장치 설비와의 추가적인 통신트랜잭션을 포함하여, UFS(182)는 먼저 UFS(182)를 호출했던 스텁 루틴으로 복귀한다. 메시지는 메모리 자원(18')내의 상태 및 데이타 위치를 가지고 갱신되며(message#1.err=0; message#2.vme_addr=xxxxh=message#1.vme_addr=xxxxh) t에서 메시징 커널층(178,194)(md#1vme_addr)에 복사된다. 그런 다음, 응답 메시지 서술기(md#1vme_addr; mod=1)는 t에서 NC 또는 지역 호스트의 메시징 커널층에 적절히 전송된다.
메시징 커널층(178,196)은 응답 메시지 서술기 및 관련 메시지를 처리한다. t및 t사이에 나타낸 바와 같이, 요청 프로세스(PID=A$$) 문맥내에서 메시징 커널층(178,196)은 메모리 자원(18')으로부터 요청된 데이타를 동종 프로세서의 지역 공유메모리내에 복사한다. 완료되면, 메시징 커널층(178,196)은 최종 메시지(message#3)를 준비하여 FS 메시징 커널층(180)과 일련의 통신트랜잭션을 체결한다. 이 메시지는, FS 설비에 의해 메시지 형태로 갱신되어 FC 설비에 요청된 데이타 공간(message#3vme_addr=xxxh)이 확보될 필요가 없음을 통지한다 하더라도, 첫 번째 메시지(message#3=message#1)과 동일하다. 이러한 방식으로, FC 설비는 메모리 자원(18')에 걸쳐 편리하고 집중화된 제어를 유지할 수 있다. 대응하는 메시지 서술기(md#3vme_addr=md#1vme_addr; mod=0)은 t에서 전송된다.
t에서, 응답 메시지(message#5)는 FC 메시징 커널층(180)에 의해 복사되고, UFS(182)의 적절한 디스크 버퍼 관리함수가 관련 관리자 프로세스(message#3.dest_pid=B$$)의 사용자 프로세스의 문맥 내에서 호출되어 버퍼 메모리(message#3.vme_addr=xxxxh)를 해제한다.
UFS 메모리 관리 루틴이 완료되면, 관련 사용자 프로세스는 FS 메시징 커널층(180)의 스텁 루틴으로 복귀한다. 사용자 프로세스 및 메시지(message#3)는 FS 설비에 대해 해제되며, 응답 메시지 서술기(md#3vme_addr; mod=1)는 메시징 커널층(178,196)으로 복귀한다.
최종적으로, t23에서, 메시징 커널층(178,196)은 관련 프로세스(PID=A$$)의 문맥내에서 호출 루틴으로 복귀한다. 이러한 복귀를 통해, 지역 공유메모리내의 검색 데이타의 어드레스가 제공된다. 따라서, 관련 프로세스는 요청되면, 즉각 데이타를 억세스할 수 있다.
b. LFS 기록트랜잭션
제13도는 디스크에 LFS 기록을 실현하는데 사용되는 일련의 통신트랜잭션을 보인 것이다.
시간(t)에서, LFS 기록 요청은, NFS 기록 요청에 응답하여 실행 프로세스(PID=A$$)로 부터 네트워크 통신설비(162)의 메시징 커널층(178)에 의해 수신된다. 그렇지 않으면, t에서의 LFS 기록요청은 호스트 프로세스로부터 이루어질 수 있다. 다른 경우, 대응하는 메시지(message#1)가 준비되며(message#1.msg_type=fc_write;message#1.sender_pid=A$$; message#1.dest_pid=B$$) t에서 그 메시지 서술기(md#1vme_addr; mod=0)는 FC 메시징 커널층(180)으로 전송된다.
t에서, FC 메이징 커널층(180)은 평가를 위해 메시지(message#1)를 복사하고 사용자 프로세스를 할당하여 UFS(182)의 요청된 함수를 호출하는 관리자 프로세스(PID=B$$)에 의해 요청을 처리한다. 이 UFS 함수는 메모리 자원(18')내에 디스크 버퍼를 할당하고, 버퍼와 관련된 벡터 어드레스(vme_add=xxxxh)를 FC 메시징 커널층(180)으로 복귀시킨다. 메시지는 다시 갱신되고 (message#2.vme_addr=xxxxh) 메시징 커널층(178,194)(md#1vme_addr)에 복사된다. 응답 메시지 서술기(md#1vme_addr; mod=1)는 t에서 메시징 커널층(178,194)로 다시 전송된다.
t및 t사이에서, NC 또는 호스트 설비의 관련 프로세스(PID=A$$)는 데이타를 메모리 자원(18')에 복사된다. 완료될 때, 메시징 커널층(178,194)이 t에서 다시 호출되어 기록 요청을 완료한다. 새로운 메시지(message#2=message#1)가, 메모리 자원(18')으로 전송된 데이타의 양과 메시지 형태(message#2msg_type=fc_write_release)를 가지고 갱신된다 하더라도, 준비됨으로써 FS 설비는 데이타의 배열에 관한 제어를 하게됨을 암시하게된다. 이 메시지는 message#1의 유용한 메시지 버퍼를 활용함으로써 새로운 메시지 버퍼를 할당하거나 message#1으로부터 데이타를 복사할 필요성을 제거한다. 이 메시지의 메시지 서술기(me#2vme_addr=md#1vme_addr; mod=0)는 t에서 전송된다.
메시지는 FC 메시징 커널층(180)에 의해 복사되며, 관련 관리자 프로세스(message#2.dest_pid=B$$)에 의해 사용자 프로세스에 제공된다. 관련 메시지 서술기가 t에서 즉시 메시징 커널층(178,194)에 다시 제공되어 지역 공유메모리 버퍼를 해제하는 한, 본 발명은 데이타가 승인전에 디스크에 기록되기를 요청함으로써 데이타 동질성의 전략에 적합하게 된다. 따라서, t에서 메시지를 복사하게 되면, 메시징 커널층(180)은 UFS(182)를 호출하여 데이타를 디스크 어레이(24')에 기록한다. UFS(182)는 관련 사용자 프로세스의 문맥내에서 메시징 커널층(180)을 호출하여 또다른 통신트랜잭션을 초기화함으로써 기억장치 설비(166)에 의해 데이타 밖으로 기록을 요청하게 된다. 따라서, 메시징 커널층(180)의 기억장치 구동기 스텁 루틴이 호출된다. 메모리 자원(18')내의 버퍼 위치의 공유메모리 어드레스(message#3.msg_type=sp_write;message#2.vme_addr=xxxxh; message#2.sender_pid=B$$; message#2.dest_pid=C$$)를 포함하는 메시지(message#3)가 준비된다. t에서, 대응하는 메시지 서술기가 S 메시징 커널층(186)으로 전송된다(md#3vme_addr; mod=0).
t에서, S 메시징 커널층(186)은 평가를 위해 메시지(message#30을 복사하며, 사용자 프로세스를 할당하여 장치 구동기(188)의 요청된 함수를 호출하는 관리자 프로세스(PID=C$$)에 의해 요청을 처리한다. t및 t사이에서 요청된 데이타는 메모리 자원(18')의 메시지 지정 위치(message#3.vme_addr=xxxxh)로부터 전송된다. 완료되면, 장치 구동기는 예를 들어 데이타 전달의 상태(err=0)를 가지고 S 메시징 커널층(186)의 호출 스텁 루틴으로 복귀한다. 메시지는 갱긴되며(message#3.err=0) t에서 메시징 커널층(180)(md#3vme_addr)에 복사된다. 그런 다음, 응답 메시지 서술기(md#3vme_addr; mod=1)는 t에서 FC 메시징 커널층(180)으로 전송된다.
메시징 서술기와 응답 메시지(message#3)를 처리하면, FC 메시징 커널층(180)은 UFS(182)(message#3.sender_pid=B$$)의 호출 프로세스로 복귀한다. 데이타 전달을 지원하거나 완료하는데 필요한 기억장치 설비와의 통신트랜잭션을 포함하여 요청된 UFS 처리가 완료된 후, UFS(182)는 메시징 커널층(180)으로 복귀한다. 이 점에서, UFS(182)는 메모리 자원(18')의 메모리 관리를 완료한다. t에서, 메시징 커널층(180)은 응답 메시지 서술기(md#2vme_addr; mod=1)를 메시징 커널층(178,196)으로 전송하여 데이타가 디스크 어레이 자원(24')으로 전달되었음을 나타낸다.
최종적으로, t에서, 메시징 커널층(178,196)은 관련 사용자 프로세스의 문맥내에서 호출 루틴으로 복귀한다.
c. NC/지역 호스트 전달트랜잭션
제14도는 NC 설비 프로세스(PID=A$$)로부터 지역 호스트 설비의 어플리케이션 프로그램 층내에서 실행되는 어플리케이션 프로그램에 제공되는 데이타의 통신트랜잭션 및 전송을 보인 것이다. 패킷은, 예를 들어, 루트 데이타베이스에 추가될 새로운 루팅정보를 포함할 수 있다. 그러나, NC 설비는 IP 패킷으로서의 식별 이외에는 비 NFS 패킷의 중요한 번역을 수행하지 않기 때문에, 패킷은 지역 호스트 설비로 통과된다. 지역 호스트는, 비 NFS 패킷의 속성을 인지하게 되면, 궁극적으로 번역을 위해 패킷에 의해 식별되는 IP 고객쪽으로 통과한다. 이 예에서, IP 고객은 루트 데모일 수 있다.
따라서, 트랜잭션은 t에서 시작되는 바, NC 메시징 커널층(178)은 메시지 서술기(md#1.vme_addr; mod=0)를 호스트 메시징 커널층(194)에 기록한다. 참고 메시지(message#1.msg_type=nc_recv_ip_pkt;message#1.sender_pid=D$$;message#1.dest_pid=E$$)는 t에서 호스트 메시징 커널층(194)에 의해 복사된다. 그러면, 응답 메시지 서술기(md#1.vme_addr; mod=3)는 t에서 NC 메시징 커널층(178)으로 복귀한다.
패킷은 지역 호스트 메시징 커널층(194)에 의해, 처리하고 적절한 어플리케이션 프로그램으로 전달하기 위한 지역 호스트 설비의 TCP/UDP층(204)으로 통과한다.
t에 도시한 바와 같이, 어플리케이션 프로그램은 직접 또는 시스템 호출층을 통해 간접적으로 호스트 메시징 커널층(194)을 호출한다. 이 호출은, 예를 들어, 시스템 호출층을 호출하여 호스트의 IP 루트 데이타베이스를 갱신할 수 있도록 하는 어플리케이션 프로그램의 결과로서 등록될 수 있다. 초기에 언급한 바와 같이, 이 호출은 변형되어 호스트 메시징 커널층(194)를 호출함으로써 메시지를 NC 설비에 전송함으로써 IP 루프 데이타베이스를 유사하게 갱신한다. 따라서, 메시지 서술기(md#2.vme_addr; mod=0)는 t15에서 NC 메시징 커널층(178)으로 전송된다. 참고 메시지(message#2.msg_type=nc_add_route; message#2.sender_pid=E##; message#2.dest_pid=D$$)는 t에서 NC 메시징 커널층(178)에 의해 복사된다. NC 메시징 커널층(178)은 NC 설비함수를 호출하여 IP 루트 데이타베이스를 갱신한다. 최종적으로, 응답 메시지 서술기(md#2.vme_addr; mod=1)는 t에서 지역 호스트 메시징 커널층(194)으로 복귀한다.
d. NC/NC 루트 전달트랜잭션
제15도는 두 NC 설비 프로세스의 데이타 패킷의 루팅 및 브리징을 예시한 것이다. 두 NC 프로세스는 분리된 동종 프로세서상에서 실행될 수도 있거나 동일한 NC 설비내에서 실행되는 두 병렬 프로세서로서 존재할 수도 있다. 예를 들어, 패킷은 제1프로세스(PID=A$$) 내에서 IP층으로서 차단된다. IP층은 패킷이 루트되어 메시징 커널층(178)을 호출함으로써 적절한 메시지(message#1)를 준비하는 논리적인 NC 설비를 식별한다. 데이타 패킷은 저장 NC 설비를 위해 보류되는 메모리 자원(18')의 일부에 복사되며, 이 메모리는 FS 설비의 제어를 받지 않는다.
따라서, t에서, NC 메시징 커널층(178)은 메시지 서술기(md#1.vme_addr; mod=0)를 제2메시징 커널층(178)에 기록한다. 참고 메시지(message#1.msg_type=nc_forward_ip_pkt;message#1.sender_pid=F$$;message#1.dest_pid=G$$;message#1.vme_addr=xxxxh; message#1.ethernet_dst-net=xx)는 t에서 제2NC 메시징 커널층(178)에 의해 복사된다. 데이타 패킷은, T및 T사이에서, 메모리 자원(18')으로부터 제2NC 동종 프로세서의 지역 공유메모리로 복사된다.
제1NC 설비가 메모리 자원(18')의 일부를 관리해야만 하기 때문에, 제2NC 메시징 커널층(178)은, t에서 응답 메시지 서술기(md#1.vme_addr; mod=1)를 다시 제1NC 메시징 커널층(178)으로 복귀시킨다. 이것은 제1 NC 설비에게 메모리 자원(18') 데이타 공간(message#1.vme_addr=xxxxh)가 더 이상 확보될 필요가 없음을 알린다. 이러한 식으로, 제1NC 설비는 메모리 자원(18')이 일부에 대해 편리하고 집중적으로 제어를 할 수 있게 된다.
패킷 데이타는 제2NC 메시징 커널층(178)에 의해 처리를 위한 NC 설비의 IP층으로 통과된다.
4. 상세한 통신트랜잭션 메시지, 구문 및 어의
[통신트랜잭션 기호법]
통신트랜잭션을 서술하는데 사용되는 간략한 기호법이 개발되었다. 이 기호법은 통신트랜잭션을 실현하는 코드를 직접 표현하지는 않고 그것들을 설명하는데 사용된다. 기호법의 예 및 설명은 주어진 화일의 속성을 요청하는 LFS 형태의 통신터랜잭션을 설명할 때 참조된다.
통신트랜잭션 :
fc_get_attributes(FILE,ATTRIBUTES);은 FS 설비로 전송되었을 때 메시지의 예상되는 서식인 FC_GET_ATTRIBUTES를 갖는 메시지가 예를 들어 typedef FILE이고, 메시지가 복귀되었을 때 그 서식이 typedef ATTRIBUTES임을 식별한다.
두번째 규칙은, 예를 들어 메시지를 원래 전송되었던 동일한 서식으로 복귀시킬 때 매우 명백해진다.
통신트랜잭션:
get_buffer(BUFFER,***);는, 예를들어 NC 설비가 typedef BUFFER을 전송하고 메시지는 동일한 구조를 사용하여 복귀되는 통신트랜잭션을 설명한다.
설비가 변경되지 않은 메시지(k_null_reply())를 복귀시킴으로써 성공을 가리키면, 그에 대한 서식은 다음과 같다.
free_bufer(BUFFER,*);
때때로, 설비가 표준구조를 사용할 때 단지 필드중 일부만이 실제로 그 의미를 갖게된다. 다음의 기호법은 의미있는 필드를 식별한다.
get_buffer(BUFFER{data_len},
***{data_len,data_ptr});
이 통신트랜잭션 기호법은 get_buffer과 동일한 통신트랜잭션을 매우 상세히 설명한다. 설비는 특정 길이의 버퍼를 요청하며, 대응하는 설비는 버퍼의 실제 길이와 함께 포인터를 버퍼로 복귀시킨다.
a. FS 설비 통신트랜잭션
본 발명의 FS 설비가 인지하고 본 발명의 메시징 커널층의 다른 설비가 FS 설비와 적절히 대화하는 것으로 인지하는 통신트랜잭션을 아래의 표 4에 요약하였다.
이들 통신트랜잭션의 사용은 그 사용 시각으로부터 가장 잘 예증된다.
FC_VICE_PRES로 지칭되는 FS 설비 프로세스는 시스템(160)의 모든 FS 설비의 구성에 관계된다. 여러가지 예의 FS 설비를 구비하여도 단지 하나의 FC_VICE_PRES 프로세스가 존재한다. 실제로 대부분의 요청을 처리하는 지정되지 않은 하나 이상의 관리자 프로세스가 존재한다. 시스템(16)의 각각의 화일시스템 또는 디스크 분할은 특수 관리자에 속한다. 그러나, 관리자는 하나 이상의 화일관리자를 소유한다. 관리자는 지정되지 않기 때문에, 자레 화일시스템의 고객은 먼저 FC_VICE_PRES를 체크하여 적절한 관리자의 FS 설비 pid를 얻는다. 따라서, FC_VICE_PRES 프로세스는 실제로 작업을 행하지 않는다. 오히려, 요청을 적절한 관리자에게 보내는 간단한 일을 수행한다.
연속적인 서비스를 제공하기 위해, 관리자는 차단을 피해야만 한다. 관리자는 지정되지 않은 화일 제어기의 풀에 사용자 프로세스를 차단하는 요청을 맡긴다. 이들에 대한 상세한 내용은 FS 설비 사용자에게는 명확하게 나타나지 않는다.
FS 설비에 의해 사용되는 중요한 메시지 구조가 아래에 주어져 있다. 명확히 하기 위해, 통상적으로 사용되는 구조는 여기에서 설명하기로 한다. FSID(화일시스템 식별기)는 개개의 화일시스템을 식별한다. FSID는 단순히 화일시스템이 활성화된 디스크 어레이 분할을 위한 유닉스장치의 수이다. FC_FH 구조(화일제어기 화일 처리)는 개개의 화일을 식별한다. 그것은 FSID를 포함하여 inode 및 화일을 식별하기 위한 inode 발생과 함께 화일이 화일시스템에 속하는지를 식별한다.
[기동, 설치 및 해체]
동종 프로세서가 FS 설비의 예를 부트완료하면, 부트된 제1의 FS 설비가 차례로 요구되는 관리자를 생성하고 요청을 기다리는 FC_VICE_PRES 프로세스를 대량생산한다. 그 외에 화일시스템의 설치 및 해체를 조정하기 위한 몇가지 내부 요청은 다중 화일시스템 설비의 운영이다. 그것이 허용하는 요청은 다음과 같다.
fc_find_manager(FC_MOUNT_T,***{errno,fc_pid});
입력 메시지는 단지 대상이 되는 화일시스템을 식별하는 FSID만을 포함한다. 성공적인 복귀값은 이 화일시스템을 관리하는 관리자를 식별하는 FS 설비 프로세스 id이다. 관리자를 발견하였으면, 적절한 허가를 받은 고객 설비는 화일시스템이 사용자 요청에 대해 이용가능한지(mount) 사용자 요청에 이용가능하지 않은지(unmount)를 요청할 수 있다. 이들 요청은 VFS/LFS 고객 인터페이스를 통해 지역 호스트 설비에 의해 행해질 수 있다. 화일시스템의 설치 및 해체의 요청은 직접 고객 NC 설비로부터 수신되지 않는다.
트랜잰션:
fc_mount (FC_MOUNT_T,***{errno,fc_pid,file}); 은 요청된 화일시스템내의 루트 화일 처리를 복귀시킨다.
해체 트랜잰션:
fc_unmount (FC_STD_T{fsid},*{errno}); 는 에러코드를 복귀시킨다(트랜잭션 설명중 *는 k_null_reply()가 가능하고, 따라서 호출자는 errno를 제로로 설정하여 성공적인 응답을 검출해야만 하는 것을 나타낸다.
[데이타 전달 메시지]
전달 데이타를 필요로 하는 공통 요청은 4개이다. 이들은 FC_READ, FC_READDIR, FC_READLINK 및 FC_WRITE이다. FS 설비는 두개의 이미지 프로토콜을 가지고 이들 요청을 처리한다. 4개의 트랜잭션은 유사하며, 모두 FC_RDWR_T 메시지 구조를 사용한다.
typedef struct {
void *buf; /* 버퍼 id. 널이 아니면 유효*/
vme_t addr; /* 데이타에 대한 포인터 */
int count; /* 데이타 길이 */
}FC_BUF_DESC;
#define FC_RDWR_BUFS 2
typedef struct {
int type;
int errno;
union {
struct {
FC_CRED cred; /* 증명서 */
int flags;
FC_FH file;
int offset;
int count;
} in;
struct {
/* fc_release 메시지에 응답하여 사용되는
*/ 구조 */
FC_BUF_DESC bd[FC_RDWR_BUFS];/*버퍼서술기*/
FC_VATTR vattr;
} out;
} un;
} FC_RDWR_T;
FC_READ 트랜잭션은 약간 상세히 설명하기로 한다. 다른 트랜잭션은 비교하여 설명하기로 한다.
판독 데이타 통신트랜잭션은
fc_read (FC_RDWR_T{un.in},
***{errno,un.out.{bd,vattr}}); 이다.
고객 설비에 의해 송신되었을 때, union의 in 구조는 유효하다. 그것은 화일, 오프셋 및 카운트를 지정한다. FS 설비는 그 정보를 포함하는 버퍼를 잠근다. 일련의 S 설비와의 통신트랜잭션은 디스크로부터 화일을 판독하는데 필요하다. 그 응답에 있어서, FS 설비는 out 구조를 사용하여 화일의 속성 및 데이타를 보유한 VME 메모리 위치를 식별하는 버퍼 서술기의 어레이를 복귀시킨다. 버퍼 서술기는 그 buf 필드가 제로가 아닌 경우에만 유효하다. FS설비는 버퍼를 식별하기 위해 제로가 아닌 값을 사용하지만, 고객 설비에 있어서는 아무런 의미를 갖지 않는다. 속성과 버퍼서술기는 에러가 발생하지 않은 경우에만 유효하다. 화일의 끝에서 판독이 행해지면, 에러가 발생하지 않지만, 응답내의 모든 버퍼서술기는 NULL buf를 갖는다.
고객 설비는 버퍼로부터 데이타를 판독한 후, 동일한 메시지를 FS 설비로 다시 전송한다. 이때의 트랜잭션은
fc_release ( FC_RDWR_T{un.out.bd],*{errno}): 이다.
이 fc_release 요청은 fc_read 요청에 의해 복귀된 동일한 메시지를 사용해야만 한다. fc_read에 대한 응답으로, FS 설비는 이 작업을 수행할 수 있도록 메시지의 메시지 type 필드를 설정한다. 다음의 의사 코드 단락은 순차를 나타낸다.
msg = (FC_RDWR_T*)k_alloc_msg();
initialize_message;
msg = k_send(msg,fc_pid);
copy_data_from_buffers_into_local_memory;
msg = k_send)msg,fc_pid);
동일한 메시지 또는 정확히 중복되는 것은 FS 설비가 버퍼를 비게 하기 위해 필요로 하는 정보를 포함하기 때문에 복귀되어야만 한다.
표 4의 통신트랜잭션의 요약이 단지 하나의 fc_release 트랜잭션을 보여주고 있지만, 실제로는 4개이다. 각각의 데이타 전달의 형태는 fc_read_release, fc_write_release, fc_readdir_release 및 fc_read_link_felease 이다. FS 설비는 제2의 메시지의 type필드를 설정하기 때문에, 이것은 고객 설비에 어떤 차이를 나타내지 않는다.
복귀된 원래의 판독 트랜잭션이 에러이거나 버퍼 서술기중 어느 것도 유효하지 않은 경우, 해제는 선택적이다.
FC_WRITE 트랜잭션은 FC_READ와 동일하지만, 고객 설비는 그로부터 판독하는 대신 버퍼 서술기에 의해 식별된 위치에 기록하는 것으로 예상된다.
FC_READDIR 트랜잭션은 이와 유사하게 판독하고 기록하지만, 화일속성은 복귀되지 않는다. 또한, 지정된 오프셋은 마법 쿠키로서 또한 언급되고 절대 오프셋 대신 화일내의 디렉토리 엔트리를 식별하는 마방 값 이다. 이는 readdir의 상사 VFS/VOP 및 NFS 버젼내의 어프셋의 의미에 부합된다. 복귀된 버퍼의 내용은 종래의 유닉스 getdents 시스템 호출 설명서에 설명된 dirent 구조이다.
FC_READLINK 트랜잭션은 4개의 통신트랜잭션중 가장 간단하다. 그것은 화일 속성을 복귀시키지 않으며, 링크는 항상 전체로서 판독되기 때문에 오프셋이나 카운트를 필요로 하지 않는다.
본 발명의 바람직한 실시예에 있어서, 이들 4개의 통신트랜잭션은 수용될 때마다 종래의 NFS 형태의 허용체킹을 포함한다. 종래의 VFS/UFS 호출이 허용체킹을 하지않음에도 불구하고 본 발명의 NFS 및 LFS에서는 행한다. 또한, FS 설비 메시지는 또한 NFS 용으로 요구되는 소유자가 항상 판독할 수 있다는 허용을 지원한다.
[LFS 화일 관리 메시지]
LFS 통신트랜잭션은, 이하에서 설명하는 바와 같이, 동일한 이름을 갖는 조래의 NFS 호출함수와 유사하다.
통신트랜잭션:
fc_null (K-MSG,***); 는 단지 k_reply( ) 만을 사용한다.
통신트랜잭션:
fc_null_null (K-MSG,*); 는 또한 단지 k_null_reply( ) 만을 사용한다. 이들은 둘 다 주로 측정 메시지의 전회시간의 성능공구로서 사용된다.
통신트랜잭션:
fc_getattr (FC_SRD_y{cred,file,un,mask},FC-FILE_T{errno,vattr}); 은 지정 화일의 vnode 속성을 얻는다. mask 는 어느 속성이 복귀되어야 하는지를 지정한다. FC_ATTR_ALL의 mask 는 그것들을 모두 얻는다. 동일한 구조가 항상 사용되지만 요청되지 않은 값인 경우, 필드는 한정되지 않는다.
통신트랜잭션:
fc_setattr ( FC_SATTR_T,FC_FILE_T{errno,vattr});는 지정된 화일의 속성을 설정한다. fc_getattr과 유사하게, fc_setattr은 mask를 사용하여 어느 값이 설정되어야 하는지 지시한다. 또한, 특수 비트 FC_ATTR_TOUCH_[A MC]TIME이 설종되어 화일의 억세스, 변형 또는 변경시간이 서버상의 현재의 시간으로 설정되어야함을 나타낼 수 있다. 이로 인해, 고객과 서버상의 시간이 잘 매칭되지 않았다 하더라도 유닉스의 터치 명령이 잘 작동될 수 있다.
통신트랜잭션:
fc_lookup ( FC_DIROP_T{ored,where},FC_FILE_T); 는 지정된 화일명의 디렉토리를 검색하여 존재한다면 화일과 화일의 속성을 복귀시킨다. FC_DIROP_T의 where필드는 화일, 이름 포인터 및 이름 길이를 포함하는 FC_DIROP 구조이다. 이름 포인터는 이름의 Vvme 어드레스를 포함한다. 이름은 256 문자길이로 이루어질 수도 있고, FS 설비가 판독할 수 있는 메모리내에 놓여야 한다.
통신트랜잭션:
fc_create(FC_CREATE_T,FC_FILE_T); 는 화일을 생성한다. PC_CREATE_T는 생성되고 위치한 화일의 형태가 어떠한지를 설명한다. vtype 필드는 디렉토리를 포함하는 화일 형태를 지정하는데 사용될 수도 있다. 따라서 mkdir은 지원되지 않는다. FC_CREATE_EXCL 비트가 플래그 필드내에서 설정되며, 화일이 이미 존재하는 경우, fc_create는 에러를 복귀시킨다. 그렇지 않으면, 새로운 화일이 생성되기 전에 구 화일이 지워진다.
통신트랜잭션:
fc_remove (FC_DIROP_T{cred,where},*{errno}); 는 지정된 디렉토리에서 지정된 이름을 지운다.
통신트랜잭션:
fc_rename(FC_RENAME_T,*);는 동일한 화일시스템내에서 화일을 한 디렉토리내의 하나의 이름으로부터 다른 디렉토리내의 다른 이름으로 변경한다.
통신트랜잭션:
fc_link (FC_LINK_T,*{errno}); 는 지정된 화일을 새로운 디렉토리내의 새 이름에 링크시킨다.
통신트랜잭션:
fc_symlink (FC_SYMLINK_T,*{errno}); 는 지정 symlink를 생성한다.
통신트랜잭션:
fc_rmdir (FC_DIROP_T{cred,where},*{errno}); 는 디렉토리를 삭제한다. fc_rmdir 은 fc_remove의 경유와 유사하다.
통신트랜잭션:
fc_ststfs (FC_STSTFS_T{fsid},***); 는 지정된 화일을 포함하는 화일시스템의 통계를 화일시스템에 복귀시킨다.
[VFS/V DP LFS 지원트랜잭션]
이하에서 설명하는 통신트랜잭션은 LFS 고객층과의 VFS/VDP 서브 루틴 호출 인터페이스를 지원하기 위해 제공된다. 대부분의 VOP호출은 위에서 이미 한정한 메시지를 사용하기 위해 제고될 수 있다. 그 밖의 VOP 함수호출 지원은 다음의 트랜잭션에 의해 제공된다.
통신트랜잭션:
fc_fsync (FC_STD_T{cred,file],*{errno});
fc_syscfs (FC_STD_T{cred,fsid},*{errno});는 참조화일 또는 화일시스템의 모든 블록이 각각 플러쉬됨을 보장한다.
통신트랜잭션:
fc_access(FC_STD_T{cred,file,mode},*{errno});는 주어진 형태의 화일 억세스가 지정 화일상의 지정 증명서용으로 적법한지의 여부를 결정한다. 모드 값은 FC_READ_MODE, FC_WRITE_MODE 또는 FC_EXEC_MODE이다. 모드가 적법하면, 복귀되는 errno는 제로이다.
표 5는 FS 설비에 의해 지원되는 설비간 메시지 형태를 보인 것이다.
FS 설비 메시지 구조는 이하에 기술되어 있다.
/* 많은 메시지를 처리하는 표준구조 */
typedef struct {
K_MSGTYPE type;
long errno;
FC_CRED cred; /* 억세스 증명서 */
FC_FH flie;
union {
FC_FSID fsid; /* fc_get_server 용 */
long mode; /* fc_access 용
{READ,WRITE,EXEC} */
K_PID pid; /* 서버의 FS 설비 pid */
long mask; /* 마시크 속성(FC_ATTR_*) */
} un;
} FC_STD_T;
/* fs 제어용 구조-설치, 해체 */
typedef struct {
K_MSGTYPE type;
long errno;
long fc; /* IN: 사용되는 FC (즉 0,1,...) */
long flags; /* IN: flags 설치 */
FC_PARTITION partition /* IN: 사용될 SP 분할 설명 */
K_PID fc_pid; /* OUT: FS용 관FS자의 PID */
FC_FH file; /* OUT: 화일시스템의 루트화일 처리 */
} FC_MOUNT_T;
typedef struct {
K_MSGTYPE type;
FC_CRED cred;
FC_FH file;
long mask; /* 마스크 속성(FC_ATTR_*) */
FC_SATTR sattr;
} FC_SATTR_T;
typedef struct {
K_MSGTYPE type;
long errno;
FC_FH file;
FC_VATTR vattr;
} FC_FILE_T;
typedef sruct {
void *buf;
vme_t addr; /* fc 복귀 데이타 */
long count; /* fc 복귀 데이타 길이 */
} FC_BUF_DESC;
FC_BUF_DESC 구조는 두 메시지 데이타 전달 프로토콜에서 사용된다. 전형적인 순차는 다음과 같다.
fc_read ( FC_RDWR_T{flags,un.in},
FC_RDWR_T{flags,un.out});
fc_release ( FC_RDWR_T{flags,un.out},
FC_RDWR_T{flags,un.out})
out union 부재는 제1메시지의 출력이고 제2메시지 입력임을 주목할 필요가 있다.
#define FC_RDWR_BUFS 2
typedef struct {
K_MSGTYPE type;
long errno;
union {
struct {
FC_FH file; /* 제1메시지용 */
FC_CRED cred;
long flags;
long offset; /* 사용자에 의해 요청된 화일 오프셋 */
long count; /* 사용자 요청 카운트 */
} in;
struct {
/* fc_release 메시지에 응답하여 사용된 구조 */
FC_BUF_DESC bd[FC_RDWR_BUFS]; /* 버퍼서술기
*/
FC_VATTR vattr; /* 응답용 */
long new offset; / READDIR 용 */
}
} un;
} FC_RDWR_T;
/* #define FC_RDWR_SYNC 0x0001
/* #define FC_RDWR_NOCACHE 0x0002 /* 버퍼를 캐시하지 않음 */
이 구조는 디렉토리 화일을 처리하고 그 디렉토리내에서 lookup, remove 및 rmdir 따위의 화일 이름을 취하는 동작에 사용된다.
typedef struct {
K_MSGTYPE type;
long errno;
FC_CRED cred;
FC_DIROP where; /* 순람 또는 삭제할 화일 */
} FC_DIROP_T;
설정될 수 있는 모든 필드는 FC_SATTR을 포함하는 대신 단지 포함되는 것으로 설정될 수 있는 값을 생성하여 지정할 수있다.
typedef struct {
K_MSGTYPE type;
FC_CRED cred;
FC_DIROP where;
short flag;
short vtype; /* 새로운 화일의 형태 */
u_short mode; /* 새로운 화일의 모드 */
short major_num; /* 장치의 많은 수 */
short minor_num; /* 장치의 적은 수 */
} FC_CREATE_T;
/* flag의 값 */
#define FC_CREATE_EXCL 0xOOO1 /* 전용 */
typedef struct {
K_MSGTYPE type;
long errno;
FC_CRED cred;
FC_FH from;
FC_DIROP to;
} FC_RENAME_T;
typedef struct {
K_MSGTYPE type;
long errno;
FC_CRED cred;
FC_FH from;
FC_DIROP to;
} FC_LINK_T;
typedef struct {
K_MSGTYPE type;
long errno;
FC_CRED cred;
FC_DIROP from; /* 생성될 화일 */
u_short mode; /* 화일 허용 */
vme_t to_ptr; /* symlink 용 내용에 대한 포인터 */
long to_len;
} FC_STMLINK_T;
typedef struct {
K_MSGTYPE type;
long errno;
FC_FSID fsid;
u_long bsize; /* 블록크기 */
u_long blocks; /* 블록의 총수 */
u_long bfree; /* 자유 블록 */
u_long bavail; /* 비 priv 사용자가 이용가능한 블록 */
u_long files; /* 화일슬롯의 총수 */
u_long ffree; /* 자유 화일슬롯의 총수 */
u_long favail; /* 비 priv 사용자가 이용가능한 화일슬롯 */
struct timeval stime; /* 서버의 현재 날짜의 시간 */
} FC_STATFS_T;
#define FC_MAXNAMLEN 255
#define FC_MAXPATHLEN 1024
struct fc_dirent {
u_long d_off; /* 다음 디스크 디렉토리 엔트리의 오프셋 */
u_long d_fileno; /* 엔트리의 화일번호 */
u_short d_reclen; /* 이 레코드의 길이 */
u_short d_namlen; /* d_name의 스트링의 길이 */
char d_name[FC_MAXNAMLEN + 1]; /* (MAXNAMLEN+1 까지의) 이름 */
};
b. NC 설비 통신트랜잭션
본 발명의 NC 설비가 인지하고 본 발명의 메시징 커널층의 다른 메시징 커널층이 NC 설비와 적절히 인터페이스되는 것으로 인지하는 통신트랜잭션을 표 6에 요약하였다. NC 설비는 상기 서술한 FS 설비를 또한 사용하고 인지한다.
네트워크 통신설비는 시스템(160)내에서 호스트 설비, 화일시스템 설비 및 다른 네트워크 통신설비와 메시지를 교환할 수 있다. 호스트 설비는 네트워크 통신설비와 메시지를 교환함으로써 네트워크 인터페이스를 구성하고 ARP 표 및 IP 루팅 표를 관리하며 네트워크 패킷을 송신하고 수신한다. 또한, 호스트 설비는 네트워크 통신설비와 메시지를 교환함으로써 NFS 서버 스택을 구성하고 보안 입증 서비스 요청의 원조로 응답한다. 네트워크 통신설비는 위에서 논의한 외부 FS 통신트랜잭션을 사용하는 화일 서비스용 화일시스템 설비와 메시지를 교환한다. 최종적으로, 네트워크 통신설비는 IP 루틴용의 다른 네트워크 통신설비와 메시지를 교환한다.
[시스템 호출층 변경]
시스템 호출층내의 exportfs(), unexport(), rtrequest(), arpioctl() 및 in_control() 함수호출은 변경되었다. exportfs(), unexport() 함수는 새로운 화일시스템을 수출하고 수출된 화일시스템을 수출하지 않기 위해 호출된다. 이들 변형된 함수에 대한 호출은 이제 각각의 네트워크 통신설비에 대해 NC_NFS_EXPORT 또는 NC_NFS_UNEXPORT 통신트랜잭션을 또한 초기화한다.
rtrequest() 함수가 호출되어 커널 루팅 표를 변형시킨다. 변형된 함수는 이제 각각의 네트워크 통신설비에 대해 적절한 NC 통신트랜잭션(새로운 루트를 추가하기 위한 NC_ADD_ROUTE 또는 존재하는 루트를 삭제하기 위한 NC_DEL_ROUTE)을 초기화한다.
arpioctl() 함수가 호출되어 커널 ARP 표를 변형시킨다. 이 함수는 변형되어 각각의 네트워크 통신설비에 대해 적절한 NC 통신트랜잭션(새로운 ARP 엔트리를 추가하기 위한 NC_ADD_ARP 또는 존재하는 엔트리를 삭제하기 위한 NC_DEL_ARP)를 초기화한다.
최종적으로, in_control() 함수가 호출되어, 주어진 인터페이스용으로 사용되는 IP 방송 어드레스 및 IP 네트워크 마스크를 설정하는 따위의 인터네트 프로토콜 파라미터를 구성한다. 이 함수는 변형되어 적절한 네트워크 통신설비에 대해 적절한 NC 통신트랜잭션(NC_SET_IP_BRADDR 또는 NC_SET_IP_NETMASK)을 초기화한다.
[NC 설비 초기화]
네트워크 통신설비가 부트업을 따라 초기화되면, 다음의 관리자 프로세스가 생성된다.
nc_nfs_vpn 호스트로부터 NFS_EXPORT 및 NFS_UNEXPORT 통신트랜잭션을 처리하기 위한 NFS 서버 프로세스
nc_dlctrl(n) 호스트로부터 IOCTL 통신트랜잭션을 처리하기 위한 네트워크 인터페이스 제어 프로세스
nc_dlxmiti NC XMIT_PKT 및 NC_FWD_IP_PKT 통신트랜잭션을 처리하기 위한 네트워크 전송 프로세스
여기서,
n은 네트워크 프로세스 수 : 0,1,2 또는 3
i는 네트워크 인터페이스(LAN) 수 : 0,1,2,3,4,5,6 또는 7
초기화되면, NC 설비는 호스트 설비의 백그라운드에서 시작되고 실행되며 인지된 디폴트 PID를 갖는 SC_NAME_SERVER 관리자 프로세스에 이들 프로세스의 이름을 보고한다. 식별되면, 호스트 설비는 네트워크 인터페이스를 구성할 수 있다(각각의 LAN 연결은 논리적 및 물리적 네트워크 인터페이스인 것으로 보여진다). 다음의 명령은 전형적으로 각각의 네트워크 인터페이스용 유닉스 기동 스크립트에 의해 등록된다.
ifconfig 인터페이스 이름 호스트 이름 옵션 up
여기서, 인터페이스 이름은 인터페이스용으로 사용되는 논리 이름이다.
호스트 이름은 참조되는 인터페이스 이름의 논리적 호스트 이름이다.
ifconfig 유틸리티 프로그램으로부터 궁극적으로 두 IOCTL 명령이 네트워크 프로세서에 등록된다.
nc_set_ifflags(flags = UP +옵션);
nc_set_ifaddr(ifaddr = address_of_hostname(호스트 이름);
어드레스에 대한 호스트 이름의 맵핑은 전형적으로 /etc/hosts 화일내에서 지정된다.
NFS 서비스를 시작하기 위해, 다음의 명령이 전형적으로 유닉스 기둥 스크립트에 의해 등록된다.
nfsdn
exportfs -a
여기서,
n은 시작될 병렬 NFS 서버 프로세스의 수이다.
nfsd 유틸리티 프로그램은 모든 네트워크 통신설비와의 nc_nfs_start 통신트랜잭션을 초기화한다. exportfs 통신트랜잭션은 nc_nfs_export 통신트랜잭션을 사용하는 NFS 서버에 의해 수출되는 (/etc/exports 내에서 지정되는) 화일시스템의 리스트를 통과시키는데 사용된다.
NFS 서비스가 초기화되면, NFS 서버 UDP 포트에 도입되는 네트워크 패킷 어드레스는 네트워크 통신설비의 NFS 서버로 전달된다. 그것을 차례로 필요한 FS 통신트랜잭션을 등록하여 화일서비스를 획득한다. 보안 입증 옵션이 사용되면, NFS 서버는 호스트 프로세서상에서 셀행되는 입증 서버 데모에 요청을 등록한다. 종래의 입증 서비스는 주어진 네트워크 이름을 유닉스 스타일의 증명서를 맵핑(ks_getcred()) 하고, 사용자 ID 0 (즉, 지역 호스트의 네트워크 이름)과 관련된 비밀 키 및 네트워크 이름과 관련된 공용키를 사용하여 DES 키를 복호화(ks_decrypt)한다.
[루팅]
네트워크 통신설비가 적절히 초기화되면, 네트워크 통신설비의 IP층은 지역 루팅 데이타베이스 표에 기초하여 적절한 IP 패킷루팅을 수행하게 된다. 이 루틴 표는 nc_add_route 및 nc_del_route IOCTL 명령을 사용하는 호스트 설비에 의해 관리된다. 특수한 패킷과 관련하여 루트가 결정되면, 패킷은 적절한 네트워크 인터페이스로 급송된다. 패킷이 동일한 네트워크 통신설비상의 다른 네트워크 인터페이스로 향하게 되면, 지역적으로 처리된다. 패킷이 또다른 네트워크 통신설비의 네트워크 인터페이스로 향하게 되면, 패킷은 nc_forward_ip_pkt()' 통신트랜잭션을 사용하여 전진하게 된다. 패킷이 호스트 설비에 부착된 종래의 네트워크 인터페이스로 향하게 되면, 패킷은 nc_forward_ip_pkt() 통신트랜잭션을 사용하여 호스트 설비로 전진하게 된다.
호스트 설비는 시스템(160)용 기본 네트워크 프론트-엔드 서비스를 제공한다. 시스템(160)으로 어드레스되지만 NFS 스택 UDP 서버 포트로는 어드레스되지 않는 모든 패킷은 다음의 통신트랜잭션을 사용하여 호스트 설비의 수신 관리자 프로세스로 전진된다.
nc_recv_dl_pkt ( NC_PKT_IO_T,*);
여기서 패킷 형태는 IP가 아니다.
nc_recv_dl_pkt ( NC_PKT_IO_T,*);
여기서 패킷 형태는 IP이다.
통신트랜잭션:
nc_recv_promis_pkt ( NC_PKT_IO_T,*); 는 네트워크 통신설비가 구성되어 호스트 설비에 의해 불규칙한 모드로 수신될 때 시스템(160)에 어드레스되지 않은 패킷을 호스트 설비에 전송한다.
패킷을 전송하기 위해, 호스트 설비는 통신트랜잭션:
nc_xmit_pkt ( NC_PKT_IO_T,*); 를 적절한 네트워크 통신설비에 초기화된다.
최종적으로, 호스트 설비는 통신트랜잭션:
nc_recv_promis_pkt ( NC_PKT_IO_T,*); 를 등록함으로써 네트워크 통신설비에 의해 처리되는 메시지를 관측할 수도 있다.
표 7은 FS 설비에 의해 지원되는 설비간 메시지 형태를 보인 것이다.
NC 설비 메시지 구조는 아래와 같다.
/* 수출된 vfs flags */
#define EX_RDONLY 0x01 /* exported read only */
#define EX_RDMOSTLY 0x02 /* exported read mostly */
#define EXMAXADDRS 10 /* 최대 번호 어드레스 리스트 */
typedef struct {
u_long naddrs; */ 어드레스의 수 */
vme_t addrvec; /* 어드레스의 어레이에 대한 포인터 */
} NC_EXADDRLIST;
/* 루트 허용을 검사하기 위한 인터네트 어드레스의 어레이는 AUTH_UNIX와 관련된다. */
#define EXMAXROOTADDRS 10
typedef struct {
NC_WXADDRLIST rootaddrs;
} NC_UNIXEXPORT;
/* 루트 허용을 검사하기 위한 네트워크 이름과 종료된 증명서를 검사하기 위한 시간 윈도우의 리스트는 AUTH_DES 와 관련된다 */
#define EXMAXROOTNAMES 10
typedef struct {
u_long nnames;
vme_t rootnames; /* netnames 를 가리키는 이름 */
vme_t rootnamelens; /* 길이 */
u_int window;
} NC_DESEXPORT;
typedef struct {
long val[2]; /* 화일시스템 id 형태 */
} fsid_t;
/* 화일 식별기. 단일 머신상에서 화일시스템당 유일해야함 */
#define MAXFIDSZ 16
struct fid {
u-short fid_len; /* 데이타의 길이(바이트) */
char fid_data[MAXFIDSZ]; /* 데이타 */
};
/* NFS 서버 통신트랜잭션 구조 */
typedef struct {
K_MSGTYPE m_type;
int nservers; /* 기동될 서버의 수 */
} NC_NFS_START_T;
typedef struct {
K_MSGTYPE m_type;
long errno; /* 복귀된 에러*/
fsid_t fsid; /* 수출된 디렉토리의 FSID */
struct fid fid; /* 수출된 디렉토리의 FID */
long flags; /* flags */
u_short anon; /* 입증되지 않은 요청의 uid */
long auth; /* 입증 형태의 스위치 */
union {
NC_UNIXEXPORT exunix /* AUTH_UNIX 의 경우 */
NC_DESEXPORT exdes; /* AUTH_DES 의 경우 */
} un;
NC_EXADDRLIST wtiteaddrs;
} NC_NFS_EXPORT_T;
typedef struct {
K_MSGTYPE m_type;
long errno; /* 복귀된 에러*/
fsid_t fsid; /* 수출안된 디렉토리의 FSID */
struct fid fid; /* 수출안된 디렉토리의 FID */
} NC_NFS_UNEXPORT_T;
/* 서버 통계를 복귀시킴 */
typedef struct {
int rscalls; /* Out-전체 RPC 호출 */
int rsbadcalls; /* Out-나쁜 RPC 호출 */
int rsnullrecv;
int rsbadlen;
int rsxdrcall;
int ncalls; /* Out-전체 NFS 호출 */
int nbadcalls; /* -실패 호출 */
int reqs[32]; /* -각각의 요청 호출 */
} NC_NFS_STATS_T;
/* 네트워크 인터페이스 IOCTL 통신트랜잭션 구조 */
typedef struct {
K_MSGTYPE m_type;
short status; /* 출력 */
char unit; /* 단지 IF,MAC 및 IN 명령과 함께 사용됨 */
char pad;
K_PID receiver_pid;
short mem_xfer_mode; /* 0-정상, 1-VME 블록, 2-AEP */
long recv_mem_size; /* I */
long recv_mem_start_addr; /* I */
ETHADDR intf_addr; /* 0: 인터페이스 어드레스 */
} NC_REGISTER_DL_T;
typedef struct {
K_MSGTYPE m_type;
short status; /* 출력 */
char unit; /* 단지 IF,MAC 및 IN 명령과 함께 사용됨 */
char pad;
union {
long promis; /* I */
ETHADDR mc_addr;/* I: 추가 및 삭제 */
short flags; /* I: flag 설정; 0: flag 획득 */
long metric; /* I */
struct sockaddr if_addr; /* I */
} un;
} NC_IFIOCTL_T;
typedef struct {
K_MSGTYPE m_type;
short status; /* 출력 */
char unit; /* 단지 IF,MAC 및 IN 명령과 함께 사용됨 */
char pad;
struct if_stats {
long if_ipackets; /* 수신된 패킷 */
long if_ibytes; /* 수신된 바이트 */
long if_ierrors; /*입력 에러 */
long if_opackets; /* 송신된 패킷 */
long if_obytes; /* 송신된 바이트 */
long if_oerrors; /* 출력 에러 */
long if_collisions; /* CSMA 충돌 */
} if_stats;
}NC_IFSTATS_T;
typedef struct {
K_MSGTYPE m_type;
short status; /* 출력 */
char unit; /* 단지 IF,MAC 및 IN 명령과 함께 사용됨 */
char pad;
union {
struct in_addr br_addr; /* I */
struct in_addr net_mask /* I */
} un;
} NC_INIOCTL_T;
typedef struct {
K_MSGTYPE m_type;
short status; /* 출력 */
char unit /* 단지 IF,MAC 및 IN 명령과 함께 사용됨 */
char pad;
struct arpreq arp_req
} NC_ARPIOCTL_T;
typedef struct {
K_MSGTYPE m_type;
short status; /* 출력 */
char unit; /* 단지 IF,MAC 및 IN 명령과 함께 사용됨 */
char pad;
struct rtentry route_req;
} NC_RTIOCTL_T;
/* 네트워크 인테페이스 데이타 통신트랜잭션 구조 */
typedef struct {
long len;
caddr_t address;
{ PKT_DATA_BUFFER;
#define MAX_DL_BUFFRAG 4
#define VME_XFER_MODE_NORMAL 0
#define VME_XFER_BLOCK 1
#define VME_XFER_AEP 2 /* 향상된 프로토콜 */
typedef struct ether_xmit {
K_MSGTYPE m_type;
char src_net; /* 패킷의 소오스 */
char dst_net; /* 패킷의 목적지 */
char vme_xfer_mode; /* buflist에서 데이타를 억세스하는데 사용될 수 있는 전달 모드 */
char pad1;
short pktlen; /* 전체 패킷 길이 */
short pad2;
PKT_DATA_BUFFER pkt_buflist[MAX_DL_BUFFRAG+1];
} NC_PKT_IO_T;
/* 보안 입증 서버 통신트랜잭션 */
/* 키 서버가 등록하는 이름 */
#define KEYSERV_NAME KEYSERV'
/* 키 서버 메시지 형태 */
#define KS_DECRYPT 69
#define KS_GETCRED 137
typedef struct {
K_MSGTYPE type;
u_long rpcstatus; /* RPC 상태 */
u_long ksstatus; /* 키 서버 응답 상태 */
vme_t netname /* netname */
long netnamelen; /* netname의 길이 */
des_block desblock; /* DES 블록 인 및 블록 아웃 */
} KS_DECRYPT_T;
typedef struct {
K_MSGTYPE type;
u_long rpcstatus; /* RPC 상태 */
u_long ksstatus; /* 키 서버 응답 상태 */
vme_t netname; /* netname */
long netnamelen; /* netname 의 길이 */
unixcred cred; /* 복귀된 증명서 */
} KS_GETCRED_T;
c. 호스트 설비 통신트랜잭션
본 발명의 호스트 설비가 인지하고 제공하는 통신트랜잭션을 아래의 표 8에 요약하였다. 이들 통신트랜잭션은 시스템(16)의 초기화 및 진행되는 정합운영을 지원하는데 사용된다.
[네임 서비스]
네임서버 데모(named)는 시스템을 부트하고 시스템내에 나타나는 모든 설비를 이해하는 유닉스 호스트 설비 프로세스이다. 즉, 각각의 설비는 적어도 하나의 서비스를 제공된다. 어떠한 설비가 또다른 서비스를 활용하도록 하기 위해, 서비스의 이름이 네임서버 데모와 함께 이름을 등록함으로써 발표되어야만한다. 이름은 서비스를 나타내는 아스키 스트링이다. 이름이 등록되면, 관련 서비스 프로세스 PID 또한 제공된다. 네임서버 데모가 조회되어 서비스 이름을 해결할 때마다. 네임서버 데모는 지정된 서비스가 이용가능한 경우 관련 프로세스 PID에 응답한다. 이러한 부정수단의 하나의 레벨은 모든 가능한 서비스의 고정된 프로세스 ID를 설정할 필요를 없앤다. 오히려, 메시징 커널층의 멀티 태스킹 커널은 등록하는 각각의 네임 서비스에 대해 선택되는 PID를 설정하는데 사용된다.
통신트랜잭션:
sc_register_fifo ( SC_REGISTER_FIFO_T,***); 는 호스트 설비의 지정된 데모를 향하여 등록된 NC,FS 또는 S 설비가 기동되었음을 통지한다. 이 통신트랜잭션은 유일한 설비 ID (VME 슬롯 ID) 및 메시지 서술기 FIFO의 공유메모리 어드레스를 등록하는 설비의 서비스의 이름에 대향하여 설비의 이름을 식별한다.
통신트랜잭션:
sc_get_sys_config ( SC_GET_SYS_CONFIG_T,***); 는 부팅설비에 의해 사용되어 네임서버 데모로부터 시스템(16)의 나머지에 대한 구성정보를 획득한다. 응답 메시지는 네임서버 데모와 함께 등록된 모든 설비를 식별한다.
통신트랜잭션:
sc_init_complete ( SC_INIT_COMPLETE_T,***); 는 sc_get_sys_config 트랜잭션에 대한 응답 메시지를 처리하는 것을 포함하여 초기화를 완료하면, 네임서버 데모로 전송된다. 네임서버 데모가 응답 메시지를 복귀시키면, 설비는 정상 동작을 사시작하기 위해 클리어된다.
통신트랜잭션:
sc_register_name ( SC_REGISTER_NAME_T,***); 는 서비스의 인지된 이름과 서비스를 제공하는 설비의 특정 PID를 상관시키는데 사용된다. 본 발명의 바람직한 실시예에서 제공되는 전형적인 서비스의 이름은 표 9에 기술되어 있다.
지정된 설비 서비스
상주 호스트 설비
SC_NAME_SERVER - 네임서버 데모 - 호스트 등을 프로세서상에서 또는 하나 이상의 호스트 설비가 시스템내에 존재하면 주 호스트 프로세서상에서 실행된다. 시스템 폭 네임 서비스를 제공한다. 물리적(시스템내에 존재하는 NC의 총수 및 VME 슬롯의 수) 및 논리적(이용가능한 시스템 서비스)구성에 대한 정보를 수집하고 분류한다.
SC_ERRD - ERRD 데모 - 호스트 동종 프로세서상에서 또는 하나 이상의 호스트 설비가 시스템내에 존재하면 주 호스트 프로세서상에서 실행된다. 에러 메시지를 유닉스 syslogd 시스템내로 도입한다. 그 결과, 에러 메시지는 시스템 콘솔상에 프린트되며, 전형적으로는 에러화일 내에서 로그된다.
SC_TIMED - TIMED 데모 -호스트 동종 프로세서상에서 또는 하나 이상의 호스트 설비가 시스템내에 존재하면 주 호스트 프로세서상에서 실행된다. 현재의 시스템 시간을 복귀시킨다. 또한 지시를 받아서 후속하는 시간 변경을 통지한다.
SC_KEYSERV - 호스트 동종 프로세서상에서 또는 하나 이상의 호스트 설비가 시스템내에 존재하면 주 호스트 프로세서상에서 실행된다. NFS가 보안(DES 암호화)모드로 실행되면, 사용자를 입증하는 키의 억세스를 제공하는 종래의 유닉스 데모의 억세스를 제공한다.
상주 FS 설비
FC_VICE_PRES - FC 동종 프로세서상에서 또는 하나 이상의 FC 설비가 시스템내에 존재하면 주 FC 프로세서상에서 실행된다. FSID 로의 억세스를 제어하는 지정되지 않은 관리자 프로세스의 PID를 식별하기 위해 모든 요청을 서비스함으로써 다중 FS 설비의 동작을 조정한다. 적어도 하나의 지정되지 않은 관리자 프로세스가 각각의 FS 설비내에서 실행된다.
FC_STATMAN# - 각각의 FC 설비(#) 내에서 실행된다. FC 설비상에서 통계 관리자 프로세스로서의 기능을 수행하며 다른 설비가 수신된 메시지의 수 따위의 현재의 통계의 보고를 요청할 수 있게 한다.
상주 S 설비
S_MANAGER# - 각각의 S 설비(#) 내에서 실행된다. 기억장치 프로세서(#)에 연결된 디스크 어레이의 모든 저급 디스크 요청은 이 관리자 프로세스로 향한다. 지정되지 않은 사용자 프로세스가 요청을 수행하는데 필요한 정도로 할당된다.
S_STATMANS# - 각각의 S 설비(#) 내에서 실행된다. S 설비상에서 통계 관리자 프로세스로서의 기능을 수행하며 다른 설비가 현재의 통계의 보고를 요청할 수 있게 한다.
상주 NC 설비
NC_NFS_VP# - 각각의 NC 설비(#) 내에서 실행된다. 각각의 NC 설비의 NFS의 동작을 제어한다. 호스트 설비로부터 NFS를 시작하고 중단하며, 선택된 화일시스템의 수출 및 비수출을 제어하는 메시지를 받아 들인다.
NC_DLCTRL# - 각각의 NC 설비(#) 내에서 실행된다. NC 설비(#)의 데이타 링크 제어기로서의 기능을 수행한다. 지역 메시지 지정 데이타 링크의 ioctl 명령을 받아 들이고, 필요하다면 사용자 프로세스를 할당하여 메시지 요청을 수행한다.
NC_DLXMIT# - 각각의 NC 설비(#) 내에서 실행된다. NC 설비(#)의 데이타 링크 전송기로서의 기능을 수행한다. 지역 메시지 지정 데이타 링크의 전송 명령을 받아 들이고, 필요하다면 사용자 프로세스를 할당하여 메시지 요청을 수행한다.
NC_STATMAN# - 각각의 NC 설비(#) 내에서 실행된다. NC 설비상에서 통계 관리자 프로세스로서의 기능을 수행하며 다른 설비가 현재의 통계의 보고를 요청할 수 있게 한다.
통신트랜잭션:
sc_resolve_name ( SC_RESOLVE_NAME_T,***); 는 설비의 메시징 커널층에 의해 사용되어 또다른 설비에 의해 제공되는 서비스의 관련 프로세스 PID 를 식별한다. 응답 메시지는, 네임서버 데모에 의해 복귀되면, 해결된 프로세스 ID 를 제공하거나 지정된 서비스가 지원되지 않는 경우 제로를 제공한다.
통신트랜잭션:
sc_resolve_fifo ( SC_RESOLVE_FIFO_T,***); 는 설비에 의해 설비가 각각의 다른 설비와의 통신을 필요로 하는 네임서버 데모에 등록된다. 네임서버 데모에 의해 제공되는 응답 메시지는 지정된 서비스에 대응하는 메시지 서술기 FIFO 의 공유메모리를 식별한다.
[시간 서비스]
시간 서버 데모 (timed)는 시스템에 모든 설비용의 폭넓은 시간 서비스를 제공한다.
통신트랜잭션:
sc_time_register ( SC_TIME_REGISTER_T,***); 는 설비에 의해 시간 서버 데모에 등록되어 시스템 시간을 결정하고 주기적인 시간 동기 메시지를 요청한다. 응답 메시지는 현재의 시간을 복귀시킨다.
통신트랜잭션:
sc_real_time ( SC_REAL_TIME_T,***); 는 시간 서버 데모에 의해 등록되어 현재의 시간을 포함하는 주기적인 시간 동기 메시지를 제공한다. 이들 통신트랜잭션은 원래의 요청 메시지내의 client_pid 에 기초하는 요청 프로세스로 향한다. 통신트랜잭션의 주기는 현재의 시간주기의 함수로, 전형적으로는 수 분이며, 시스템 시간이 수동으로 변경될 때마다 이루어진다.
[에러 로거 서비스]
에러 서버 데모(errd) 는 편리한 서비스를 제공하여 에러 메시지를 모든 설비의 시스템 콘솔로 전송한다.
통신트랜잭션:
sc_err_log_msg ( SC_ERR_LOG_MSG_T,***); 는 전송된 메시지내에 제공되는 스트링을 프린트한다. 반면에
통신트랜잭션:
sc_err_log_msg2 ( SC_ERR_LOG_MSG2,***); 는 errd message format 화일내에 저장된 프린트 서식사양을 지정하는 error id 및 메시지를 제공한다. 이 서식 화일은 다중 언어에서 에러 메시지 서식을 지정한다.
/* SC_NAMED 프로세스의 구조 및 상수 */
/* 보드 형태 */
#define BT_NONE 0
#define BT_UNIX 1 /* 호스트 프로세서 */
#define BT_PSA 2 /* 기억장치 프로세서 */
#define BT_FC 3 /* 화일 제거기 */
#define BT_NC 4 /* 네트워크 제거기 */
#define BT_PLESSEY 5 /* 시험환경 */
#define BT_TRACE_ANAL 6 /* 메시지 트레이스 분석기 */
#define BT_MEM 7 /* 메모리 보드 */
/* 슬롯 서술기 */
typedef struct {
short board_type;
short slot_id;
} SLOT_DESC_T;
/* SC_NAMED: 형태 및 구조 */
#define SC_MSG_GROUP ( (long)( ('S'8) ; ('C') ) 16 )
#define SC_REGISTER_FIFO (1 ; SC_MSG_GROUP)
#define SC_RESOLVE_FIFO (2 ; SC_MSG_GROUP)
#define SC_REGISTER_NAME (3 ; SC_MSG_GROUP)
#define SC_RESOLVE_NAME (4 ; SC_MSG_GROUP)
#define SC_DELAY (5 ; SC_MSG_GROUP)
#define SC_GET_SYS_CONFIG (6 ; SC_MSG_GROUP)
#define SC_INIT_COMPLETE (7 ; SC_MSG_GROUP)
#define K_MAX_NAME_LEN 32 /* 최대 프로세스명 길이 */
typedef struct {
K_MSGTYPE type;
short my_solt_id;
short sender_slot_id;
char name[K_MAX_NAME_LEN];
M16_FIFO_DESC fifo_desc;
short flags; /* 이하에서 한정되는 flags */
} SC_REGISTER_FIFO_T;
/* SC_REGISTER_FIFO_T flags; */
#define NO_CM_ACCESS 1 /* 공통 메모리 억세스 불가 */
typedef struct {
K_MSGTYPE type;
short my_slot_id;
short dest_slot_id;
M16_FIFO_DESC fifo_desc; /* 0 = 발견 못함 */
} SC_RESOLVE_FIFO_T;
typedef struct {
K_MSGTYPE type;
K_PID pid;
char name[K_MAX_NAME_LEN];
}SC_REGISTER_NAME_T;
typedef struct {
K_MSGTYPE type;
K_PID pid; /* 0 = 발견 못함 */
char name[K_MAX_NAME_LEN]; /* 입력 */
} SC_REGISTER_NAME_T;
typedef struct {
K_MSGTYPE type;
SLOT_DESC_T config[M16_MAX_VSLOTS];
} SC_GET_SYS_CONFIG_T;
} SLOT_DESC_T;
typedef struct {
K_MSGTYPE type;
short my_slot_id;
} SC_INIT_COMPLETE_T;
/* SC_TIMED: 형태 및 구조 */
#define SC_TIMED_REGISTER (101 ; SC_MSG_GROUP)
#define SC_REAL_TIME (102 ; SC_MSG_GROUP)
typedef struct {
K_MSGTYPE type;
K_PID client_pid;
long max_update_period; /* 초 단위 */
/* 출력 */
long seconds; /* 1970년 1월 1일 이후 초단위 */
long micro_seconds; /* 마이크로초 단위 */
} SC_TIMED_REGISTER_T;
typedef struct {
K_MSGTYPE type;
long seconds; /* 1970년 1월 1일 이후 초단위 */
long micro_seconds; /* 마이크로초 단위 */
} SC_REAL_TIME_T;
/* SC_ERRD 메시지 구조
* 에러 로그 사용방법
* -syslog.h를 포함해야함.
* - 우선 레벨은 다음과 같다.
* LOG_EMERG 시스템 사용 불가능
* LOG_ALERT 즉시 행동이 취해져야함
* LOG_CRIT 위험조건
* LOG_ERR 에러조건
* LOG_WARNING 경고조건
* LOG_NOTICE 정상조건
* LOG_INFO 정보
* LOG_DEBUG 디버그 레벨 메시지
*/
#define SC_ERR_LOG_MSG (301 ; SC_MSG_GROUP)
#define SC_ERR_LOG_MSG2 (302 ; SC_MSG_GROUP)
#define ERR_LOG_MSG_LEN (K_MSG_SIZE - sizeof(K_MSGTYPE)
- sizeof(short))
typedef strect {
K_MSGTYPE type; /* SC-ERR_LOG_MSG */
short priority_level;
char msg[ERR_LOG_MSG_LEN]; /* 메시지 */
} SC_ERR_LOG_MSG_T;
typedef struct {
K_MSGTYPE type; /* SC_ERR_LOG_MSG */
short id;/* 메시지 di */
short fill1; /* 사용안됨 */
union {
char c[80]; /* 상수 */
short s[40];
long 1[20];
} data;
SC_ERR_LOG_MSG2_T;
d. S 설비 통신트랜잭션
본 발명의 S 설비가 인지하고 본 발명의 다른 메시징 커널층이 S 설비와 적절히 인터페이스됨으로써 인지하는 통신트랜잭션을 아래의 표 10에 요약하였다.
S 설비는 일반적으로 단지 다른 설비에 의해 초기화되는 통신트랜잭션에 응답한다.
[No OP]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_noop_msg (SC_MSG,***);
이 메시지에서 필요로 하는 파라미터는 단지 메시지 헤더이다. 이 메시지의 목적은 S 설비와 메시지 송신자간의 통신경로를 테스트하는 것이다. k_null-reply 는 항상 사용된다.
[구성 데이타 전송]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_send_config (SEND_CONFIG_MSG,***);
이 메시지는 동작 파라미터에 대하여 S 설비에 알리는데 사용된다. 구성데이타 구조를 가리키는 포인터를 제공한다. S 설비는 구성 데이타를 불러와서 지역 램을 초기화한다. 구성 데이타 또한 S 설비가 파워 업될 때 판독될 수 있도록 각각의 SCSI 디스크상의 예약된 섹터에 기록된다. 따라서, S 설비가 파워 업될 때마다 이 메시지를 전송할 필요는 없다.
구성 데이타 구조에 있어서, vme_bus_request_level 은 VME 버스상의 S 설비 데이타 전달 요청레벨을 지정한다. access_mode 는 S 설비가 독립된 SCSI 드라이브로서 실행되어야 하는지 아니면 단일의 논리 드라이브로서 실행되어야 하는지를 지정한다. 후자의 경우, 뱅크내의 모두 9 개의 드라이브가 단일의 논리 디스크로 모이기 때문에 number_of_disks 는 number_of_banks 와 동일해야 한다.
total_sector 는 부착된 SCSI 디스크의 디스크 용량이다. 디스크 뱅크의 전체 용량은 number_of_disk를 배가하는 이 수이다.
별도의 디스크 뱅크가 이용가능하며, 첫번째 뱅크와는 다른 크기로 이루어져야 한다. 따라서, total-sector 는 three_entry_array이다. stripe_size 는 단지 S 설비가 단일의 논리 디스크 기억장치 서브시스템으로서 실행될 경우에만 의미있다. 다른 드라이브 뱅크의 경우 다른 스트립 크기가 사용될 수 있다. 최종적으로, online_drive_bit_map은 마지막 리세트에서 온라인되었던 드라이브를 보여준다. 설정된online_drive_bit_map[1]의 비트 5는 뱅크 1의 드라이브 5를 나타낸다. total_sector 및 online-drive_bit_map은 사용자에 의해 지정될 수 없고 지정되어서는 안된다.
구성 데이타는 S 설비가 리세트되고 퍼파워 업될 때마다 판독되는 S 설비 예약 섹터내의 디스크에 기록된다. 구성 데이타가 변경될 때, S 설비를 재서식화해야만 한다(구 화일시스템을 삭제해야만 한다). 이 메시지가 완료되면, k_reply 또는 k_null_reply는 복귀된다.
[구성 데이타 수신]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_receive_config (RECEIVE_CONFIG_MSG,***);
이 메시지는 S 설비에 구성 데이타를 메시지 전송기에 복귀시킬 것을 요청한다. vme_pointer는 구성 데이타를 저장하기 위한 VME 메모리 위치를 지정한다. 마지막 섹션에서 지정되는 동일한 구성 데이타 구조는 복귀된다.
[섹터 판독 및 기록]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_r/w_sectro (SP_RDWR_MSG,***);
즉시 처리되는 대부분의 S 설비와는 달리, 이 메시지는 처음에 저장되고 대기된다. 200개 까지의 메시지가 한번에 S 설비로 전송될 수 있다. 30 개 가지의 메시지가 동시에 30 개의 SCSI 드라이브상에서 실행될 수 있다. 메시지는 섹터 어드레스에 의해 정렬된다. 따라서, 그것들은 도착순서에 의해 서비스되지는 않는다.
이 메시지에 의해 지정되는 함수는 두 개이다.
msg_mod = 00 - 섹터 판독
= 01 - 섹터 기록
scsi_id는 드라이브 세트 번호를 지정한다. disk_number 는 사용될 SCSI 포트를 지정한다. sector_count 는 전송될 디스크 섹터의 수를 지정한다. sector_read 메시지로 인해, erase_sector_count 는 제러없이 패드될 VME 메모리내의 섹터의 수를 지정한다(각각의 섹터는 512 바이트이다), sector_write 메시지로 인해, erase_sector_count 는 제로를 가지고 기록될 디스크상의 섹터의 수를 지정한다(따라서 삭제된다). 섹터가 부주의한 실수로 삭제되는 것을 방지하기 위해, sector_write 메시지는 비 제로가 될 두개의 카운터 중 단지 하나만을 지정한다. sector_address 는 판독 및 기록 동작이 시작되는 디스크 섹터를 지정한다. vme_address 는 데이타 전송이 일어나는 시작 VME 메모리 위치를 지정한다.
각각의 SCSI 포트 (또는 각각의 디스크 드라이브중 하나)의 S 설비에 의해 유지되는 드라이브 엘리베이터 대기열은 3 개이다. 메시지는 섹터 어드레스에 의해 정렬된 대기열내에 삽입되며, 대기열의 순서에 의해서 실행된다. S 설비는 엘리베이터와 같이 대기열 엔트리 사이를 왕래한다. 이는 디스크 아암의 이동을 최소화하기 위한 것이다. 분리 디스크 드라이브를 위해 대기열을 분할한다. 이들 대기열은 버스상에 데이타 또는 명령 전송활동이 없을 때마다 SCSI 드라이브가 버스로 부터 분리되기 때문에 처리된다.
SCSI 드라이브로부터 에러조건이 검출되지 않으면, 이 메시지는 정상적으로 완료된다. 데이타 체크가 발견되고 S 설비가 단일의 논리 디스크로서 실행되면, 리던던트 데이타를 사용하는 복구동작이 자동으로 시작된다. 드라이브가 다운되고 S 설비가 단일의 논리 디스크로서 실행되면, 데이타 체크 복구와 유사한 복구동작이 발생한다. 다른 드라이브 에러는 대응하는 상태 코드 값에 의해 보고된다.
k_reply 또는 k_null_reply 는 이 메시지의 완료를 보고하는데 사용된다.
[캐시 페이지 판독/기록]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_r/w_cache_pg ( SP_RDWR_MSG,***);
이 메시지는, 디스크 섹터로 또는 그로부터 디스크 데이타를 전달하기 위해 다중 v me_addresses가 제공되는 것을 제외하면 섹터 판독 및 기록의 경우와 유사하다. 각각의 vme_address는 그 사이즈가 cache_page_size에 의해 지정되는 메모리 캐시 페이지를 가리킨다. 판독될 때, 데이타는 다른 캐시 페이지로 분산된다. 기록될 때, 데이타는 다른 캐시 메모리로 부터 모인다(따라서, 그것은 scatter_gather 함수로서 언급된다).
이 메시지에 의해 지정되는 함수는 두개이다.
msg_mod=00 - 캐시 페이지 판독
=01 - 캐시 페이지 기록
scsi_id, disk_number, sector_count 및 sector_address는 섹터 메시지 판독 및 기록의 경우에서 설명하였다. sector_count 및 sector_address는 cache_page_size에 의해 분할가능해야 한다. 또한 sector_count 는 160 이하(또는 10 캐시 페이지) 이하이어야 한다. cache_page_size 는 각각의 캐시 페이지의 섹터의 수를 지정한다. 캐시 페이지는 드라이브상에서 연속하여 판독되고 기록된다. 각각의 페이지는 VME 메모리 어드레스를 갖는다. 10까지의 vme_addresses 가 지정된다. 10으로의 제한은 S 설비 메시지의 크기로 인해 설정된다. 섹터 판독,기록 메시지와 마찬가지로, 이 메시지는 드라이브 엘리베이터 대기열내에 먼저 삽입된다.
SCSI 드라이브로부터 에러조건이 검출되지 않으면, 이 메시지는 정상적으로 완료된다. 에러가 검출되면, 데이타 복구동작이 시작된다. 에러 복구동작이 계속되는 것을 막는 영구 드라이브 에러가 존재하는 경우, 에러 상태코드는 완료된 것으로 보고된다.
k_reply 또는 k_null_reply는 이 메시지의 완료를 보고하는데 사용된다.
[IOCTL 요청]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_ioctl_req (SP_IOCTL_MSG,***);
이 메시지는 SCSI 디스크 또는 SCSI 포트에 부착된 주변장치를 직접 어드레스하는데 사용된다. 다중 메시지는 동시에 전송될 수 있다. 그들은 첫번째 도입되는 첫번째 서비스의 순서로 서비스를 받는다. 펌웨어 에러 복구동작은 S 설비에 의해 시도되지 않는다. scsi_id, scsi_port 및 scsi_address 는 유일한 하나의 SCSI 주변장치를 식별한다. command_length 및 data_length 는 각각 명령 및 데이테 전송의 길이를 지정한다. data_bufer_address는 데이타 전송의 VME 메모리 위치를 가리킨다. command_bytes 는 어드레스된 SCSI 주변장치로 전송되는 실제의 SCSI 명령 데이타이다. 데이타 길이는 S 설비가 항상 한번에 4 바이트르 전송하기 때문에, 4의 배수이어야 한다. sese_legth 및 sense_addr 은 체크 상태가 수신된 경우 장치 센스 데이타가 저장될 수 있는 VME 메모리의 사이즈와 어드레스를 지정한다. 이들 메시지는 그 도착 순서로 서비스를 받는다.
이 메시지가 드라이브 에러로 종료되면, 대응하는 상태 로드가 복귀된다. k_reply 및 k_null_reply 는 이 메시지의 완료를 보고하는데 사용된다.
[SCSI 드라이브 시작/중단]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_start_stop_msp ( SP_IOCTL_MSG,***);
이 메시지는 어떠한 메시지를 지정된 드라이브에 펜스 오프하는데 사용된다. 지정된 드라이브상에서 눈에 띄는 메시지가 존재하지 않는 경우에만 전송되어야 한다. 드라이브가 펜스 오프되면, 드라이브로 향하는 메시지는 대응하는 에러 상태를 수신한다.
S 설비가 단일의 논리 디스크로서 실행되면, 이 메시지는 서비스내로 또는 서비스 밖에 SCSI 디스크 드라이브를 위치시키는데 사용된다. 드라이브가 중단되면, 이 드라이브에 대한 모든 동작은 펜스 오프된다. 그러한 경우, 중단된 드라이브가 억세스될 때, 복구동작은 자동으로 시작된다. 드라이브가 다시 시작될 때, 드라이브상의 데이타는 자동으로 재구성된다. 재구성된 드라이브가 억세스될 때 복구동작을 호소함으로써 시스템이 온라인된 경우에 재구성이 수행된다.
드라이브가 재구성되면, 드라이브 구성섹터는 갱신되어 드라이브가 이제 드라이브 세트의 일부임을 나타낸다.
[메시지 조회]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_inquiry_msg ( SP_MSG,***);
이 메시지는 S 설비에게 초기에 전송된 메시지의 상태를 복귀시킬 것을 요청한다. k_reply 는 항상 사용된다. 메시지의 상태는, S 설비 버퍼내에서 사용가능하다면, 완료상태 단어내로 복귀된다.
이 메시지는 앞의 메시지가 S 설비에 의해 수신되었는지를 검증하는데 사용된다. 그렇지 않다면, 메시지는 손실된다. 손실된 메시지는 재전송된다. 메시지는 지역 보드 리세트에 의해 손실될 수 있다. 그러나, 메시지는 일반적으로 손실되지 않아야 한다. 메시지가 종종 손실되면, S 설비는 파괴되었거나 펜스 오프된 것으로 고려되어야 한다.
[메시지 로그 판독]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_read_message_buffer_msg ( SP_MSG,***);
S 설비는 마지막 200 메시지를 포함하는 메시지 버퍼를 유지한다. data_buffer 는 메시지가 전송된 VME 메모리를 지정한다. number_of_message 는 200 을 초과하지 않는다. 각각의 메시지는 이 섹션의 서두에서 한정한 128 바이트의 길이로 이루어진다. 어플리케이션 프로그램은 모든 복귀되는 메시지를 수용할 만큼 큰 버퍼를 할당해야만 한다.
통상적으로, 이 메시지는 능동 메시지가 없을 때 전송된다. 그렇지 않으면, 메시지가 S 설비내에서 얼마나 많이 사용되는지를 결정하기가 어렵다. 예를 들어, 200 의 능동 메시지가 있다면, 메시지 버퍼내에 사용되는 메시지는 없다. 메시지 버퍼내의 메시지가 요청되는 것보다 적은 경우, 각각의 쇼티지를 위해 128 바이트의 제로가 전송된다. k_reply 및 k_null_reply 는 이 메시지를 완료하는데 사용된다.
[SP 인터럽트]
이 메시지의 입력 파라미터는 다음과 같이 한정된다.
sp_set_sp_interrupt_msg (SP_MSG,***);
이 메시지는 SP 부트 롬에 나타난 온보드 디버그 모니터에 대한 제어를 통과시킬 것을 S 설비에게 알린다. 이 메시지가 완료된 후, S 설비는 모니터가 제어를 복귀시킬 때까지 더이상 어떠한 메시지도 지급하지 않는다. k_null_reply 는 항상 이 메시지용으로 복귀된다.
S 설비 메시지 구조는 다음과 같다.
typedef struct psa_msg { /* 메시지 템플리트 */
SP_HEADER header;
vme_t vme_addr;
u_long sram_addr;
u_char msd_body[K_MSG_SIZE -32];
void (*rtnadr) (); /* 기존 메시지의 복귀 어드레스 */
struct psa_msg *rblink; /* 작업영역 또는 msg 링크를 가리킴 */
u_long start_time;
} SP_MSG;
typedef struct {
char vme_bus_request_level;
char access_mode;
char number_of_disks;
char number_of_banks;
short firmware_revision;
short hardware_revision;
int total_sector[3]
int stripe_size[3]
int online_drive_bit_map[3]
} config_data;
typedef struct {
SP_HEADER header; /* 바이트 0-7 */
config_data *vme_ptr; /* 바이트 8-11 */
long data_length; /* config_data의 사이즈 바이트 12-15 */
} SEND_CONFIG_MSG;
typedef struct {
SP_HEADER header; /* 바이트 0-7 */
config_data * vme_pointer;
long data_length;
} RECEIVE_CONFIG_MSG;
typedef struct {
SP_HEADER header; /* 바이트 0-7 */
char scsi_id; /* 바이트 8 */
char disk_number; /* 바이트 9 */
short reserved; /* 바이트 10-11 */
short sector_count; /* 바이트 12-13 */
short erase_sector_count; /* 바이트 14-15 */
long sector_address; /* 바이트 16-19 */
u_long vme_address; /* 바이트 20-23 */
} SP_RDWR_MSG;
typedef struct {
SP_HEADER header; /* 바이트 0-7 */
char scsi_id; /* 바이트 8 */
char disk_number; /* 바이트 9 */
short reserved; /* 바이트 10-11 */
short sector_count; /* 바이트 12-13 */
short cache_page_size; /* 바이트 14-15 */
long sector_address; /* 바이트 16-19 */
u_long vme_address[10]; /* 바이트 20-23 */
} SP_RDWR_MSG;
typedef struct {
SP_HEADER header; /* 바이트 0-7 */
char scsi_id; /* 바이트 8 */
char scsi_port; /* 바이트 9 */
char scsi_lun_address; /* 바이트 10 */
char command_length; /* 바이트 11 */
u_long data_length; /* 바이트 12-15 */
u_long data_buffer_address; /* 바이트 16-19 */
char command_bytes[20]; /* 바이트 20-39 */
u_long sense_length; /* 바이트 40-43 */
u_long sense_addr; /* 바이트 44-47 */
} SP_IOCTL_MSG;
Ⅳ. 시동 동작
A. IFC 초기화
다음의 차트는 시스템 부트중에 발생하는 시스템 동작을 요약한 것이다.
SP 동종 프로세서는 온보드 EPROM 으로부터 부트된다. SP 부트 프로그램은, 파워 온 진단 및 준비상태로의 초기화를 제공하는 것 외에도 완전한 S 설비를 포함한다. 따라서, SP 동종 프로세서는 준비상태를 입력하면 SCSI 디스크 및 테이프 동작을 수행할 수 있다. 준비상태에서, NC, FC, SP 및 H 프로세서는 각각의 형태의 설비의 완전한 예로서 다운로드될 수 있다. 다운로드 프로그램은 지역 공유메모리내에 로드될 수 있다. 예를 들어, S 설비의 경우 프로그램은 지역 256K 정적 램내에 로드된다. 램 특히 정적 램으로의 다운로드로 인해, 설비가 더빨리 실행되고 서설비 소프트웨어의 최신 릴리즈를 사용할 수 있게 된다.
SP 프로세서를 파워 업 또는 리세트한 후, 부트 프로그램을 실행하는 호스트 설비는 SP 상태 레지스터내에서 준비상태 값을 나타냄으로써 준비를 배치하게 위해 SP 부트 프로그램을 대기한다.
S 부트 프로그램이 준비를 배치하면, 호스트 부트 프로그램으로부터 섹터 판독 메시지가 사용되어 디스크 블록을 VME 메모리 위치에서 검색할 수 있다. 일반적으로, 판독요청은 디스크 블록 0, 부트 블록으로부터 호스트 설비를 로드하는 것이다. 파워 업이 된 후 S 설비의 read_sector 메시지를 준비함으로써 지역 호스트 부트 프로그램은 (정산 read_sector 메시지 내용에 더하여) 다음을 지정한다.
sender_pid=0xffffffff
dest_pid=0x00000001
이와 같이 지정함으로써, 지역 호스트 부트 프로그램은 S 설비에 신호를 보내어 정상 IFC 응답 프로토콜을 바이패스 시키고, 원래의 메시지 이미지내의 0xffffffff 메시지 값을 메시지 서술기의 값과 같은 다른 값으로 변경시킴으로써 직접 응답완료신호를 보낸다. 즉, 섹터 판독 메시지가 확립된 후에, 호스트 부트 프로그램은 메시지 서술기를 S 설비에 기록한다. 그러면, 호스트 부트 프로그램은 이 sender-pid 단어를 폴링하여 메시지가 완료된 때를 결정한다. S 설비로 전송되는 메시지는 이와 같은 방법으로, 완전한 호스트 설비 부트가 완료될 때 까지 전송된다.
지역 호스트 부트 프로그램이 호스트 설비를 로드하고 그 초기화를 실행하기 시작하면, 호스트 설비는 일반적으로 S 설비와의 정상 IFC 통신으로 전환된다. 이를 달성하기 위해, 지역 호스트 설비는 IFC 초기화 메시지늘 S 설비에 전송한다. 이 메시지를 수신한 후에, S 설비는 다음의 정보를 포함하기 위해 메시지에 의해 지정되는 공유메모리 블록을 예상한다.
바이트 00-03 -- 부트록, 지역 호스트 설비와의 동기를 제공한다.
바이트 04-05 -- S 설비 보드 슬롯 id
바이트 06-07 -- 예약됨.
바이트 08-09 -- 이 보드의 IFC 가상 슬롯 ID
바이트 10-11 -- 시스템 제어기 프로세스 신호
바이트 12-27 -- 시스템 제어기 fifo 서술기
바이트 00-01 -- 시스템 제어기 fifo 형태
바이트 02-03 -- 시스템 제어기 슬롯 id
바이트 04-07 -- fifo 어드레스
바이트 08-09 -- 소프트 fifo 인덱스
바이트 10-11 -- 소프트 fifo 인덱스 마스크
바이트 12-13 -- 인터럽트 요청레벨
바이트 14-15 -- 인터럽트 벡터 어드레스
바이트 28-31 -- 이 공통 메모리의 어드레스
바이트 32-35 -- 이 공통 메모리의 사이즈
바이트 36-39 -- S 설비의 하드웨어 fifo 어드레스
S 설비가 하는 첫번째 것은 부트록 변수를 체크하는 것이다. BOOTMASTER 값으로 설정될 때, 이는 지역 호스트 설비가 S 설비로 부터 메시지를 수신하기 위해 업되고 준비됨을 의미한다. 그렇지 않으면, S 설비는 지역 호스트 설비를 대기하여 초기화를 완료하고 부트록 단어를 세트한다. 부트록 단어가 변경되는 즉시, S 설비는 IFC 초기화를 수행한다. 다음의 IFC 메시지는 지역 호스트 설비로 전송된다.
1. FIFO 레지스터
2. 시스템 구성을 획득
3. 초기화 완료
4. 레지스터 이름
5. FIFO 해결
두번째 메시지로 부터 S 설비는 누가 시스템내의 어느 VME 슬롯내에 있는지를 알 수 있다. S 설비는 1의 프로세서 ID로 단지 하나의 이름 SPn ( n은 0 또는 1 )을 기입하게 된다. 따라서, S 설비로 향하는 모든 메시지는 PID = SP_SLOT 16 + 0x0001 을 지정한다. 기본적으로, 프로세서 ID(PID) 는 4 바이트 단어이며, 여기서 고차수 두 바이트는 프로세서의 VME 슬롯 ID 를 포함한다. 저차수 두 바이트는 프로세서내의 프로세를 지정한다.
레지스터 FIFO 메시지는 통상적으로 S 설비의 fifo 어드레스에 대해 지역 호스트 설비에 알린다. get 시스템 구성 메시지는 지역 호스트 설비로부터 모든 이용가능한 프로세서를 서술한 표를 검색한다. 초기화 완료 메시지를 사용하여 초기화를 완료한 후, S 설비는 호스트 설비에 S 설비 서비스 프로세스가 업되고 실행됨을 알리는 레지스터 네임 메시지를 등록함으로써 서비스를 광고한다. 또다른 설비가 메시지를 처음으로 S 설비에 전송하면, S 설비는 호스트 설비를 향하는 리졸브 FIFO 메시지를 사용하여 응답에 필요한 fifo 어드레스를 획득한다.
이상과 같이, 대량의 네트워크 화일시스템 요청을 서비스하는데 특히 적합한 효율적이고 확장가능한 다중 프로세서 시스템을 제어하는 다중 설비 운영체제 구조가 설명되었다.
본 발명은 여러가지로 변경이 가능하다. 따라서, 이하에서 기재하는 특허청구의 범위를 벗어나지 않는 한, 여기에서 설명한 것과는 다른 실시예를 실현할 수 있다.

Claims (10)

  1. 사용자 요청에 응답하여 서버 데이타를 전송하는 서버 시스템구조에 있어서, 운영 체제 커널부, 제1 메시징 구성 요소 및 제1예의 통신 구성요소, 화일시스템 구성요소와 기억 억세스 구성요소를 가진 다수의 구성 요소를 포함하는 운영체제를 실행하는 호스트 프로세서 수단, 제2메시징 구성 요소 및 제2예의 상기 통신 구성요소를 가진 제1서브세트의 상기 운영체제를 포함하는 통신 제어 프로그램을 실행하는 통신 프로세서 수단, 제3메시징 구성 요소 및 제2예의 상기 화일시스템 구성요소를 가진 제2서브세트의 상기 운영체제를 포함하는 화일시스템 제어 프로그램을 실행하는 화일시스템 프로세서 수단과, 제4메시징 구성요소 및 제2예의 상기 기억 억세스 구성요소를 가진 제3서브세트의 상기 운영 체제를 포함하는 기억 억세스 제어 프로그램을 실행하는 기억 프로세서 수단을 구비하는데, 상기 제1, 2 및 3서브세트의 상기 운영 체제는 상기 운영 체제 커널부를 제외하고, 상기 제2, 3 및 4메시징 구성 요소는 제각기 다른 상기 제2, 3 및 4 메시징 구성요소로 메시지를 전송하고 수신하는 수단을 포함하는 것을 특징으로 하는 서버시스템 구조.
  2. 제2항에 있어서, 상기 통신 제어 프로그램은 사전 설정된 사용자 요청에 응답하는데, 상기 제2예의 상기 통신 구성요소는 상기 사전 설정된 사용자 요청을 사전 설정된 화일시스템 요청으로 분해(resolve)하는 수단을 포함하며, 상기 제2예의 상기 통신 구성요소는 상기 제2메시징 구성요소에 결합되어 사기 사전 설정된 화일시스템 요청을 전달하고, 상기 화일시스템 구성요소는 상기 제3메시징 구성요소에 결합되어 상기 사전 설정된 화일시스템 요청을 전달하며, 상기 제2메시징 구성요소는 상기 제3메시징 구성요소에 결합되어 상기 사전설정된 화일시스템 요청을 식별하는 제1사전 설정된 메시지를 제공하는 것을 특징으로 하는 서버시스템 구조.
  3. 제3항에 있어서, 상기 제2예의 상기 화일시스템 구성요소는 상기 사전설정된 화일시스템 시스템을 사전 설정된 기억 억세스 요청으로 분해하는 수단을 포함하며, 상기 기억 억세스 구성요소는 상기 제4메시징 구성요소에 결합되어 상기 사전 설정된 기억 억세스 요청을 수신하고, 상기 제3메시징 구성요소는 상기 제4메시징 구성요소에 결합되어 상기 사전 설정된 기억 억세스 요청을 식별하는 제2 미리 정해진 메시지를 제공하는 것을 특징으로 하는 서버시스템 구조.
  4. 제4항에 있어서, 상기 사전 설정된 기억 억세스 요청은 사전 설정된 데이타를 식별하고, 상기 구조는 데이타를 기억하는 메모리 수단을 더 포함하며, 상기 화일 시스템 구성요소는 상기 사전 설정된 데이타를 기억하는 상기 메모리 수단내에 사전 설정된 데이타 스페이스를 할당하고, 상기 기억 억세스 구성요소는 상기 사전 설정된 기억 억세스 요청에 응답하여 상기 사전 설정된 데이타 스페이스에 대해 데이타를 전송하는 것을 특징으로 하는 서버시스템 구조.
  5. 제5항에 있어서, 상기 통신 구성요소는 상기 사전 설정된 화일시스템 요청에 응답하여 상기 사전 설정된 데이타 스페이스에 대해 데이타를 전송하는 것을 특징으로 하는 서버시스템 구조.
  6. 네트워크를 통해 수신된 사용자 요청에 응답하는 네트워크 화일서버에 있어서, 운영체제를 실행하는 호스트 프로세서 수단으로서, 상기 운영체제는 운영체제 커널부, 제1 메시징부와 제1예의 제1 네트워크 통신부 및 제1 화일 시스템부를 포함하고, 상기 운영체제 커널부는 제1 인터페이스를 통해 상기 제1예의 상기 제1 네트워크 통신부에 결합되고, 제2 인터페이스를 통해서는 상기 제1 예의 상기 제1화일 시스템부에 결합되는 호스트 프로세서 수단, 제2 네트워크 통신부 및 제2 메시징부를 포함한 동종 설비를 실행시키는 네트워크 프로세서 수단으로서, 상기 제2 네트워크 통신부는 제2 예의 상기 제1 네트워크 통신부이고, 상기 제2 메시징부는 상기 제1 인터페이스와 실질적으로 동일한 상기 제2 네트워크 통신부에 결합되어, 제3 인터페이스를 상기 제2 네트워크 통신부에 제공하며, 상기 네트워크 통신부는 사용자 요청에 응답하여 화일시스템 요청을 생성시켜 이를 상기 제3 인터페이스에 제공하고, 상기 제2 메시징 수단은 상기 화일시스템 요청에 응답하여 화일시스템 요청 메시지를 전송하는 네트워크 프로세서 수단과, 제2 화일시스템부 및 제3 메시징부를 포함하는 동종 설비를 실행시키는 화일시스템 프로세서 수단으로서, 상기 제2 화일시스템부는 제2 예의 상기 제1 화일시스템부이고, 상기 제3 메시징부는 상기 제2 인터페이스와 실질적으로 동일한 상기 제2 화일시스템부에 결합되어, 제4 인터페이스를 상기 제2 화일시스템부에 제공하고, 상기 제3 메시징부는 상기 호스트 수단에 대해 상기 화일시스템 요청메시지를 자발적으로 수신하는 수단을 포함하는 화일시스템 프로세서 수단을 구비하는 것을 특징으로 하는 네트워크 화일 서버.
  7. 제7항에 있어서, 상기 네트워크 프로세서 수단에 결합되어, 데이타를 기억하는 수단을 더 포함하는데, 상기 제3 메시징부는 상기 화일시스템 요청 메시지에 응답하여 상기 화일시스템 요청을 상기 제4 인터페이스에 제공하며, 상기 화일시스템부는 상기 화일시스템 요청에 응답하여 데이타를 상기 기억수단으로 전송하거나 그로부터 전송하는 수단을 포함하는 것을 특징으로 하는 네트워크 화일 서버.
  8. 네트워크 화일서버로서, 회전 디스크 데이타 기억 매체에 대해 데이타를 전송하도록 데이타 기억 요청을 처리하는 기억 인터페이스수단, 상기 데이타 기억 요청을 상기 기억 인터페이스 수단에 제공하도록 화일시스템 요청을 처리하는 화일시스템 인터페이스 수단, 상기 화일시스템 요청을 상기 화일시스템 인터페이스 수단에 제공하고, 근거리 통신망에 대해 데이타를 전송하도록 상기 근거리 통신망을 통해 전달된 데이타 패킷을 처리하는 네트워크 인터페이스 수단, 상기 기억 인터페이스 수단, 상기 화일시스템 인터페이스 수단 및 상기 네트워크 인터페이스 수단을 결합하는 수단으로서, 상기 기억 인터페이스 수단 및 상기 네트워크 인터페이스 수단간의 직접 데이타 전송 경로를 제공하고, 상기 네트워크 인터페이스 수단 및 상기 화일시스템 인터페이스 수단간의 직접 화일시스템 요청 전송 경로와, 상기 화일시스템 인터페이스 수단 및 상기 기억 인터페이스 수단간의 직접 데이타 기억 요청경로를 제공하는 결합 수단을 구비하는 것을 특징으로 하는 네트워크 화일 서버.
  9. 네트워크 화일 서버로서, 회전 디스크 데이타 기억 매체에 대해 데이타를 전송하도록 데이타 기억 요청을 처리하는 기억 인터페이스 수단, 상기 데이타 기억 요청을 상기 기억 인터페이스 수단에 제공하도록 화일 시스템 요청을 처리하는 화일시스템 인터페이스 수단, 상기 화일시스템 요청을 상기 화일시스템 인터페이스 수단에 제공하고, 근거리 통신망에 대해 데이타를 전송하도록 상기 근거리 통신망을 통해 전달된 데이타 패킷을 처리하는 네트워크 인터페이스 수단과, 상기 기억 인터페이스 수단, 상기 화일 시스템 인터페이스 수단 및 상기 네트워크 인터페이스 수단을 결합하는 수단을 구비하는데, 상기 결합 수단은 상기 기억 인터페이스 수단 및 상기 네트워크 인터페이스 수단 사이의 직접 데이타 전송 경로를 제공하고, 상기 결합수단은 상기 네트워크 인터페이스 수단 및 상기 화일시스템 인터페이스 수단사이의 직접 화일시스템 요청 전송 경로와, 상기 화일시스템 인터페이스 수단 및 상기 기억 인터페이스 수단 사이의 직접 데이타 기억 요청 경로를 제공하며, 상기 직접 데이타 전송 경로는 상기 기억 인터페이스 수단 및 상기 네트워크 인터페이스 수단이 상기 근거리 통신망으로 및 그로부터 전송된 데이타를 직접 교환하는 상기 네트워크 인터페이스 수단 및 상기 기억 인터페이스 수단 사이에 결합된 데이타 버퍼를 포함하고, 상기 직접 화일시스템 요청 전송 경로는 상기 기억 인터페이스 수단 및 상기 네트워크 인터페이스 수단 사이의 데이타의 전송을 요청하는 화일시스템 명령을 통과시키도록 상기 네트워크 인터페이스 수단 및 상기 화일시스템 인터페이스 수단 사이에 직접 결합된 제1 명령 경로를 포함하며, 상기 직접 데이타 기억 요청 경로는 상기 기억 인터페이스 수단 및 상기 네트워크 인터페이스 수단 사이에 데이타의 전송을 요청하는 기억 시스템 명령을 통과시키도록 상기 화일 시스템 인터페이스 수단 및 상기 기억 인터페이스 수단 사이에 직접 결합된 제2 명령 경로를 포함하는 것을 특징으로 하는 네트워크 화일 서버.
  10. 제1 및 제2 네트워크 요청 타입을 포함하는 네트워크 요청을 교환하는 네트워크에 결합 가능한 네트워크 화일 서버 시스템으로서, 상기 제1 및 2 네트워크 요청 타입의 세트는 네트워크 운영 체제를 수행시킬 수 있는 네트워크 요청 세트에 대응하고, 상기 네트워크 운영체제는 통상적으로 네트워크 요청세트를 수행할 시에 참여하는 다수의 설비를 포함하는 네트워크 화일 서버 시스템에 있어서, 네트워크 운영체제의 기억 설비를 포함하며, 기억 요청에 응답하여 데이타 기억 매체에 대한 데이타를 전송하는 기억 수단, 네트워크 운영체제의 화일 시스템 설비를 포함하며 화일 요청에 응답하여 기억 요청을 생성시키는 화일 시스템 수단과, 상기 네트워크 운영체제의 네트워크 설비를 포함하여, 네트워크와 네트워크 요청의 상기 제1 및 2 타입을 교환하는 네트워크 수단을 구비하는데, 상기 네트워크 설비는 네트워크 요청의 상기 제1 세트의 네트워크 요청에 응답하여 화일 요청을 생성시키는 수단을 포함하고, 상기 네트워크 수단은 상기 화일 요청을 배타적으로 상기 화일시스템 수단에 제공하는 것을 특징으로 하는 네트워크 화일 서버 시스템.
KR1019920700523A 1989-09-08 1992-03-07 다중설비운영체제구조 KR100201772B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US40488589A 1989-09-08 1989-09-08
US404,885 1989-09-08
PCT/US1990/004701 WO1991004540A1 (en) 1989-09-08 1990-08-20 Multiple facility operating system architecture

Publications (2)

Publication Number Publication Date
KR920704226A KR920704226A (ko) 1992-12-19
KR100201772B1 true KR100201772B1 (ko) 1999-06-15

Family

ID=23601436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920700523A KR100201772B1 (ko) 1989-09-08 1992-03-07 다중설비운영체제구조

Country Status (11)

Country Link
US (2) US5485579A (ko)
EP (1) EP0490980B1 (ko)
JP (1) JP2945757B2 (ko)
KR (1) KR100201772B1 (ko)
AT (1) ATE179811T1 (ko)
AU (1) AU651321B2 (ko)
CA (1) CA2066566C (ko)
DE (1) DE69033092D1 (ko)
HK (1) HK1014064A1 (ko)
IL (1) IL95449A (ko)
WO (1) WO1991004540A1 (ko)

Families Citing this family (307)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
LU87602A1 (fr) * 1989-10-05 1991-05-07 Glaverbel Procede de formation d'une masse refractaire et lance de projection d'un melange de particules
DE59206826D1 (de) * 1992-09-28 1996-08-29 Siemens Ag Prozesssteuerungssystem
JPH06301555A (ja) * 1993-02-26 1994-10-28 Internatl Business Mach Corp <Ibm> マイクロカーネル上の複数の共存オペレーティング・システム・パーソナリティ用のシステム
JP3552258B2 (ja) * 1993-12-27 2004-08-11 株式会社日立製作所 分散計算機システム及びその情報管理方法
US5603019A (en) * 1994-07-25 1997-02-11 International Business Machines Corporation Takeover technique for networked virtual filesystems
US5513351A (en) * 1994-07-28 1996-04-30 International Business Machines Corporation Protecting a system during system maintenance by usage of temporary filenames in an alias table
US6243762B1 (en) * 1994-08-08 2001-06-05 Mercury Computer Systems, Inc. Methods and apparatus for data access and program generation on a multiprocessing computer
US5604890A (en) * 1994-08-16 1997-02-18 Miller; Paul B. Coupling device for the switching of data lines between a data storage device controller and a plurality of bootable data storage devices
US5828879A (en) * 1994-12-22 1998-10-27 Fore Systems, Inc. Method and a scheduler for controlling when a server provides service to an entity
US6739514B2 (en) * 1995-03-20 2004-05-25 Symbol Technologies, Inc. Sales transaction system with electronic coupon processing
US5721876A (en) * 1995-03-30 1998-02-24 Bull Hn Information Systems Inc. Sockets application program mechanism for proprietary based application programs running in an emulation environment
US5765151A (en) * 1995-08-17 1998-06-09 Sun Microsystems, Inc. System and method for file system fix-on-panic for a computer operating system
US6098128A (en) 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US5774670A (en) 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
EP0770966B1 (en) * 1995-10-27 2002-08-28 Ncr International Inc. Method and apparatus for computing filenames with a high probability of uniqueness
US5754788A (en) * 1995-12-28 1998-05-19 Attachmate Corporation Method and system for reconfiguring a communications stack
US5790846A (en) * 1996-04-18 1998-08-04 International Business Machines Corporation Interrupt vectoring for instruction address breakpoint facility in computer systems
US5963737A (en) * 1996-04-18 1999-10-05 International Business Machines Corporation Interupt vectoring for trace exception facility in computer systems
US5758168A (en) * 1996-04-18 1998-05-26 International Business Machines Corporation Interrupt vectoring for optionally architected facilities in computer systems
US6625641B1 (en) * 1996-06-03 2003-09-23 Sun Microsystems, Inc. Method and apparatus for providing client support without installation of server software
US5878028A (en) * 1996-06-06 1999-03-02 Advanced Micro Devices, Inc. Data structure to support multiple transmit packets for high performance
US5845094A (en) * 1996-06-11 1998-12-01 Data General Corporation Device access controller and remote support facility for installation of cabling in a multiprocessor system
US6314406B1 (en) * 1996-06-26 2001-11-06 Telxon Corporation Customer information network
US6735676B1 (en) * 1996-09-02 2004-05-11 Hitachi, Ltd. Method and system for sharing storing device via mutually different interfaces
US20020194075A1 (en) * 1996-12-19 2002-12-19 O'hagan Timothy P. Customer order notification system using mobile computers for use in retail establishiments
GB2321981B (en) * 1997-02-06 2002-01-09 Ibm Hosted machine code installation
US6470389B1 (en) * 1997-03-14 2002-10-22 Lucent Technologies Inc. Hosting a network service on a cluster of servers using a single-address image
US6304904B1 (en) * 1997-03-27 2001-10-16 Intel Corporation Method and apparatus for collecting page-level performance statistics from a network device
JP3242031B2 (ja) * 1997-04-24 2001-12-25 株式会社ブリヂストン Fa情報管理方法及びシステム
US6170017B1 (en) * 1997-05-08 2001-01-02 International Business Machines Corporation Method and system coordinating actions among a group of servers
US6002870A (en) * 1997-05-30 1999-12-14 Sun Microsystems, Inc. Method and apparatus for non-damaging process debugging via an agent thread
US6081807A (en) * 1997-06-13 2000-06-27 Compaq Computer Corporation Method and apparatus for interfacing with a stateless network file system server
US6157959A (en) * 1997-07-03 2000-12-05 Tandem Computers, Incorporated Method and apparatus for providing portable kernel-mode support for fast interprocess communication
US6065045A (en) * 1997-07-03 2000-05-16 Tandem Computers Incorporated Method and apparatus for object reference processing
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US7284070B2 (en) * 1997-10-14 2007-10-16 Alacritech, Inc. TCP offload network interface device
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7167927B2 (en) * 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US6470415B1 (en) 1999-10-13 2002-10-22 Alacritech, Inc. Queue system involving SRAM head, SRAM tail and DRAM body
US7174393B2 (en) * 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6389479B1 (en) 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6807581B1 (en) 2000-09-29 2004-10-19 Alacritech, Inc. Intelligent network storage interface system
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6697868B2 (en) 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US8782199B2 (en) * 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US7185266B2 (en) * 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US7089326B2 (en) * 1997-10-14 2006-08-08 Alacritech, Inc. Fast-path processing for receiving data on TCP connection offload devices
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US7042898B2 (en) 1997-10-14 2006-05-09 Alacritech, Inc. Reducing delays associated with inserting a checksum into a network message
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6061670A (en) * 1997-12-18 2000-05-09 Pitney Bowes Inc. Multiple registered postage meters
US6119170A (en) * 1997-12-29 2000-09-12 Bull Hn Information Systems Inc. Method and apparatus for TCP/IP multihoming on a host system configured with multiple independent transport provider systems
US6665703B1 (en) * 1998-01-02 2003-12-16 Emc Corporation Storage system with internal LAN
US6223186B1 (en) * 1998-05-04 2001-04-24 Incyte Pharmaceuticals, Inc. System and method for a precompiled database for biomolecular sequence information
WO2000002107A2 (de) * 1998-07-03 2000-01-13 Siemens Aktiengesellschaft Verfahren und anordnung zum entwurf einer steuerung für einen gesamtprozess
US6549951B1 (en) * 1998-08-25 2003-04-15 Stmicroelectronics, Inc. Method and device for controlling communications with a serial bus
US7664883B2 (en) * 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US6286047B1 (en) * 1998-09-10 2001-09-04 Hewlett-Packard Company Method and system for automatic discovery of network services
US6230190B1 (en) * 1998-10-09 2001-05-08 Openwave Systems Inc. Shared-everything file storage for clustered system
US6367074B1 (en) * 1998-12-28 2002-04-02 Intel Corporation Operation of a system
US6654772B1 (en) * 1999-04-28 2003-11-25 Emc Corporation Multi-volume extent based file system
US6801943B1 (en) * 1999-04-30 2004-10-05 Honeywell International Inc. Network scheduler for real time applications
US6658484B1 (en) * 1999-09-23 2003-12-02 Sharp Laboratories Of America, Incorporated Message control system
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
EP1912124B8 (en) 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
WO2001035569A1 (en) * 1999-11-12 2001-05-17 Network Privacy.Com, Inc. Method and system for data encryption and filtering
FR2801459B1 (fr) * 1999-11-23 2001-12-21 Bull Sa Dispositif informatique pour securiser des messages au niveau d'une couche reseau
US6883049B1 (en) 1999-12-16 2005-04-19 International Business Machines Corporation Method and system for making an open system volume accessible to an MVS system
US8612553B2 (en) * 2000-01-14 2013-12-17 Microsoft Corporation Method and system for dynamically purposing a computing device
JP3696515B2 (ja) * 2000-03-02 2005-09-21 株式会社ソニー・コンピュータエンタテインメント カーネル機能実現構造及びそれを備えたエンタテインメント装置、カーネルによる周辺ディバイスの制御方法
US6671733B1 (en) * 2000-03-24 2003-12-30 International Business Machines Corporation Internal parallel system channel
US7013394B1 (en) * 2000-04-18 2006-03-14 International Business Machines Corporation Data flow pattern recognition and manipulation
US7493486B1 (en) * 2000-06-09 2009-02-17 Verizon Laboratories, Inc. Method and apparatus for supporting cryptographic-related activities in a public key infrastructure
US6735687B1 (en) 2000-06-15 2004-05-11 Hewlett-Packard Development Company, L.P. Multithreaded microprocessor with asymmetrical central processing units
US7219158B2 (en) * 2000-07-21 2007-05-15 Hughes Network Systems Llc Method and system for improving network performance using a performance enhancing proxy
US6728897B1 (en) 2000-07-25 2004-04-27 Network Appliance, Inc. Negotiating takeover in high availability cluster
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6720074B2 (en) * 2000-10-26 2004-04-13 Inframat Corporation Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof
AU2002223656A1 (en) * 2000-12-09 2002-06-18 International Business Machines Corporation Intercommunication preprocessor
US7730213B2 (en) * 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6868417B2 (en) 2000-12-18 2005-03-15 Spinnaker Networks, Inc. Mechanism for handling file level and block level remote file accesses using the same server
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20020161850A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path accelerator for storage systems
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US6616049B1 (en) 2001-04-10 2003-09-09 Symbol Technologies, Inc. Retail sales customer marketing system with electronic coupon processing
US20040143813A1 (en) * 2001-05-30 2004-07-22 Kentaro Hanma System development supporting apparatus, system development supporting method, and computer-readable recorded medium
US6714953B2 (en) * 2001-06-21 2004-03-30 International Business Machines Corporation System and method for managing file export information
US6928478B1 (en) 2001-06-25 2005-08-09 Network Appliance, Inc. Method and apparatus for implementing a MAC address pool for assignment to a virtual interface aggregate
US6643654B1 (en) 2001-06-25 2003-11-04 Network Appliance, Inc. System and method for representing named data streams within an on-disk structure of a file system
US7469295B1 (en) 2001-06-25 2008-12-23 Network Appliance, Inc. Modified round robin load balancing technique based on IP identifier
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US20030135547A1 (en) * 2001-07-23 2003-07-17 Kent J. Thomas Extensible modular communication executive with active message queue and intelligent message pre-validation
WO2003017111A1 (en) * 2001-07-23 2003-02-27 Cognis Corporation Extensible modular communication executive with active message queue and intelligent message pre-validation
US6757695B1 (en) 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6920579B1 (en) 2001-08-20 2005-07-19 Network Appliance, Inc. Operator initiated graceful takeover in a node cluster
US7783727B1 (en) * 2001-08-30 2010-08-24 Emc Corporation Dynamic host configuration protocol in a storage environment
US7730153B1 (en) 2001-12-04 2010-06-01 Netapp, Inc. Efficient use of NVRAM during takeover in a node cluster
US6938070B2 (en) * 2001-12-17 2005-08-30 Dassault Systemes Conflict resolution for collaborative work system
US7159080B1 (en) 2001-12-20 2007-01-02 Network Appliance, Inc. System and method for storing storage operating system data in switch ports
US7146522B1 (en) 2001-12-21 2006-12-05 Network Appliance, Inc. System and method for allocating spare disks in networked storage
US7296068B1 (en) * 2001-12-21 2007-11-13 Network Appliance, Inc. System and method for transfering volume ownership in net-worked storage
US7650412B2 (en) 2001-12-21 2010-01-19 Netapp, Inc. Systems and method of implementing disk ownership in networked storage
US6836832B1 (en) 2001-12-21 2004-12-28 Network Appliance, Inc. System and method for pre-selecting candidate disks based on validity for volume
US6895429B2 (en) * 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
US7360034B1 (en) 2001-12-28 2008-04-15 Network Appliance, Inc. Architecture for creating and maintaining virtual filers on a filer
US20030121835A1 (en) * 2001-12-31 2003-07-03 Peter Quartararo Apparatus for and method of sieving biocompatible adsorbent beaded polymers
US20030145230A1 (en) * 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7523216B1 (en) 2002-02-01 2009-04-21 Network Appliance, Inc. System and method for using an endian-neutral data packet to define subsequent data packet byte-order
US6968345B1 (en) * 2002-02-27 2005-11-22 Network Appliance, Inc. Technique to enable support for symbolic link access by windows clients
US7389315B1 (en) 2002-02-28 2008-06-17 Network Appliance, Inc. System and method for byte swapping file access data structures
US7039828B1 (en) 2002-02-28 2006-05-02 Network Appliance, Inc. System and method for clustered failover without network support
US6748510B1 (en) 2002-02-28 2004-06-08 Network Appliance, Inc. System and method for verifying disk configuration
US7373364B1 (en) 2002-03-05 2008-05-13 Network Appliance, Inc. System and method for creating a point-in-time restoration of a database file
US7210068B1 (en) 2002-03-06 2007-04-24 Network Appliance, Inc. System and method for multipath I/O support for fibre channel devices
US7080278B1 (en) 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7313557B1 (en) 2002-03-15 2007-12-25 Network Appliance, Inc. Multi-protocol lock manager
US7194519B1 (en) 2002-03-15 2007-03-20 Network Appliance, Inc. System and method for administering a filer having a plurality of virtual filers
US7143307B1 (en) 2002-03-15 2006-11-28 Network Appliance, Inc. Remote disaster recovery and data migration using virtual appliance migration
US7043485B2 (en) * 2002-03-19 2006-05-09 Network Appliance, Inc. System and method for storage of snapshot metadata in a remote file
US7051050B2 (en) * 2002-03-19 2006-05-23 Netwrok Appliance, Inc. System and method for restoring a single file from a snapshot
US7475098B2 (en) * 2002-03-19 2009-01-06 Network Appliance, Inc. System and method for managing a plurality of snapshots
US7467167B2 (en) * 2002-03-19 2008-12-16 Network Appliance, Inc. System and method for coalescing a plurality of snapshots
US7039663B1 (en) 2002-04-19 2006-05-02 Network Appliance, Inc. System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot
US6993539B2 (en) 2002-03-19 2006-01-31 Network Appliance, Inc. System and method for determining changes in two snapshots and for transmitting changes to destination snapshot
US7010553B2 (en) 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
US7007046B2 (en) 2002-03-19 2006-02-28 Network Appliance, Inc. Format for transmission file system information between a source and a destination
US7225204B2 (en) * 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
US6895413B2 (en) * 2002-03-22 2005-05-17 Network Appliance, Inc. System and method for performing an on-line check of a file system
US7418500B1 (en) 2002-03-25 2008-08-26 Network Appliance, Inc. Mechanism for controlled sharing of files in a clustered application environment
US7155458B1 (en) 2002-04-05 2006-12-26 Network Appliance, Inc. Mechanism for distributed atomic creation of client-private files
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7496689B2 (en) * 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
JP4014923B2 (ja) * 2002-04-30 2007-11-28 株式会社日立製作所 共有メモリ制御方法および制御システム
US7707263B1 (en) 2002-05-03 2010-04-27 Netapp, Inc. System and method for associating a network address with a storage device
US6920484B2 (en) * 2002-05-13 2005-07-19 Nvidia Corporation Method and apparatus for providing an integrated virtual disk subsystem
US7120653B2 (en) * 2002-05-13 2006-10-10 Nvidia Corporation Method and apparatus for providing an integrated file system
US6976146B1 (en) 2002-05-21 2005-12-13 Network Appliance, Inc. System and method for emulating block appended checksums on storage devices by sector stealing
US7783787B1 (en) 2002-06-13 2010-08-24 Netapp, Inc. System and method for reprioritizing high-latency input/output operations
US7584279B1 (en) 2002-07-02 2009-09-01 Netapp, Inc. System and method for mapping block-based file operations to file level protocols
US7386546B1 (en) 2002-07-09 2008-06-10 Network Appliance, Inc. Metadirectory namespace and method for use of the same
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7711539B1 (en) 2002-08-12 2010-05-04 Netapp, Inc. System and method for emulating SCSI reservations using network file access protocols
US6983296B1 (en) 2002-08-12 2006-01-03 Network Appliance, Inc. System and method for tracking modified files in a file system
CA2496664C (en) * 2002-08-23 2015-02-17 Exit-Cube, Inc. Encrypting operating system
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7337241B2 (en) * 2002-09-27 2008-02-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7191241B2 (en) * 2002-09-27 2007-03-13 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7707184B1 (en) 2002-10-09 2010-04-27 Netapp, Inc. System and method for snapshot full backup and hard recovery of a database
US7340486B1 (en) * 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
JP2004152136A (ja) * 2002-10-31 2004-05-27 Matsushita Electric Ind Co Ltd データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US20040088262A1 (en) * 2002-11-06 2004-05-06 Alacritech, Inc. Enabling an enhanced function of an electronic device
JP4116413B2 (ja) * 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
US7406481B2 (en) 2002-12-17 2008-07-29 Oracle International Corporation Using direct memory access for performing database operations between two or more machines
US7069307B1 (en) 2002-12-20 2006-06-27 Network Appliance, Inc. System and method for inband management of a virtual disk
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
US8015266B1 (en) 2003-02-07 2011-09-06 Netapp, Inc. System and method for providing persistent node names
US7197490B1 (en) 2003-02-10 2007-03-27 Network Appliance, Inc. System and method for lazy-copy sub-volume load balancing in a network attached storage pool
US7809693B2 (en) * 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
JP2004246779A (ja) * 2003-02-17 2004-09-02 Nec Corp マルチプロセッサシステム及びデバイス共有方法
US7231489B1 (en) 2003-03-03 2007-06-12 Network Appliance, Inc. System and method for coordinating cluster state information
US7155460B2 (en) * 2003-03-18 2006-12-26 Network Appliance, Inc. Write-once-read-many storage system and method for implementing the same
US7231409B1 (en) 2003-03-21 2007-06-12 Network Appliance, Inc. System and method for reallocating blocks in checkpointing bitmap-based file systems
US7111021B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. System and method for efficient space accounting in a file system with snapshots
US20040221299A1 (en) * 2003-03-31 2004-11-04 Simon Gibbs Method and apparatus for developing interface protocols for peer to peer applications
US7284014B2 (en) 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system
US7219206B1 (en) * 2003-04-11 2007-05-15 Sun Microsystems, Inc. File system virtual memory descriptor generation interface system and method
US7383378B1 (en) * 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7457982B2 (en) 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
EP1473630A3 (en) * 2003-04-11 2007-10-10 Samsung Electronics Co., Ltd. Computer system and method of setting an interface card therein
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7191437B1 (en) 2003-04-23 2007-03-13 Network Appliance, Inc. System and method for reliable disk firmware update within a networked storage fabric
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7293203B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. System and method for logging disk failure analysis in disk nonvolatile memory
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7181439B1 (en) 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7536674B2 (en) * 2003-08-13 2009-05-19 Intel Corporation Method and system for configuring network processing software to exploit packet flow data locality
US7865485B2 (en) * 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7590807B2 (en) 2003-11-03 2009-09-15 Netapp, Inc. System and method for record retention date in a write once read many storage system
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7783611B1 (en) 2003-11-10 2010-08-24 Netapp, Inc. System and method for managing file metadata during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7698289B2 (en) * 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7921110B1 (en) 2003-12-23 2011-04-05 Netapp, Inc. System and method for comparing data sets
US7340639B1 (en) 2004-01-08 2008-03-04 Network Appliance, Inc. System and method for proxying data access commands in a clustered storage system
US6920586B1 (en) * 2004-01-23 2005-07-19 Freescale Semiconductor, Inc. Real-time debug support for a DMA device and method thereof
US7321982B2 (en) 2004-01-26 2008-01-22 Network Appliance, Inc. System and method for takeover of partner resources in conjunction with coredump
US7266717B2 (en) * 2004-01-26 2007-09-04 Network Appliance, Inc. System and method of selection and communication of a disk for storage of a coredump
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US7379453B1 (en) * 2004-03-29 2008-05-27 Sun Microsystems, Inc. Method and apparatus for transferring multiple packets from hardware
US8230085B2 (en) * 2004-04-12 2012-07-24 Netapp, Inc. System and method for supporting block-based protocols on a virtual storage appliance executing within a physical storage appliance
US7430571B2 (en) * 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7409511B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7409494B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
GB0414293D0 (en) * 2004-06-26 2004-07-28 Ibm System and method for reducing contention in an environment using optimistic locks
FR2872981B1 (fr) * 2004-07-08 2006-09-08 Alcatel Sa Dispositif de gestion de ressources pour un reseau de communications a connexions inter-noeuds associees a des droits de preemption de ressources partagees et de priorite d'acces aux ressources
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US20060080514A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Managing shared memory
US7734753B2 (en) 2004-10-12 2010-06-08 International Business Machines Corporation Apparatus, system, and method for facilitating management of logical nodes through a single management module
US7984085B1 (en) 2004-10-25 2011-07-19 Network Appliance, Inc. Rate of change of data using on-the-fly accounting
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
US7586839B2 (en) * 2004-12-16 2009-09-08 Lenovo Singapore Pte. Ltd. Peer to peer backup and recovery
US8019842B1 (en) 2005-01-27 2011-09-13 Netapp, Inc. System and method for distributing enclosure services data to coordinate shared storage
US8180855B2 (en) 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US8219823B2 (en) * 2005-03-04 2012-07-10 Carter Ernst B System for and method of managing access to a system using combinations of user information
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
US7568056B2 (en) 2005-03-28 2009-07-28 Nvidia Corporation Host bus adapter that interfaces with host computer bus to multiple types of storage devices
ATE512412T1 (de) * 2005-04-25 2011-06-15 Network Appliance Inc System und verfahren zum zwischenspeichern von netzwerkdateisystemen
WO2006116183A1 (en) * 2005-04-25 2006-11-02 Network Appliance, Inc. Architecture for supporting sparse volumes
US7698501B1 (en) 2005-04-29 2010-04-13 Netapp, Inc. System and method for utilizing sparse data containers in a striped volume set
US8073899B2 (en) * 2005-04-29 2011-12-06 Netapp, Inc. System and method for proxying data access commands in a storage system cluster
US7743210B1 (en) 2005-04-29 2010-06-22 Netapp, Inc. System and method for implementing atomic cross-stripe write operations in a striped volume set
US7698334B2 (en) * 2005-04-29 2010-04-13 Netapp, Inc. System and method for multi-tiered meta-data caching and distribution in a clustered computer environment
US7962689B1 (en) 2005-04-29 2011-06-14 Netapp, Inc. System and method for performing transactional processing in a striped volume set
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
US9401822B2 (en) * 2005-06-09 2016-07-26 Whirlpool Corporation Software architecture system and method for operating an appliance exposing key press functionality to a network
US7653682B2 (en) 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US7516285B1 (en) * 2005-07-22 2009-04-07 Network Appliance, Inc. Server side API for fencing cluster hosts via export access rights
US20070022314A1 (en) * 2005-07-22 2007-01-25 Pranoop Erasani Architecture and method for configuring a simplified cluster over a network with fencing and quorum
US20070088917A1 (en) * 2005-10-14 2007-04-19 Ranaweera Samantha L System and method for creating and maintaining a logical serial attached SCSI communication channel among a plurality of storage systems
US8484365B1 (en) 2005-10-20 2013-07-09 Netapp, Inc. System and method for providing a unified iSCSI target with a plurality of loosely coupled iSCSI front ends
EP1949214B1 (en) * 2005-10-28 2012-12-19 Network Appliance, Inc. System and method for optimizing multi-pathing support in a distributed storage system environment
US7797570B2 (en) 2005-11-29 2010-09-14 Netapp, Inc. System and method for failover of iSCSI target portal groups in a cluster environment
US8108048B2 (en) * 2005-11-30 2012-01-31 Medtronic, Inc. Protocol implementation for telemetry communications involving implantable medical devices
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
US7590660B1 (en) 2006-03-21 2009-09-15 Network Appliance, Inc. Method and system for efficient database cloning
US7464238B1 (en) 2006-04-28 2008-12-09 Network Appliance, Inc. System and method for verifying the consistency of mirrored data sets
DE102006042723A1 (de) * 2006-09-12 2008-03-27 Vodafone Holding Gmbh Chipkarte und Verfahren zur softwarebasierten Modifikation einer Chipkarte
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US8489811B1 (en) 2006-12-29 2013-07-16 Netapp, Inc. System and method for addressing data containers using data set identifiers
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
US8190641B2 (en) 2007-02-13 2012-05-29 Netapp, Inc. System and method for administration of virtual servers
US8868495B2 (en) * 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
US8312046B1 (en) 2007-02-28 2012-11-13 Netapp, Inc. System and method for enabling a data container to appear in a plurality of locations in a super-namespace
US8219821B2 (en) 2007-03-27 2012-07-10 Netapp, Inc. System and method for signature based data container recognition
US20080243962A1 (en) * 2007-03-30 2008-10-02 Yasuyuki Mimatsu Method and apparatus for providing and managing a virtual storage namespace
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
US7987383B1 (en) 2007-04-27 2011-07-26 Netapp, Inc. System and method for rapid indentification of coredump disks during simultaneous take over
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US7827350B1 (en) 2007-04-27 2010-11-02 Netapp, Inc. Method and system for promoting a snapshot in a distributed file system
US8898536B2 (en) * 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7797489B1 (en) 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US7865475B1 (en) 2007-09-12 2011-01-04 Netapp, Inc. Mechanism for converting one type of mirror to another type of mirror on a storage system without transferring data
US9003173B2 (en) * 2007-09-28 2015-04-07 Microsoft Technology Licensing, Llc Multi-OS (operating system) boot via mobile device
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8046492B1 (en) * 2007-11-06 2011-10-25 Juniper Networks, Inc. Offset independent filtering
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US7996607B1 (en) 2008-01-28 2011-08-09 Netapp, Inc. Distributing lookup operations in a striped storage system
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US7873060B2 (en) 2008-10-18 2011-01-18 Fortinet, Inc. Accelerating data communication using tunnels
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
US9043288B2 (en) * 2008-10-27 2015-05-26 Netapp, Inc. Dual-phase file system checker
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
US8065422B2 (en) * 2008-11-26 2011-11-22 Netapp, Inc. Method and/or apparatus for certifying an in-band management application of an external storage array
US8793223B1 (en) 2009-02-09 2014-07-29 Netapp, Inc. Online data consistency checking in a network storage system with optional committal of remedial changes
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
US8180973B1 (en) 2009-12-23 2012-05-15 Emc Corporation Servicing interrupts and scheduling code thread execution in a multi-CPU network file server
US7970927B1 (en) * 2009-12-31 2011-06-28 Qlogic, Corporation Concurrent transmit processing
US9596738B2 (en) 2010-09-16 2017-03-14 Terralux, Inc. Communication with lighting units over a power bus
US9158592B2 (en) 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
US8544029B2 (en) 2011-05-24 2013-09-24 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US9411636B1 (en) 2011-07-07 2016-08-09 Emc Corporation Multi-tasking real-time kernel threads used in multi-threaded network processing
CN106462490B (zh) * 2014-03-26 2019-09-24 TiVo解决方案有限公司 多媒体流水线架构
CN109522186B (zh) * 2018-11-19 2021-11-05 郑州云海信息技术有限公司 一种基于Linux磁盘访问的监控方法及系统

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4156907A (en) * 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) * 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4377843A (en) * 1979-04-19 1983-03-22 Wescom Switching, Inc. Data distribution interface
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
JPS57164340A (en) * 1981-04-03 1982-10-08 Hitachi Ltd Information processing method
US4456957A (en) * 1981-09-28 1984-06-26 Ncr Corporation Apparatus using a decision table for routing data among terminals and a host system
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4550368A (en) * 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
US4527232A (en) * 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
US4626634A (en) * 1982-09-30 1986-12-02 At&T Bell Laboratories Multiprocessor computing system featuring shared global control
JPS6054052A (ja) * 1983-09-02 1985-03-28 Nec Corp 処理継続方式
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4604683A (en) * 1984-12-10 1986-08-05 Advanced Computer Communications Communication controller using multiported random access memory
US4649473A (en) * 1985-06-17 1987-03-10 International Business Machines Corporation Flexible data transmission for message based protocols
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4845609A (en) * 1986-07-25 1989-07-04 Systech Corporation Computer communications subsystem using an embedded token-passing network
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5133053A (en) * 1987-02-13 1992-07-21 International Business Machines Corporation Interprocess communication queue location transparency
US4897781A (en) * 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5001628A (en) * 1987-02-13 1991-03-19 International Business Machines Corporation Single system image uniquely defining an environment for each user in a data processing system
US4903258A (en) * 1987-08-21 1990-02-20 Klaus Kuhlmann Modularly structured digital communications system
US5109515A (en) * 1987-09-28 1992-04-28 At&T Bell Laboratories User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
NZ226733A (en) * 1987-12-21 1990-05-28 Honeywell Bull Coupling incompatible cpu to data processing system
US4993017A (en) * 1988-03-15 1991-02-12 Siemens Aktiengesellschaft Modularly structured ISDN communication system
US4914583A (en) * 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
US5557798A (en) * 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5218697A (en) * 1990-04-18 1993-06-08 Microsoft Corporation Method and system for networking computers having varying file architectures
ATE119732T1 (de) * 1990-06-26 1995-03-15 Siemens Ag Programmgesteuerte kommunikationsanlage.

Also Published As

Publication number Publication date
JP2945757B2 (ja) 1999-09-06
EP0490980A4 (en) 1993-04-21
CA2066566C (en) 2001-12-25
IL95449A (en) 1994-10-07
US5485579A (en) 1996-01-16
IL95449A0 (en) 1991-06-30
ATE179811T1 (de) 1999-05-15
AU651321B2 (en) 1994-07-21
HK1014064A1 (en) 1999-09-17
AU6436190A (en) 1991-04-18
WO1991004540A1 (en) 1991-04-04
EP0490980B1 (en) 1999-05-06
KR920704226A (ko) 1992-12-19
CA2066566A1 (en) 1991-03-09
EP0490980A1 (en) 1992-06-24
DE69033092D1 (de) 1999-06-10
US6065037A (en) 2000-05-16
JPH05502127A (ja) 1993-04-15

Similar Documents

Publication Publication Date Title
KR100201772B1 (ko) 다중설비운영체제구조
US5931918A (en) Parallel I/O network file server architecture
US7634760B1 (en) System and method for remote execution of a debugging utility using a remote management module
JP4615643B2 (ja) データ・ストレージ・システムにおける危険状態データの識別方法
Kronenberg et al. VAXcluster: A closely-coupled distributed system
JP4618654B2 (ja) 並列処理コンピュータ・システムにおけるデータ通信方法
US5465365A (en) Apparatus and methods for making a portion of a first name space available as a portion of a second name space
JP4615642B2 (ja) 拡張可能な並列処理コンピュータ・システムにおけるデータ通信方法
JP4536840B2 (ja) 並列処理コンピュータ・システムにおけるデータの転送方法
JPH11328135A (ja) 並列処理コンピュ―タ・システム
JP2000187560A (ja) メモリ・システムの構成方法
JP2000020490A (ja) 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
JP2003515813A (ja) 記憶ネットワーク内の定足数資源アービタ
US8806096B1 (en) Increased concurrency of an initialization process of multiple data storage units of a volume
US6484208B1 (en) Local access of a remotely mirrored disk in a computer network
JP2694109B2 (ja) 動的バッファ管理装置および方法
CA2358807C (en) Multiple software-facility component operating system for co-operative processor control within a multiprocessor computer system
Banerji et al. High-performance distributed shared memory substrate for workstation clusters
US8239543B1 (en) Method and an apparatus to provide access to operational data in a storage server via multiple data management protocols
Marques et al. The distributed operating system of the SMD project
Fredj et al. Rwapi over infiniband: Design and performance
CN118193478A (zh) 一种存储空间的分配方法及服务器
Rizzo Using transputers in a TCP/IP environment: the PCserver approach
Cheriton et al. Computer Systems Laboratory Departments of Computer Science and Electrical Engineering Stanford University
IL107644A (en) Parallel architecture for a portfolio service system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20050311

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee