KR100262835B1 - 입/출력 제어 장치 및 방법 - Google Patents

입/출력 제어 장치 및 방법 Download PDF

Info

Publication number
KR100262835B1
KR100262835B1 KR1019970003176A KR19970003176A KR100262835B1 KR 100262835 B1 KR100262835 B1 KR 100262835B1 KR 1019970003176 A KR1019970003176 A KR 1019970003176A KR 19970003176 A KR19970003176 A KR 19970003176A KR 100262835 B1 KR100262835 B1 KR 100262835B1
Authority
KR
South Korea
Prior art keywords
state
request
unit
main memory
cpu
Prior art date
Application number
KR1019970003176A
Other languages
English (en)
Other versions
KR970059930A (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
Application filed by 니시무로 타이죠, 가부시끼가이샤 도시바 filed Critical 니시무로 타이죠
Publication of KR970059930A publication Critical patent/KR970059930A/ko
Application granted granted Critical
Publication of KR100262835B1 publication Critical patent/KR100262835B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation

Abstract

컴퓨터 시스템에서, CPU가 I/O 장치에 대해 동작모드등과 같은 상태설정을 행할 때, 상태설정의 로그(log) 데이터는 설정 로그 기억 영역(a set log storage area)에 기억된다. 컴퓨터 시스템에 장애가 발생하면, I/O 유닛은 클리어(cleared)되고, 설정 로그 기억 영역에 기억된 상태설정의 로그 데이터에 근거하여 I/O 유닛의 상태설정이 수행된다. 그러므로 프로세스가 재개될 때, I/O 유닛의 상태는 체크포인트 시점의 상태로 복구될 수 있다.

Description

입/출력 제어 장치 및 방법{I/O CONTROL APPARATUS HAVING CHECK RECOVERY FUNCTION}
본 발명은 체크포인트 복구 기능(checkpoint recovery function)을 갖는 컴퓨터 시스템에 적용되는 I/O제어 장치에 관한 것이다.
근래들어 컴퓨터 시스템이 상당히 보급되었다. 이러한 보급과 더불어, 예컨대 복사와 같이 장애에 대응하는 신뢰성에 대한 요구도 엄격해지고 있다. 장애를 극복할 수 있는 컴퓨터 시스템을 구성하는 한가지 방법으로 체크포인트 복구 방식이 있다.
체크포인트 복구 방식을 구현하는 방법으로서, CPU의 내부상태 즉, CPU의 레지스터와 캐시 메모리의 내용을 주 메모리에 주기적으로 저장하여 주 메모리상에서 체크포인트를 취득하는 방법이 있다. 컴퓨터 시스템에서 장애로 인해 데이터 처리가 진행될 수 없을 때, 주 메모리는 가장 최근의 체크포인트의 상태로 복원되고, 이렇게 주 메모리내에 기억된 CPU의 내부상태를 이용하여 데이터 처리가 재개된다.
주 메모리를 체크포인트 상태로 복원하는 방법은 다음과 같다. 주 메모리의 갱신 동작시, 갱신될 데이터와 어드레스는 메모리 상태 복구 유닛(55)에 기억된다. 컴퓨터 시스템에서 장애가 발생하면, 메모리 상태 복구 유닛(55)에 기억된 직전의 데이터가 주 메모리에 재기입된다.
이러한 체크포인트 복구 방식에서, 컴퓨터 시스템에 장애가 발생할 경우, 주 메모리 또는 CPU의 내부상태는 가장 최근의 체크포인트의 상태로 복원될 수 있지만, 이 컴퓨터 시스템에 접속된 I/O 유닛은 가장 최근의 체크포인트의 상태로 쉽게 복원될 수 없다.
전술한 문제점을 도 1 및 도 2를 참조하여 이하에 설명한다.
도 1에 도시된 것처럼, 컴퓨터 시스템에서, CPU(52)는 디스크 콘트롤러(52)에게 디스크(53)로 액세스할 것을 요청함으로써 I/O동작을 수행한다. 도 2는 전술한 구성을 갖는 컴퓨터 시스템의 I/O처리와 관련된 타이밍도를 도시한다.
도 2에 도시된 바와 같이, 시간 T0와 T1사이에 디스크 콘트롤러(52)의 레지스터들이 디스크(53)의 소정 위치에서 데이터를 판독하도록 설정되고(도 2의 (1)참조), 시간 T2에서 디스크 콘트롤러(52)가 구동된다(도 2의 (2)참조). 이런 방식으로 디스크 콘트롤러(52)와 디스크(53)가 시간 T1∼T2에서 판독 동작을 실행한다(도 2의 (3)참조). 판독된 데이터는 DMA전송에 의해 디스크 콘트롤러(52)에서 주 메모리(54)로 옮겨진다.
시간 T2에서 CPU(51)는 디스크 콘트롤러(52)로부터 종료 인터럽트를 수신하고(도 2의 (4)참조), 그로부터 시간 T2∼T3에서 디스크 콘트롤러(52)에 대해 종료 인터럽트 처리를 수행한다(도 2의 (5) 및 (6)참조). 판독동작과 관련한 다른 후처리는 시간 T3∼T4에서 수행된다(도 2의 (7)참조).
이 경우, 첫번째 문제점으로 임의의 시점에서 취득한 체크포인트가 항상 유효한 것은 아니라는 점을 들 수 있다.
예를 들어, 디스크 콘트롤러(52)의 레지스터들을 설정(setting)하는 도중에(시간 T0와 T1사이의 설정 시퀀스(setup sequence)에서) 체크포인트가 취득되었다고 가정해보자.
이 경우에서, 전술한 것처럼 체크포인트가 취득된 후에 컴퓨터 장애가 발생하면, 설정 시퀀스의 후반부는 가장 최근의 체크포인트로 부터 재실행되고, 즉, 디스크 콘트롤러(52)의 레지스터들중 일부만이 재설정된다. 이런 이유로 디스크 콘트롤러(52)가 항상 바람직하게 동작하는 것은 아니다.
디스크 콘트롤러(52)의 특성을 고려하면, 전술한 시간 T0 내지 T1 뿐만아니라 예컨대 기입/판독 동작 같은 I/O동작을 위한 설정 시퀀스동안인 시간 T0 내지 T3에서 CPU(51)가 체크포인트를 취득할 경우, 시스템 장애가 발생한 후 설정 시퀀스의 후반부가 체크포인트로부터 재실행될 때 디스크 콘트롤러(52)가 항상 바람직하게 동작하는 것은 아니다.
이러한 문제점을 해결하는 한 방법으로, 체크포인트가 I/O 유닛의 설정 시퀀스동안에는 수행되지 않도록 하는 것이다. 그러나, 많은 I/O 유닛들이 접속된 컴퓨터 시스템에서는 CPU가 거의 항상 I/O동작의 설정 시퀀스를 수행한다. 그러므로 I/O 유닛의 설정 시퀀스동안에 체크포인트를 금지시킴으로써 상당한 성능저하를 초래할 수 도 있다.
두번째 문제점은 다음과 같다. 디스크 콘트롤러(52)에서 주 메모리(54)로의 DMA전송동안 시스템에 장애가 발생한다고 가정하자. 이 경우 진행중인 DMA전송은 주 메모리(54)가 가장 최근의 체크포인트의 상태로 복원되기 전에 중지되어야 한다.
종래의 컴퓨터 시스템에서, 진행중인 DMA전송을 중지시키기 위해서는 I/O 유닛을 초기화(리셋)시켜야만 한다. I/O 유닛은 초기화에 의해 초기상태로 설정되므로 I/O 유닛을 가장 최근의 체크포인트의 상태로 복원하기 위해서는 특별한 처리가 필요하다.
전술한 체크포인트 복구 방식에서의 I/O처리 문제를 해결하는 방식으로서 다음의 두가지 방식이 공지되었다.
첫번째 방식이 USP-4740969, "METHOD AND APPARATUS FOR RECOVERING FROM HARDWARE FAULTS"에 개시되어 있다. 통상의 데이터 처리시, I/O 유닛의 레지스터들의 기입/판독의 데이터 및, I/O 유닛으로부터의 인터럽트는 로그 메모리(log memory)에 기록된다. 컴퓨터 시스템에서 장애가 발생한 후에 가장 최근의 체크포인트로부터 레지스터 설정 시퀀스가 재개될때, 장애 발생 이전에 I/O 유닛의 레지스터에 대해 수행된 판독/기입동작은 다음과 같이 재실행된다. 기입동작의 경우, 데이터는 폐기되어 I/O 유닛의 레지스터에 기입되지 않는다. 판독동작의 경우, I/O 유닛의 레지스터로 부터 독출하는 대신에 로그 메모리의 데이터가 CPU로 되돌아간다. I/O 유닛으로 부터의 인터럽트인 경우, 인터럽트는 이전의 실행과 동일한 타이밍으로 발생되어 CPU로 보내진다.
이러한 방식은 통상의 컴퓨터 시스템에는 제공되지 않는 특별한 인터페이스 회로를 필요로 한다. 더우기 이런 방식은 멀티프로세서 시스템에 적용하기 어렵다.
두번째 방식은 "Sequoia: A Fault-tolerance Tightly Coupled Multiprocessor for Transaction Processing"(IEEE Computer, February 1988)에 개시되어 있다. 이 방식에서, 컴퓨터 시스템에서의 데이터 처리는 CPU 및 주 메모리만을 이용해 수행할 수 있는 데이터 처리 부분과, I/O 유닛을 사용하는 I/O처리 부분으로 나뉘어진다. 상기 부분들은 서로 다른 컴퓨터에 의해 실행된다.
도 3은 컴퓨터 시스템의 개략적인 구성을 도시하는데, 이 컴퓨터 시스템에서 데이터 처리는 주 메모리로의 액세스만으로도 수행되는 부분과 I/O 유닛으로의 액세스를 포함하는 부분으로 나뉘어지되, 전자의 경우는 체크포인트 복구 방식에 의해 신뢰성이 개선된 컴퓨터(100)에 의해 실행되고, 후자는 체크포인트 복구 방식을 사용하지 않는 컴퓨터(200)에 의해 실행된다. 상기 부분들 사이의 논리 인터페이스는, 예컨대, 컴퓨터(100)에서 컴퓨터(200)로 "지정된 디스크의 지정된 위치로 부터 지정된 량만큼의 데이터를 판독하라"고 하는 요구(request)가 송신된다. 컴퓨터(200)가 사실상 데이터 판독을 끝내면, 동작이 정상적으로 종료되었는지를 나타내는 종료코드(termination code)와, 디스크로부터 판독된 데이터가 컴퓨터(200)에서 컴퓨터(100)로 반송된다.
컴퓨터(200)의 신뢰성을 개선하기 위해 컴퓨터(200)의 구성요소들을 이중화했다. 즉, 컴퓨터(200)는 컴퓨터 본체(210a, 210b)와, I/O 장치(220a, 220b)로 구성된다. 정상상태에서는 양측에서 요구가 동시에 처리되고, 그 실행결과를 상호비교하여 실행결과가 동일한지 검사한다. 만약 한쪽에서 장애가 발생했다면, 요구된 동작은 나머지 한쪽에서 계속 실행된다.
이러한 방식은 다음과 같은 단점을 갖는다. 즉, 적어도 두 종류의 컴퓨터가 마련되어야 하므로 컴퓨터 시스템의 규모가 크고 비싸다.
두 번째 방식으로부터 다음을 유추가능하다. 즉, 가상 컴퓨터 기능을 이용함으로써 컴퓨터(100)와 컴퓨터(200)를 하나의 컴퓨터로 구현할 수 있다. 그러나 이런 생각은 이하의 이유로 실제 적용이 불가능하다.
"Sequoia"에 개시된 두번째 방식은 다음 가정에 근거한다. 독립된 컴퓨터 (100) 및 (200)가 사용되므로, 컴퓨터(100)에서 장애가 발생하여 컴퓨터(100)의 데이터 처리가 체크포인트에서 부터 재실행될지라도 컴퓨터(200)의 I/O처리는 장애에 대해 아무런 영향도 받지 않는다.
그러나, 가상 컴퓨터 기능을 이용함으로써 컴퓨터(100)와 컴퓨터(200)가 하나의 컴퓨터로 구현되면, 컴퓨터(100)와 컴퓨터(200)는 기본 컴퓨터 시스템에서 발생하는 장애에 동시에 영향을 받을 것이다.
전술하였듯이, 체크포인트 복구 시스템은 I/O처리부에 대해 특별한 처리를 필요로 한다. 즉, CPU와 I/O 유닛 사이에 특별한 인터페이스를 구성하거나, 또는 계산부와 I/O처리부를 두개의 독립적인 컴퓨터를 이용하여 각각 수행하는 방법들이 이용된다. 그러므로, 비용이 상당히 증가한다.
본 발명의 목적은 특별한 인터페이스 회로를 필요로 하거나 두개의 독립적인 컴퓨터를 필요로 함이 없이 체크포인트 복구 기능을 갖는 하나의 컴퓨터상에서 I/O 유닛을 제어할 수 있는 I/O제어장치를 제공하는 것이다.
본 발명의 또다른 목적은 컴퓨터 시스템이 장애로 인해 롤백(roll back)할때 I/O 유닛의 상태를 복원하는 소프트웨어 층을 오퍼레이팅 시스템 커널(kernel)과 기존의 장치 드라이버 사이에 제공하는 것이다.
본 발명에 따르면, 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 구비하되, CPU는 자신의 내부상태와 주 메모리의 내용을 체크포인트로서 주기적으로 저장하고, 컴퓨터 시스템에 장애가 발생하면, 가장 최근의 체크포인트에 대응하는 CPU의 내부상태 및 주 메모리의 내용을 복원하여 데이터 처리를 재실행하는 컴퓨터 시스템내의 I/O제어장치로서, CPU에 의해 실행되는 I/O 유닛의 상태설정과 관련된 로그 데이터를 기억하는 I/O 유닛 상태 기억 수단과, 먼저 I/O 유닛을 초기화 한 다음 상기 I/O 유닛 상태 기억수단에 기억된 로그 데이터에 따라 상태설정을 재실행함으로써 I/O 유닛의 상태를 가장 최근의 체크포인트의 상태로 복원하는 I/O 유닛 상태 복원수단을 포함하는 상기 I/O제어 장치가 제공된다.
본 발명에 따르면, CPU가 I/O 유닛에 대해 동작 모드 설정과 같은 상태설정을 수행할때 상태설정의 로그 데이터는 예컨대 주 메모리내에 기억된다. 컴퓨터 시스템에 장애가 발생하면, I/O 유닛이 초기화 명령어나 리셋신호 표명(assertion)에 의해 초기화된 다음, 로그 데이터에 따라 I/O 유닛에 대해 상태 설정 시퀀스가 재개되고, 결국 I/O 유닛의 상태는 가장 최근의 체크포인트의 상태로 복원된다.
새로운 상태설정으로 인해 로그 데이터의 일부가 불필요해져서 불필요한 부분이 제거되는 경우가 가끔 있다. 예를들면, "상태A"를 초기상태로 갖는 I/O 유닛이 "상태B"를 거쳐 "상태C"로 설정된 다음에 체크포인트가 취득되었다고 가정하자. 이 경우, "상태C"의 설정에 의해 "상태B"의 로그 데이터는 불필요해져서 제거될 수 있다. 그러므로, 불필요한 로그 데이터 부분을 제거하는 수단이 제공되고, 그로인해 로그 데이터에 필요한 영역이 절약될 수 있다. 또한, I/O 유닛 초기화 이후에 상태 설정 시퀀스를 재실행하는데 필요한 시간도 줄일 수 있다.
장애가 발생하면, 직전 체크포인트 이후 새로운 상태설정이 수행되지 않은 I/O 유닛에 대해서는 I/O 유닛의 초기화 및 상태 설정 시퀀스가 수행될 필요가 없다. 이런 이유로, I/O 유닛등의 초기화와 상태 설정 시퀀스를 생략하는 수단이 구비된다. 이로써 복구에 필요한 시간이 더 단축될 수 있다.
본 발명은, 컴퓨터 시스템에서 애플리케이션 프로세스가 I/O요구를 발생할때 이러한 I/O요구를 수행하는데 필요한 정보를 담고 있는 요구블럭을 주 메모리로 발생시키는 요구 블럭 발생 수단과, 요구블럭에 따라 I/O 유닛을 액세스함으로써 I/O동작을 수행하는 I/O 실행 프로세스와, 장애 이후의 가장 최근의 체크포인트로 부터 재실행될 때 현재 진행중인 I/O실행 프로세스를 초기화시키고 이 I/O실행 프로세스에 의해 수행중이던 I/O동작을 처음부터 다시 수행시키는 I/O실행 프로세스 초기화 수단을 더 포함한다.
본 발명에 따르면, 애플리케이션 프로세스가 I/O요구를 발생할때, I/O동작에 필요한 정보를 포함하고 있는 요구블럭이 생성되어 I/O실행 프로세스에 의해 실행된다. 상기 애플리케이션 프로세스는 I/O동작이 끝날 때까지 대기상태로 머문다.
컴퓨터 시스템에서 I/O동작중에 장애가 발생했다고 가정하자. 컴퓨터 시스템의 상태가 직전의 체크포인트로 롤백하는 동안 I/O 유닛 상태 복원 수단은 I/O 유닛의 상태를 복원시킨다. 직전 체크포인트로부터 재개시할 때, I/O실행 프로세스 초기화 수단은 I/O동작과 관련있는 I/O실행 프로세스를 초기화하고, 중간쯤 수행된 I/O동작을 처음부터 다시 수행시킨다. 재실행 상태에서 I/O실행 프로세스는 요구블럭에 따라 간단히 I/O동작을 수행한다.
I/O동작이 애플리케이션 프로세스 자체에 의해서가 아닌 I/O실행 프로세스에 의해 수행된다는 사실은 I/O동작이 처음부터 재개되는 것을 가능하게 해준다. 만약 애플리케이션 프로세스가 종래의 방식으로 I/O동작을 수행했다면, I/O동작을 처음부터 재개하는 것이 어렵게 되거나 불가능해진다. 가장 최근의 체크포인트에서 I/O동작이 중간쯤 수행되고 있었음을 유의하기 바란다.
주 메모리에 기억된 요구블럭과 관련하여, 가장 최근의 체크포인트 이전에 형성된 요구블럭은 I/O실행 프로세스에 의해 처리되어야 하는 반면, 가장 최근의 체크포인트 이후에 형성된 요구블럭의 실행은 다음 체크포인트까지 연기되어야 한다.
일반적으로, 롤백이 발생하면, 실시간 클럭 및 비동기 이벤트(예를들면 외부 인터럽트)로 인해 가장 최근의 체크포인트로 부터의 제 2 시간 데이터 처리가 제 1 시간 데이터 처리와 항상 같은 것은 아니다. 그러므로, 장애가 발생하기 이전에 데이터 처리에 의해 만들어진 I/O요구는 장애 복구 이후의 제 2 시간 데이터 처리에 의해 상이하게 만들어 질 수도 있고 그렇지 않을 수도 있다. 따라서, 가장 최근의 체크포인트 이후에 발생된 요구블럭의 실행은 새로운 체크포인트가 취득되기 전까지 반드시 기다려야 한다.
체크포인트가 취득되면, 많은 요구블럭들이 실행가능하게 된다. 그러므로, 체크포인트 취득시, 많은 CPU들을 I/O실행 프로세스에 배정하여 I/O동작이 거의 지연없이 수행되도록 하는 것이 효율적이다.
I/O동작을 요구하는 애플리케이션 프로세스를 수행하는 CPU가 I/O동작을 수행하는 I/O실행 프로세스도 수행하게 함으로써 캐시 적중률(cache hit ratio)을 증가시킨다.
I/O실행 프로세스에 배정되는 CPU의 갯수를 처리될 요구블럭의 수에 따라 적절히 결정함으로써 시스템 성능이 개선된다.
I/O실행 프로세스가 문자열을 프린터 유닛으로 출력하는 장치 구동기 루틴을 수행하는 동안 컴퓨터 시스템에 장애가 발생했다고 가정하자. 그러면, 문자의 일부만이 종이에 인쇄될 수 있고 이들은 지워지지 않는다. 이 경우, I/O요구를 만드는 애플리케이션 프로세스는 애플리케이션 프로세스가 프린터 잼 에러같은 애플리케이션 레벨에서 에러 복구를 행하도록 에러 응답을 수신하여야 한다.
I/O실행 프로세스가 문자열을 프린터 유닛으로 출력하는 장치 구동기 루틴의 실행을 종료한 뒤에 컴퓨터 시스템에 장애가 발생했다고 가정하자. 이 경우, 전체 문자열이 인쇄된다. 만약 요구블럭이 장애 복구 이후에 다시 수행되었다면, 중복 인쇄를 초래한다. 그러므로, I/O요구를 하는 애플리케이션 프로세스는, I/O요구가 출력 요구로서 장애 발생 이전에 종료되는 경우, 컴퓨터 시스템에 장애가 발생할때 조차도 I/O요구를 재실행함이 없이 I/O완료 응답을 수신하는 것이 바람직하다.
본 발명의 또다른 목적들 및 장점들이 이하에 설명되며, 부분적으로는 상세한 설명으로부터 명확해지며 또는 본 발명의 실시에 의해 학습될 수 있다. 본 발명의 목적 및 이점들은 첨부된 특허청구의 범위에 구체적으로 개시된 수단 및 그들의 조합에 의해 이해 및 획득될 수 있다.
도 1은 종래의 체크포인트 재개 방식(checkpoint restart scheme)을 이용하는 컴퓨터 시스템의 구성을 도시한 도면,
도 2는 도 1에 도시된 컴퓨터 시스템의 I/O프로세스시의 타이밍도,
도 3은 종래의 체크포인트 재개 방식을 이용하는 컴퓨터 시스템에 의해 I/O제어가 구현되는 구성을 도시한 도면,
도 4는 본 발명의 실시예 1에 따른 컴퓨터 시스템의 구성을 개략적으로 도시한 도면,
도 5는 실시예 1의 config 루틴의 흐름도,
도 6은 실시예 1의 체크포인트 취득의 흐름도,
도 7은 실시예 1의 장애 복구의 흐름도,
도 8은 실시예 1의 config 루틴의 흐름도,
도 9는 실시예 1의 체크포인트 취득의 흐름도,
도 10은 실시예 1의 장애 복구의 흐름도,
도 11은 본 발명의 실시예 2에서 I/O요구를 행하는 애플리케이션 프로세스의 흐름도,
도 12는 실시예 2의 I/O실행 프로세스의 흐름도,
도 13a 내지 도 13d는 실시예 2에서 애플리케이션 프로세스와 I/O실행 프로세스에 의해 수행되는 I/O동작을 설명하는 도면,
도 14는 실시예 2의 체크포인트 취득의 흐름도,
도 15는 실시예 2의 장애 복구의 흐름도,
도 16은 실시예 2에서 I/O요구를 행하는 애플리케이션 프로세스의 흐름도,
도 17은 실시예 2의 I/O실행 프로세스의 흐름도,
도 18은 실시예 2의 체크포인트 취득의 흐름도,
도 19a 내지 도 19e는 실시예 2에서 애플리케이션 프로세스와 I/O실행 프로세스에 의해 지연되어 수행되는 I/O동작을 설명하는 도면,
도 20은 실시예 2의 장애 복구의 흐름도,
도 21은 본 발명의 실시예 3에서 I/O요구를 행하는 애플리케이션 프로세스의 흐름도,
도 22는 실시예 3의 I/O실행 프로세스의 흐름도,
도 23은 실시예 3의 체크포인트 취득의 흐름도,
도 24는 실시예 3의 장애 복구의 흐름도,
도 25는 실시예 3에서 I/O요구를 행하는 애플리케이션 프로세스의 흐름도,
도 26은 실시예 3의 I/O실행 프로세스의 흐름도.
도면의 주요 부분에 대한 부호의 설명
1a, 1b : CPU 2 : 메모리 상태 복구 유닛
3 : 주 메모리 4a, 4b : I/O 유닛
31 : 통상의 프로세스 콘텍스트 32 : I/O프로세스 콘텍스트
33 : 오퍼레이팅 시스템 34 : 장치 설정 로그 기억 영역
35 : 요구블럭 기억 영역 36 : 상태 유지 영역
본 발명의 실시예들이 첨부 도면을 참조하여 이하에 설명된다.
(실시예 1)
본 발명의 실시예 1은 도 4를 참조하여 이하에 설명될 것이다. 도 4는 실시예 1에 따른 컴퓨터 시스템을 개략적으로 도시한다.
도 4에 도시된 바와 같이, 본 실시예의 컴퓨터 시스템은 CPU(1a, 1b)와, 메모리 상태 복구 유닛(2)과, 주 메모리(3)와, 예컨대 프린터나 RS232C와 같은 I/O 유닛(4a, 4b)를 구비한다.
주 메모리(3)의 내용이 CPU (1a) 또는 (1b)에 의해 갱신될 때 메모리 상태 복구 유닛(2)은 갱신전 내용을 보유하여 주 메모리(3)의 내용을 복원한다. 메모리 상태 복구 유닛(2)에 대해서는 C. Kubiak등의 저서 "PENELOPE: A RECOVERY MECHANISM FOR TRANSIENT HARDWARE FAILURES AND SOFTWARE ERRORS, FTCS, 1982"에 상세히 개시된다. 스택 영역과 데이터 영역을 포함하는 애플리케이션 프로세스의 콘텍스트는 콘텍스트 정보(31)로서 주 메모리(3)에 기억된다. 여기에서, 애플리케이션 프로세스는 종래 컴퓨터 시스템의 프로세스를 의미한다.
오퍼레이팅 시스템(33), 더 구체적으로 말하면 프린터 장치 구동기 및 RS232C장치 구동기는 보드 레이트(baud rate), 중지 비트, 패리티, 시스템 초기화 시기 또는 애플리케이션 프로세스 요구같은 동작 모드를 설정한다. 설정된 동작 모드는 상태 설정 기억 영역(34)에 로그 데이터로서 기억된다.
예를들어, 전형적인 UNIX 오퍼레이팅 시스템에서, 예컨대 RS232C 콘트롤러와 같은 I/O 유닛에 대한 상태 설정 시퀀스가 xxconfig이라고 불리우는 장치 구동기 루틴에 의해 수행되고, 이 구동기의 인터페이스는 모든 장치 구동기에 대해 공통이다. 그러므로, config 루틴의 파라미터는 config 루틴의 시작점에서 주 메모리(3)의 상태 설정 기억 영역(34)에 적절히 기억되고, config 루틴의 파라미터는 I/O 유닛의 종류와 무관하게 기록될 수 있다.
도 5는 각각의 I/O 유닛에 대한 config 루틴의 흐름도를 도시한다.
(1) config 루틴의 파라미터를 상태 설정값으로서 주 메모리에 기억시킨다(단계 A1).
(2) I/O 유닛의 상태를 설정한다(단계 A2).
도 6은 체크포인트 취득의 흐름도를 도시한다.
(1) CPU의 내부상태 즉, 레지스터의 내용과 캐시에 저장된 데이터를 주 메모리에 저장한다(단계 B1).
(2) 주 메모리 복구 유닛에 보유된 데이터를 지운다(단계 B2).
도 7은 장애 발생에 의해 설정 시퀀스가 가장 최근의 체크포인트로부터 재실행될 때의 흐름도를 도시한다.
(1) 리셋 명령어 또는 리셋 신호 송출(assertion)에 의해 I/O 유닛을 초기화시킨다(단계 C1).
(2) 메모리 복구 유닛을 이용하여 주 메모리의 상태를 가장 최근의 체크포인트의 상태로 복원시킨다(단계 C2). 그 결과, I/O 유닛에 대한 상태 설정의 로그 데이터가 가장 최근의 체크포인트의 상태로부터 복원된다.
(3) 주 메모리에 기억된 config 파라미터를 이용하여 config루틴을 다시 실행한다(단계 C3). 이러한 재실행은 가장 오래된 것에서 가장 최근의 것 순으로 수행된다. 그 결과, I/O 유닛의 상태는 체크포인트의 상태로 복구된다.
(4) 체크포인트에서 수행되고 있던 데이터 처리를 재개한다(단계 C4).
그러므로, 데이터 처리는 각 I/O 유닛의 상태가 체크포인트의 상태로 복원된 상태에서 재개된다. 이것은 체크포인트 복구 메카니즘과 I/O 유닛 복원 메카니즘이 단일 컴퓨터에서 실현됨을 의미한다.
RS232C 콘트롤러의 경우, 보드 레이트, 중지 비트 및 패리티같은 동작모드들이 새롭게 설정될 때, 기존의 설정값은 불필요해 진다. 그러므로, 주 메모리(3)의 상태 설정 기억 영역(34)에는 RS232C 콘트롤러(4b)의 동작 모드의 최근 값들이 보유되는 것만으로도 충분하다(불필요한 로그 데이터는 폐기된다). 따라서, 장애 복구 시간이 줄어든다.
상태 보유 영역(36)은 주 메모리(3)에 효율적으로 배열되어 I/O 유닛(4a, 4b)의 상태 설정 플래그를 관리한다. 상태 설정 플래그는 다음 방식으로 관리된다. 상태 설정 플래그 온은 가장 최근의 체크포인트로부터 I/O 유닛에 대해 모종의 상태 설정 시퀀스가 수행되었거나 수행중임을 뜻하고, 상태 설정 플래그 오프는 가장 최근의 체크포인트 이후에 I/O 유닛에 대해 어떠한 상태 설정도 수행되지 않았음을 나타낸다.
도 8은 상기 상태 설정 플래그들이 채용된 경우의 config루틴의 흐름도를 도시한다.
(1) config루틴의 파라미터를 주 메모리에 기억시킨다(단계 D1). I/O 유닛의 상태 설정 플래그를 온(ON)시킨다.
(2) I/O 유닛의 상태를 설정한다(단계 D2).
도 9는 본 실시예의 체크포인트 취득을 위한 흐름도를 도시한다.
(1) CPU의 내부상태를 주 메모리에 저장한다(단계 E1).
(2) 각 I/O 유닛의 상태 설정 플래그를 오프(오프)시킨다(단계 E2).
(3) 메모리 상태 복구 유닛에 보유된 데이터를 지운다(단계 E3).
도 10은 본 실시예에서 장애 복구를 위한 흐름도를 도시한다.
(1) 만약 특정 I/O 유닛의 상태 설정 플래그가 온이면, 이것은 가장 최근의 체크포인트 이후에 새로운 상태가 설정되었음을 의미하므로, 이 I/O 유닛을 초기화시킨다(단계 F1). 한편, 상태 설정 플래그 오프를 갖는 I/O 유닛은 초기화될 필요가 없다.
(2) 메모리 상태 복구 유닛을 이용하여 주 메모리의 상태를 가장 최근의 체크포인트의 상태로 복원한다(단계 F2). 그 결과, I/O 유닛에 대한 상태 설정의 로그는 가장 최근의 체크포인트의 상태로 복구된다.
(3) 단계 F1에서 초기화된 I/O 유닛에 대해서만, 주 메모리에 기억된 config 파라미터를 이용하여 config루틴을 재실행한다(단계 F3). 이러한 재실행은 가장 오래된 것으로부터 가장 최근의 것 순으로 수행된다. 그 결과, I/O 유닛의 상태는 가장 최근의 체크포인트의 상태로 복구된다.
(4) 가장 최근의 체크포인트에서 수행되고 있던 데이터 처리를 재개한다(단계 F4).
이러한 방식으로 장애 복구시 복구 설정 플래그 오프를 갖는 I/O 유닛에 대해서는 초기화를 생략할 수 있고, 이것은 장애 복구를 더욱 빠르게 한다.
(실시예 2)
본 실시예에 따른 컴퓨터 시스템은 실시예 1의 컴퓨터 시스템에 부가하여 요구 블럭 기억 영역(35)과 I/O실행 프로세스들을 더 구비하는 구성이라고 가정한다(도 4 참조).
본 실시예에서, 애플리케이션 프로세스가 시스템 호출(call)을 행하여 I/O 유닛의 I/O동작을 요구하면, 오퍼레이팅 시스템은 호출자 프로세스의 콘텍스트에 장치 구동기 루틴을 호출하는 대신에 요구 블럭 형성 루틴을 호출한다. 요구 블럭 형성 루틴은 장치 구동기 루틴의 시작 어드레스와 파라미터를 갖는 요구 블럭을 형성한다. 여기서, 애플리케이션(호출자) 프로세스는 대기상태로 이행한다. 요구블럭은 새로운 체크포인트가 취득될 때까지 주 메모리에 단순히 보유된다. 그러므로, 만약 컴퓨터 시스템에 많은 애플리케이션 프로세스들이 존재하면, 주 메모리에 보유되는 요구블럭의 갯수도 시간이 갈수록 증가한다.
시스템에는 특정 갯수의 I/O실행 프로세스가 존재한다. I/O실행 프로세스는 요구블럭에 따라 장치 구동기 루틴을 실행하는 특별한 프로세스이다.
새로운 체크포인트가 취득되면, 요구블럭은 처리될 준비가 된다. 초기상태를 갖는 I/O실행 프로세스는 요구블럭들 중 하나에 배정된다. I/O실행 프로세스는 적절한 파라미터를 갖는 장치 구동기 루틴을 실행하고, 이들 파라미터와 루틴은 요구블럭에 의해 지정된다. 그러므로, 동시에 수행되는 I/O동작의 갯수는 I/O실행 프로세스의 갯수에 따른다. I/O실행 프로세스는 지정된 장치 구동기 루틴내에서 I/O 유닛을 인용할때 대기상태로 된다. I/O 유닛이 종료 인터럽트로 복귀할때 장치 구동기의 인터럽트 처리 루틴이 호출되고 그 결과는 I/O실행 프로세스 콘텍스트에 반영된다. 다음, I/O실행 프로세스는 준비상태로 된다. I/O동작의 종료시 I/O실행 프로세스는 요구블럭을 이용하여 결과를 애플리케이션 프로세스에게 통보한다.
만약 I/O 유닛으로부터 주 메모리로의 DMA 전송 도중에 컴퓨터 시스템에 장애가 발생하면, 주 메모리가 복원되기 전에 I/O 유닛을 초기화시켜 DMA전송을 중지할 필요가 있다. 이를 위해, DMA가 가능한 I/O유닛 각각에 대해 동작중 플래그(in-operation flag)를 채용하여 각각의 I/O 유닛이 초기화되어야 하는지를 판단한다. 동작중 플래그는 해당 I/O 유닛이 DMA 전송을 수행하는 동안에만 온되도록 제어된다.
도 11은 본 실시예에서 애플리케이션 프로세스에 의해 수행되는 I/O요구 흐름을 도시한다.
(1) I/O동작과 관련있는 파라미터들을 요구블럭으로서 주 메모리에 기억시킨다(단계 G1).
(2) 요구블럭에 기술된 I/O동작이 종료될 때까지 대기상태로 천이된다(단계 G2).
(3) 애플리케이션 프로세스가 실행을 재개할때, 요구블럭의 결과 코드 필드를 참조하여 I/O요구와 관련있는 애플리케이션 프로세스측에서 종료단계를 수행한 다음, 후속 단계를 실행한다(단계 G3).
도 12는 I/O실행 프로세스의 흐름도를 도시한다. 여기에서는, 다수의 I/O실행 프로세스들이 동시에 실행된다고 가정하였다.
(1) 실행가능한 요구블럭을 대기한다(초기상태, 단계 H1).
(2) 요구블럭에 따라 I/O 유닛의 레지스터들을 설정하고 동작중 플래그를 온시킴으로써, I/O 유닛을 가동시킨다(단계 H2).
(3) I/O 유닛으로부터 종료 인터럽트를 수신하면, 동작중 플래그를 오프시키고, I/O요구의 종료단계를 수행하며, 결과코드를 요구블럭에 기입하고, 대기상태중인 애플리케이션 프로세스를 준비상태로 만든다(단계 H3).
도 13a 내지 도 13d는 두개의 애플리케이션 프로세스와 두개의 I/O실행 프로세스에 의해 수행되는 I/O동작의 샘플 시퀀스를 도시한다.
애플리케이션 프로세스에 의해 I/O요구가 만들어지면, 대응하는 요구블럭이 만들어져 메모리에 기억된다(도 13a 및 도 13b 참조). 요구블럭이 만들어진 뒤, I/O실행 프로세스(I/O 유닛의 레지스터 설정, 시작, 종료 인터럽트 처리)가 I/O실행 처리 콘텍스트를 근거로 하여 실행된다(도 13c 및 도 13d 참조).
도 14는 본 실시예의 체크포인트 취득의 흐름도를 도시한다.
(1) CPU의 내부상태를 주 메모리에 저장한다(단계 I1).
(2) 각각의 I/O 유닛의 상태 설정 플래그를 오프시킨다(단계 I2).
(3) 메모리 상태 복구 유닛에 보유된 데이터를 지운다(단계 I3).
도 15는 본 실시예에서 장애 발생시의 메모리 상태 복구의 흐름도를 도시한 것이다.
(1) 특정 I/O 유닛의 해당 상태 설정 플래그가 온이거나 또는 동작중 플래그가 온이면, I/O 유닛을 초기화시킨다. 상태 설정 플래그와 동작중 플래그를 오프시킨다(단계 J1).
(2) 메모리 복구 유닛을 이용하여 주 메모리의 상태를 가장 최근의 체크포인트의 상태로 복원한다(단계 J2).
(3) 단계 J1에서 초기화된 I/O 유닛에 대해서만, 주 메모리에 보유된 상태 설정값의 로그를 참조하여 가장 오래된 것에서 부터 가장 최근의 것 순으로 상태 설정 시퀀스를 재실행한다(단계 J3). 이런 방식으로, I/O 유닛의 상태는 가장 최근의 체크포인트의 상태로 복구된다.
(4) I/O실행 프로세스들을 초기화한다. 더 구체적으로, I/O실행 프로세스들은 가장 최근의 체크포인트에서 I/O실행 프로세스의 상태와 무관하게 단계 H1으로 설정된다(단계 J4).
(5) 가장 최근의 체크포인트에서 수행중이던 데이터 처리를 재개한다(단계 J5).
I/O 유닛의 제어는 애플리케이션 프로세스와는 상이한 I/O실행 프로세스의 콘텍스트에서 수행되고, 단계 J4에서의 초기화는 I/O동작에서 요구되는 애플리케이션 프로세스에 대해 어떠한 영향도 미치지 않고 수행될 수 있다. 종래기술에서는 I/O동작이 애플리케이션 프로세스 콘텍스트에서 수행되므로, 상기 초기화는 더 복잡하거나 특별한 프로세스를 필요로 했다.
각 요구블럭에 실행 허가 플래그를 부가하는 것이 효과적이다. 실행 허가 플래그는 새로운 체크포인트가 취득될 때까지 오프 상태로 유지되다가 새로운 체크포인트가 취득되면 온으로 바뀌도록 제어된다.
도 16은 실행 허가 플래그가 부가되었을 때 애플리케이션 프로세스에 의해 수행되는 흐름도이다.
(1)유닛의 I/O동작과 관련있는 파라미터들을 주 메모리내로 요구블럭으로서 기억시킨다(단계 K1).
(2) 요구블럭에 지정된 I/O동작이 종료될때까지 대기상태로 천이한다(단계 K2).
(3) 애플리케이션 프로세스가 실행을 재개할 때, 요구블럭의 결과 코드 필드를 참조하여 I/O요구와 관련있는 애플리케이션 프로세스측에서 종료단계를 수행한다(단계 K3).
도 17은 I/O실행 프로세스의 흐름도를 도시한다. 이 경우, 다수의 I/O실행 프로세스들이 동시에 수행된다고 가정하였다.
(1) 실행 허가 플래그가 온인 요구블럭을 대기한다(단계 L1).
(2) I/O 유닛의 레지스터들을 설정하고 요구블럭에 따라 동작중 플래그를 온시킴으로써 I/O 유닛을 구동한다(단계 L2).
(3) I/O 유닛으로부터 종료 인터럽트를 수신하면, 동작중 플래그를 오프시키고, I/O요구의 종료단계를 수행하며, 결과 코드를 요구블럭에 기입하고, 대기상태인 애플리케이션 프로세스를 준비상태로 한다(단계 L3).
도 18은 체크포인트 취득의 흐름도를 도시한다.
(1) CPU의 내부상태를 주 메모리에 저장한다(단계 M1).
(2) 각 I/O 유닛의 상태 설정 플래그를 오프시킨다(단계 M2). 주 메모리에 기억된 각 요구블럭의 실행 허가 플래그를 온시킨다.
(3) 메모리 상태 복구 유닛에 보유된 데이터를 지운다(단계 M3).
도 19a도 내지 도 19e는 I/O요구가 수행되는 방법을 도시한다. 여기에는 두개의 애플리케이션 프로세스와 체크포인트 취득 및 두개의 I/O실행 프로세스가 관련되어 있다.
I/O요구가 애플리케이션 프로세스에 의해 만들어지면, 대응하는 요구블럭이 생성되어 메모리에 기억된다(도 19a 및 도 19b 참조). 체크포인트가 취득될 때까지 요구블럭의 실행 허가 플래그는 오프 상태로 유지되므로, I/O실행 프로세스는 유휴상태(idle state)로 머무른다.
체크포인트가 취득되면, 요구블럭의 실행 허가 플래그는 온된다(도 19c 참조). I/O실행 프로세스는 실행 허가 플래그가 온인 요구블럭을 취하여 I/O동작(즉, I/O 유닛의 레지스터 설정, I/O 유닛 구동, I/O 유닛의 종료 인터럽트 처리)을 실행한다(도 19d 및 도 19e 참조).
도 20은 I/O동작의 장애 복구 및 재실행의 흐름도를 도시한다.
(1) I/O 유닛의 상태 설정 플래그가 온이거나 동작중 플래그가 온이면, I/O 유닛을 초기화시킨다(단계 N1). 상태 설정 플래그와 동작중 플래그를 오프시킨다.
(2) 메모리 상태 복구 유닛을 이용하여 주 메모리 상태를 가장 최근의 체크포인트의 상태로 복원한다(단계 N2).
(3) 단계 N1에서 초기화된 I/O 유닛에 대해서만, 주 메모리에 기억된 상태 설정의 로그를 참조하여 가장 오래된 것에서 부터 가장 최근의 것 순으로 상태 설정이 재실행된다(단계 N3). I/O 유닛의 상태는 가장 최근의 체크포인트의 상태로 복구된다.
(4) 실행중인 I/O실행 프로세스를 초기화한다(단계 N4). 더 구체적으로, I/O실행 프로세스는 가장 최근의 체크포인트에서 I/O실행 프로세스의 상태와 무관하게 단계 L1의 상태로 설정된다.
(5) 가장 최근의 체크포인트에서 수행중이던 데이터 처리를 재개한다(단계 N5).
장애가 I/O동작 도중에 발생했다고 가정하자. 장애가 발생하면, I/O 유닛의 동작중 플래그는 온이므로, I/O 유닛은 초기화된다. 요구블럭의 내용은 메모리 상태 복구 유닛에 의해 가장 최근의 체크포인트의 내용으로 롤백된다. 다음, 주 메모리에 보유된 설정 시퀀스를 재실행함으로써 I/O 유닛의 상태가 복구된다. 장애 복구 단계가 종료되면, I/O프로세스는 요구블럭을 취득하고, 요구블럭에 따라 I/O동작을 처음부터 재실행한다.
이것은 도중에 인터럽트된 I/O동작이 장애 이후 재실행되는 방법을 나타낸다.
체크포인트가 취득되면, 직전 체크포인트 이후에 생성된 요구블럭이 실행가능하게 된다. 그러므로, 체크포인트 취득 이후에는 I/O실행 프로세스들에게 더 높은 우선권을 부여하여, 지연된 I/O요구들이 즉시 실행되도록 하는 것이 바람직하다.
캐시 적중률을 높이기 위해, I/O를 요구하는 애플리케이션 프로세스를 실행했던 CPU는 그 I/O요구에 의해 생성된 요구블럭과 관련된 I/O실행 프로세스에 배정되어야만 한다.
바람직한 실시예는 다음과 같다.
요구블럭은 CPU 식별자 필드를 갖는다. 요구블럭이 생성되면, 애플리케이션 프로세스를 실행하는 CPU의 식별자는 CPU 식별자 필드에 기입된다. I/O실행 프로세스는 I/O실행 프로세스를 실행하는 CPU와 동일한 CPU 식별자를 갖는 요구블럭을 선택한다.
I/O실행 프로세스에 배정되는 CPU의 갯수는 실행가능한 요구블럭의 수와 컴퓨터의 CPU 갯수에 따라 결정되어야 한다. 만약 실행가능한 요구블럭의 수가 증가하면, 더 많은 CPU들이 I/O실행 프로세스에 배정되어야 한다. 한가지 바람직한 실시예로서, 컴퓨터의 스케줄러(scheduler)를 이용하여 유휴상태 CPU가 실행가능한 요구블럭의 갯수에 따라 애플리케이션 프로세스나 I/O실행 프로세스에 배정되었는지를 판단하게 할 수도 있다.
(실시예 3)
본 실시예에 따른 컴퓨터 시스템은 실시예 2에서 설명된 컴퓨터 시스템에 덧붙여서 상태 유지 영역(36)을 더 구비한다
본 실시예에서는 프린터와 같은 I/O 유닛에 초점이 맞춰진다. 프린터의 경우, 전표(slip)를 인쇄중인 컴퓨터에서 장애가 발생하면, 전표는 불완전한 상태로 남게 된다(즉, 프린터는 가장 최근의 체크포인트의 상태로 복원되지 못하거나 또는 전표 인쇄를 완전히 끝내지 못할 것이다).
이러한 상태를 검출하기 위해서, 본 실시예에서는 실행 인터럽트 에러 플래그가 요구블럭에 부가된다. 이러한 실행 인터럽트 에러 플래그는 요구블럭이 지정하는 I/O동작이 컴퓨터 시스템에서의 장애 발생으로 인해 복구불능의 I/O에러를 초래했는지를 식별하는데 이용된다.
도 21은 본 실시예에서 애플리케이션 프로세스에 의해 수행되는 흐름도를 도시한다.
(1) I/O동작과 관련된 파라미터들을 요구블럭으로서 주 메모리에 기억시킨다(단계 O1). 요구블럭의 실행 허가 플래그를 오프시키고, 요구블럭의 실행 인터럽션 에러 플래그를 오프시킨다.
(2) 요구블럭이 지정한 I/O동작이 종료될 때까지 대기상태로 천이한다(단계 O2).
(3) 애플리케이션 프로세스가 실행을 재개하면, 요구블럭의 결과 코드 필드를 참조하여 I/O요구와 관련된 애플리케이션 프로세스측에서 종료단계를 수행한 다음, 후속단계를 실행한다(단계 O3).
도 22는 I/O실행 프로세스의 흐름도를 도시한다.
(1) 실행 허가 플래그가 온인 요구블럭을 대기한다(단계 P1).
(2) 요구블럭의 실행 인터럽션 에러 플래그가 온인 경우, 요구블럭의 결과 코드 필드에 에러 코드를 설정하고, 대기상태인 애플리케이션 프로세스를 준비상태로 설정한다(단계 P2).
(3) 그렇지 않은 경우에는, 요구블럭에 근거하여 I/O 유닛의 레지스터들을 설정하고 동작중 플래그를 온시킨다(단계 P3). 만약 I/O 유닛이 프린터이면, 요구블럭의 실행 인터럽션 에러 플래그를 온시킨다.
(4) I/O 유닛으로부터 종료 인터럽트를 수신하면, 동작중 플래그를 오프시키고, I/O요구의 종료단계를 수행하고, 결과코드를 요구블럭에 기입하며, 대기상태인 애플리케이션 프로세스를 준비상태로 한다(단계 P4). 만약 I/O 유닛이 프린터이면, 요구블럭의 실행 인터럽션 에러 플래그를 오프시킨다.
도 23은 본 실시예에서 체크포인트 취득의 흐름도를 도시한다.
(1) CPU의 내부상태를 주 메모리에 저장한다(단계 Q1).
(2) 각 I/O 유닛의 상태 설정 플래그를 오프시킨다(단계 Q2). 주 메모리에 기억된 각 요구블럭의 실행 허가 플래그를 온시킨다.
(3) 메모리 상태 복구 유닛에 보유된 데이터를 지운다(단계 Q3).
도 24는 본 실시예에서의 장애 발생시 장애복구의 흐름도를 도시한다.
(1) I/O 유닛의 상태 설정 플래그가 온이거나 동작중 플래그가 온이면, I/O 유닛을 초기화시킨다(단계 R1). 상태 설정 플래그와 동작중 플래그를 오프시킨다(단계 R1).
(2) 메모리 상태 복구 유닛을 이용하여 주 메모리의 상태를 가장 최근의 체크포인트의 상태로 복원한다.
프린터에 대응하는 요구블럭의 실행 인터럽션 에러 플래그와 관련하여, 플래그의 값은 주 메모리를 복원하는 동안 불변해야 한다. 이 동작은 예를들어 다음과 같은 방법으로 실현된다. 통상의 컴퓨터 시스템은 시스템 파라미터를 보유하는 NVRAM(nonvolatile memory)를 구비하고, NVRAM내의 데이터 갱신은 그 상태가 주 메모리 복구 유닛에 의해 복원되지 않도록 제어될 수 있다. 그러므로, 장애 발생시, 주 메모리 복원전에 NVRAM에 실행 인터럽션 에러 플래그의 값을 저장했다가 주 메모리 복원후에 이 저장된 값을 플래그에 재기입한다(단계 R2).
(3) 단계 R1에서 초기화된 I/O 유닛에 대해서만, 주 메모리에 기억된 상태 설정의 로그를 참조하여 가장 오래된 것에서 부터 가장 최근의 것 순으로 상태 설정 시퀀스가 재실행된다(단계 R3). 이런 방식으로, I/O 유닛의 상태는 가장 최근의 체크포인트의 상태로 복원된다.
(4) 수행중인 I/O실행 프로세스를 초기화시킨다(단계 R4). 더 구체적으로, I/O실행 프로세스는 가장 최근의 체크포인트에서 I/O실행 프로세스의 상태와 무관하게 단계 P1의 상태로 설정된다.
(5) 가장 최근의 체크포인트에서 실행중이던 데이터 처리를 재개한다(단계 R5).
요구블럭에 따른 프린터 I/O동작 도중에 장애가 발생하면, 실행 인터럽션 에러 플래그는 온이고, 이것은 주 메모리 복원동안 불변한다. 그러면 I/O실행 프로세스는 요구블럭을 재실행시키고자 시도하고, 실행 인터럽션 에러 플래그가 온임을 알게 된다. I/O동작의 재실행 대신에 I/O실행 프로세스는 요구블럭의 결과 코드 필드내에 에러 코드를 설정하고, 애플리케이션 프로세스를 준비상태로 설정한다.
이런 방식으로, 장애에 의해 프린터 I/O동작이 도중에 인터럽트되면 프린터 I/O동작은 다시 반복되지 않지만 애플리케이션 프로세스는 프린터 잼 에러같은 에러에 대처한다.
프린터의 경우, 예컨대, 종료/실행중/비실행처럼 세개가 한 조를 이루는 플래그를 실행 인터럽션 에러 플래그로 갖는 것이 바람직하다.
도 25는 이 경우에 애플리케이션 프로세스에 의해 수행되는 흐름도를 도시한다.
(1) I/O동작과 관련한 파라미터들을 주 메모리에 요구블럭으로서 기억시킨다(단계 S1). 요구블럭의 실행 허가 플래그를 오프시키고, 요구블럭의 실행 인터럽션 에러 플래그를 비실행 상태로 설정한다.
(2) 요구블럭에 기술된 I/O동작이 종료될 때까지 대기상태로 천이한다(단계 S2).
(3) 애플리케이션 프로세스가 실행을 재개하면, 요구블럭의 결과 코드 필드를 참조하여 I/O요구와 관련된 애플리케이션 프로세스측에서 종료단계를 수행한다(단계 S3).
도 26은 I/O실행 프로세스의 흐름도를 도시한다.
(1) 실행 허가 플래그가 온인 요구블럭을 기다린다(단계 T1).
(2) 만약 요구블럭의 실행 인터럽션 에러 플래그가 실행중 상태이면, 요구블럭의 결과 코드 필드내에 에러 코드를 설정하고, 대기상태인 애플리케이션 프로세스를 준비상태로 한다(단계 T2 및 T6).
(3) 그렇지 않고, 실행 인터럽션 플래그가 종료상태이면, 요구블럭의 결과 코드 필드내에 종료 코드를 설정하고, 대기상태인 애플리케이션 프로세스를 준비상태로 한다(단계 T3 및 T7).
(4) 상기 경우중 어디에도 해당되지 않으면, I/O 유닛의 레지스터를 설정하고 요구블럭에 따라 동작중 플래그를 온시킨다(단계 T4).
(5) I/O 유닛으로 부터 종료 인터럽트를 수신하면, 동작중 플래그를 오프시키고, 실행 인터럽션 에러 플래그를 종료상태로 설정하며, 대기상태인 애플리케이션 프로세스를 준비상태로 한다(단계 T5).
프린터 I/O동작의 종료 이후에 장애가 발생하면, 실행 인터럽션 에러 플래그는 종료상태이고 주 메모리 복원 동안 불변한다. 그러면 I/O실행 프로세스는 요구블럭을 재실행하고자 시도하고 실행 인터럽션 에러 플래그가 종료를 나타내는 것을 알게 된다(단계 T3). I/O동작을 재실행시키는 대신에 I/O실행 프로세스는 요구블럭의 결과 코드 필드내에 종료 코드를 설정하고, 애플리케이션 프로세스를 준비상태로 한다. 이런 방식으로, 프린터 I/O동작이 컴퓨터에서 장애 발생 이전에 종료되면, 프린터 I/O동작은 다시 반복되지 않지만 애플리케이션 프로세스는 결과 코드를 수신한다.
본 기술 분야에 숙련된 사람이라면 쉽게 본 발명의 또다른 잇점을 인지하거나 변형할 수 있을 것이다. 그러므로, 본 발명은 넓은 의미에서 본 발명의 상세한 설명에 기술된 내용, 장치, 예시들에만 한정되는 것이 아니다. 따라서, 첨부된 특허 청구의 범위에서 규정하는 일반적인 발명의 사상이나 그 등가물의 범주를 벗어남이 없이 다양한 변형물들이 만들어질 수도 있을 것이다.
본 발명에 의하면, 특별한 인터페이스 회로나 두개의 독립적인 컴퓨터가 필요없이, 체크포인트 복구 기능을 갖는 하나의 컴퓨터상에서 I/O 유닛을 제어할 수 있는 I/O제어장치가 제공된다.
또한, 본 발명에 의하면, 컴퓨터 시스템이 장애로 인해 롤백(roll back)할때 I/O 유닛의 상태를 복원하는 소프트웨어 층이 오퍼레이팅 시스템 커널(kernel)과 기존의 장치 드라이버 사이에 제공된다.

Claims (32)

  1. 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 갖는 컴퓨터 시스템―상기 CPU는 자신의 내부 상태 및 상기 주 메모리의 내용을 체크포인트로서 주기적으로 보존하며, 상기 컴퓨터 시스템에 장애가 발생하면, 가장 최근 체크포인트의 상기 CPU의 내부상태 및 상기 주 메모리의 내용을 복원시켜 데이터 처리를 재개(restart)함―의 I/O 제어 장치에 있어서,
    상기 CPU에 의해 수행되는 상기 I/O 유닛의 상태 설정 시퀀스의 파라미터를 로깅하는 I/O 유닛 상태 기억 수단―상기 수단은 상기 I/O 유닛의 새로운 상태가 설정될 때 불필요해지는 I/O 유닛의 이전에 로깅된 파라미터 부분을 소거하는 수단을 포함함―과,
    우선 상기 I/O 유닛을 초기화하고, 다음으로 상기 I/O 유닛 상태 기억 수단에 의해 기억된 상기 로깅된 파라미터에 따라 상태 설정 시퀀스를 재실행시킴으로써, 상기 I/O 유닛의 상태를 상기 가장 최근 체크포인트의 상태로 복원시키는 I/O 유닛 상태 복원 수단
    을 포함하는 I/O 제어 장치.
  2. 제 1 항에 있어서,
    상기 컴퓨터 시스템내의 애플리케이션 프로세스가 I/O 요구를 발한 경우, 상기 주 메모리에 상기 I/O 요구를 수행하는데 필요한 정보를 포함하는 요구 블록을 생성하는 요구 블록 생성 수단과,
    요구 블록에 따라 I/O 유닛 구동기 루틴을 실행시킴으로써 I/O 동작을 수행하는 I/O 실행 프로세스와,
    장애 발생 후 상기 가장 최근 체크포인트로부터의 재개시에, 초기 상태에 있지 않은 상기 I/O 실행 프로세스를 초기화시켜서, 상기 I/O 실행 프로세스에 의해 수행되는 I/O 동작이 처음부터 다시 수행되도록 하는 I/O 실행 프로세스 초기화 수단
    을 더 포함하는 I/O 제어 장치.
  3. 제 2 항에 있어서,
    상기 주 메모리에 유지된 요구 블록중에서, 상기 I/O 실행 프로세스는 상기 가장 최근 체크포인트 전에 생성된 요구 블록에 따라서는 I/O 동작을 수행하기 시작하며, 상기 가장 최근 체크포인트 후에 생성된 요구 블록에 따라서는 I/O 동작을 새로운 체크포인트가 획득될 때까지 지연시키는 I/O 제어 장치.
  4. 제 3 항에 있어서,
    상기 CPU들은 상기 새로운 체크포인트 획득이 완료된 때에 상기 I/O 실행 프로세스들에 할당되는 I/O 제어 장치.
  5. 제 2 항에 있어서,
    I/O 요구를 발한 애플리케이션 프로세스를 실행하는 CPU는 상기 I/O 요구에 근거해 생성된 요구 블록에 관련된 I/O 실행 프로세스를 또한 실행하는 I/O 제어 장치.
  6. 제 2 항에 있어서,
    상기 I/O 실행 프로세스에 할당되는 CPU의 수는 처리될 요구 블록의 수에 따라 적절히 결정되는 I/O 제어 장치.
  7. 제 2 항에 있어서,
    장애 발생시, 상기 I/O 유닛 상태 복원 수단이 상기 I/O 요구에 관련된 상기 I/O 유닛의 상태를 복원시키지 못할 경우, 상기 요구된 I/O 동작을 재실행시키지 않고 애플리케이션 프로세스에 대해 에러 응답(an error reply)을 발생하는 수단을 더 포함하는 I/O 제어 장치.
  8. 제 3 항에 있어서,
    장애 발생시, 상기 I/O 유닛 상태 복원 수단이 상기 I/O 요구에 관련된 상기 I/O 유닛의 상태를 복원시키지 못할 경우, 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 에러 응답을 발생하는 수단을 더 포함하는 I/O 제어 장치.
  9. 제 2 항에 있어서,
    장애 발생시, 상기 I/O 요구가 출력 요구이고 상기 I/O 요구가 장애 발생 이전에 완료된 경우, 상기 요구된 I/O 동작을 재실행시키지 않고 애플리케이션 프로세스에게로 성공적인 I/O 완료를 보고하는 수단을 더 포함하는 I/O 제어 장치.
  10. 제 3 항에 있어서,
    장애 발생시, 상기 I/O 요구가 출력 요구이고 상기 I/O 요구가 장애 발생 이전에 완료된 경우, 상기 요구된 I/O 동작을 재실행시키지 않고 상기 I/O 요구 프로세스에게로 성공적인 I/O 완료를 보고하는 수단을 더 포함하는 I/O 제어 장치.
  11. 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 갖는 컴퓨터 시스템―상기 CPU는 자신의 내부 상태와 상기 주 메모리의 내용을 체크포인트로서 주기적으로 보존하고, 상기 컴퓨터 시스템에 장애가 발생하면, 가장 최근 체크포인트의 상기 CPU의 내부 상태 및 상기 주 메모리의 내용을 복원시켜서 데이터 처리를 재개함―의 I/O 제어 방법에 있어서,
    상기 CPU에 의해 수행되는 상기 I/O 유닛의 상태 설정 시퀀스의 파라미터를 로깅하는 단계―상기 로깅하는 단계는 상기 I/O 유닛의 새로운 상태가 설정된 때에 불필요해지는 I/O 유닛의 이전에 로깅된 파라미터 부분을 소거하는 것을 포함함―와,
    우선 상기 I/O 유닛을 초기화시키고, 다음으로 상기 로깅된 파라미터에 따라 상기 상태 설정 시퀀스를 재실행시킴으로써, 상기 I/O 유닛의 상태를 상기 가장 최근 체크포인트의 상태로 복원하는 단계
    를 포함하는 I/O 제어 방법.
  12. 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 갖는 컴퓨터 시스템―상기 CPU는 자신의 내부 상태 및 상기 주 메모리의 내용을 체크포인트로서 주기적으로 보존하며, 상기 컴퓨터 시스템에 장애가 발생하면, 가장 최근 체크포인트의 상기 CPU의 내부 상태 및 상기 주 메모리의 내용을 복원시켜 데이터 처리를 재개함―의 I/O 제어 장치에 있어서,
    상기 CPU에 의해 수행되는 상기 I/O 유닛의 상태 설정 시퀀스의 파라미터를 로깅하는 I/O 유닛 상태 기억 수단과,
    우선 상기 I/O 유닛을 초기화하고, 다음으로 상기 I/O 유닛 상태 기억 수단에 의해 기억된 상기 로깅된 파라미터에 따라 상태 설정 시퀀스를 재실행시킴으로써, 상기 I/O 유닛의 상태를 상기 가장 최근 체크포인트의 상태로 복원시키는 I/O 유닛 상태 복원 수단―상기 I/O 유닛 상태 복원 수단은 상기 가장 최근 체크포인트 이후에 새로운 상태 설정 시퀀스가 수행되지 않은 I/O 유닛의 상태 설정 시퀀스의 초기화 및 재실행을 생략하는 수단(means for skipping)을 포함함―
    을 포함하는 I/O 제어 장치.
  13. 제 12 항에 있어서,
    상기 컴퓨터 시스템의 애플리케이션 프로세스가 I/O 요구를 발한 경우, 상기 주 메모리에 상기 I/O 요구를 수행하는데 필요한 정보를 포함하는 요구 블록을 생성하는 요구 블록 생성 수단과,
    요구 블록에 따라 I/O 유닛 구동기 루틴을 실행시킴으로써 I/O 동작을 수행하는 I/O 실행 프로세스와,
    장애 발생 후 상기 가장 최근 체크포인트로부터의 재개시에 초기 상태에 있지 않은 상기 I/O 실행 프로세스를 초기화시켜서 상기 I/O 실행 프로세스에 의해 수행되는 I/O 동작이 처음부터 다시 수행되도록 하는 I/O 실행 프로세스 초기화 수단
    을 더 포함하는 I/O 제어 장치.
  14. 제 13 항에 있어서,
    상기 주 메모리에 유지된 요구 블록중에서, 상기 I/O 실행 프로세스는 상기 가장 최근 체크포인트 이전에 생성된 요구 블록에 따라서는 I/O 동작을 수행하기 시작하고, 상기 가장 최근 체크포인트 이후에 생성된 요구 블록에 따라서는 I/O 동작을 새로운 체크포인트가 획득될 때까지 지연시키는 I/O 제어 장치.
  15. 제 13 항에 있어서,
    I/O 요구를 발한 애플리케이션 프로세스를 실행하는 상기 CPU는 또한 상기 I/O 요구에 기초해 생성된 상기 요구 블록에 관련된 I/O 실행 프로세스를 실행하는 I/O 제어 장치.
  16. 제 13 항에 있어서,
    상기 I/O 실행 프로세스에 할당되는 CPU의 수는 처리될 요구 블록의 수에 따라 적절히 결정되는 I/O 제어 장치.
  17. 제 13 항에 있어서,
    장애 발생시, 상기 I/O 유닛 상태 복원 수단이 상기 I/O 요구에 관련된 상기 I/O 유닛의 상태를 복원시키지 못할 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 에러 응답을 발생하는 수단을 더 포함하는 I/O 제어 장치.
  18. 제 13 항에 있어서,
    장애 발생시, 상기 I/O 요구가 출력 요구이고 상기 I/O 요구가 상기 장애 발생전에 완료된 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에게로 성공적인 I/O 완료를 보고하는 수단을 더 포함하는 I/O 제어 장치.
  19. 제 14 항에 있어서,
    상기 CPU는 상기 새로운 체크포인트 획득이 완료된 때에 상기 I/O 실행 프로세스들에 할당되는 I/O 제어 장치.
  20. 제 14 항에 있어서,
    장애 발생시, 상기 I/O 유닛 상태 복원 수단이 상기 I/O 요구에 관련된 상기 I/O 유닛의 상태를 복원시키지 못할 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 에러 응답을 발생하는 수단을 더 포함하는 I/O 제어 장치.
  21. 제 14 항에 있어서,
    장애 발생시, 상기 I/O 요구가 출력 요구이고 상기 I/O 요구가 상기 장애 발생 전에 완료된 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 성공적인 I/O 완료를 보고하는 수단을 더 포함하는 I/O 제어 장치.
  22. 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 갖는 컴퓨터 시스템―상기 CPU는 자신의 내부 상태 및 상기 주 메모리의 내용을 체크포인트로서 주기적으로 보존하며, 상기 컴퓨터 시스템에 장애가 발생하면, 가장 최근 체크포인트의 상기 CPU의 내부 상태 및 상기 주 메모리의 내용을 복원시켜 데이터 처리를 재개함―의 I/O 제어 장치에 있어서,
    상기 CPU에 의해 수행되는 상기 I/O 유닛의 상태 설정 시퀀스의 파라미터를 로깅하는 I/O 유닛 상태 기억 수단과,
    우선 상기 I/O 유닛을 초기화하고, 다음으로 상기 I/O 유닛 상태 기억 수단에 의해 기억된 상기 로깅된 파라미터에 따라 상기 상태 설정 시퀀스를 재실행시킴으로써, 상기 I/O 유닛의 상태를 상기 가장 최근 체크포인트의 상태로 복원시키는 I/O 유닛 상태 복원 수단과,
    상기 컴퓨터 시스템의 애플리케이션 프로세스가 I/O 요구를 발한 때에 상기 주 메모리내에 상기 I/O 요구를 수행하는데 필요한 정보를 포함하는 요구 블록을 생성하는 요구 블록 생성 수단과,
    요구 블록에 따라 I/O 유닛 구동기 루틴을 실행시킴으로써 I/O 동작을 수행하는 I/O 실행 프로세스와,
    장애 발생후 상기 가장 최근 체크포인트로부터의 재개시에, 초기 상태에 있지 않은 상기 I/O 실행 프로세스들을 초기화시켜서 상기 I/O 실행 프로세스에 의해 수행되는 I/O 동작이 처음부터 재실행되도록 하는 I/O 실행 프로세스 초기화 수단
    을 포함하는 I/O 제어 장치.
  23. 제 22 항에 있어서,
    상기 주 메모리에 유지된 요구 블록중에서, 상기 I/O 실행 프로세스는 상기 가장 최근 체크포인트 이전에 생성된 요구 블록에 따라서는 I/O 동작을 수행하기 시작하고, 상기 가장 최근 체크포인트 이후에 생성된 요구 블록에 따라서는 I/O 동작을 새로운 체크포인트가 획득될 때까지 지연시키는 I/O 제어 장치.
  24. 제 22 항에 있어서,
    I/O 요구를 발한 애플리케이션 프로세스를 실행하는 상기 CPU는 상기 I/O 요구에 기초해 생성된 상기 요구 블록에 관련된 I/O 실행 프로세스를 또한 실행하는 I/O 제어 장치.
  25. 제 22 항에 있어서,
    상기 I/O 실행 프로세스에 할당되는 CPU의 수는 처리될 요구 블록의 수에 따라 적절히 결정되는 I/O 제어 장치.
  26. 제 22 항에 있어서,
    장애 발생시, 상기 I/O 유닛 상태 복원 수단이 상기 I/O 요구에 관련된 상기 I/O 유닛의 상태를 복원시키지 못할 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 에러 응답을 발생하는 수단을 더 포함하는 I/O 제어 장치.
  27. 제 22 항에 있어서,
    장애 발생시, 상기 I/O 요구가 출력 요구이고 상기 I/O 요구가 상기 장애 발생전에 완료된 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에게로 성공적인 I/O 완료를 보고하는 수단을 더 포함하는 I/O 제어 장치.
  28. 제 23 항에 있어서,
    상기 CPU는 상기 새로운 체크포인트 획득이 완료된 때에 상기 I/O 실행 프로세스들에 할당되는 I/O 제어 장치.
  29. 제 23 항에 있어서,
    장애 발생시, 상기 I/O 유닛 상태 복원 수단이 상기 I/O 요구에 관련된 상기 I/O 유닛의 상태를 복원시키지 못할 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 에러 응답을 발생하는 수단을 더 포함하는 I/O 제어 장치.
  30. 제 23 항에 있어서,
    장애 발생시, 상기 I/O 요구가 출력 요구이고 상기 I/O 요구가 상기 장애 발생 전에 완료된 경우에 상기 요구된 I/O 동작을 재실행시키지 않고 상기 애플리케이션 프로세스에 대해 성공적인 I/O 완료를 보고하는 수단을 더 포함하는 I/O 제어 장치.
  31. 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 갖는 컴퓨터 시스템―상기 CPU는 자신의 내부 상태와 상기 주 메모리의 내용을 체크포인트로서 주기적으로 보존하고, 상기 컴퓨터 시스템에 장애가 발생하면, 가장 최근 체크포인트의 상기 CPU의 내부 상태 및 상기 주 메모리의 내용을 복원시켜서 데이터 처리를 재개함―의 I/O 제어 방법에 있어서,
    상기 CPU에 의해 수행되는 상기 I/O 유닛의 상태 설정 시퀀스의 파라미터를 로깅하는 단계와,
    우선 상기 I/O 유닛을 초기화시키고, 다음으로 상기 로깅된 파라미터에 따라 상기 상태 설정 시퀀스를 재실행시킴으로써, 상기 가장 최근 체크포인트의 상태로 상기 I/O 유닛의 상태를 복원하는 단계―상기 I/O 유닛의 상태를 복원하는 단계는 상기 가장 최근 체크포인트 이후 새로운 상태 설정 시퀀스가 수행된 I/O유닛의 상태 설정 시퀀스를 초기화시키고 재실행시키는 것을 포함함―
    를 포함하는 I/O 제어 방법.
  32. 하나 이상의 CPU와, 주 메모리와, 하나 이상의 I/O 유닛을 갖는 컴퓨터 시스템―상기 CPU는 자신의 내부 상태와 상기 주 메모리의 내용을 체크포인트로서 주기적으로 보존하고, 상기 컴퓨터 시스템에 장애가 발생하면, 가장 최근 체크포인트의 상기 CPU의 내부 상태 및 상기 주 메모리의 내용을 복원시켜서 데이터 처리를 재개함―의 I/O 제어 방법에 있어서,
    상기 CPU에 의해 수행되는 상기 I/O 유닛의 상태 설정 시퀀스의 파라미터를 로깅하는 단계와,
    우선 상기 I/O 유닛을 초기화시키고, 다음으로 상기 로깅된 파라미터에 따라 상기 상태 설정 시퀀스를 재실행시킴으로써, 상기 가장 최근 체크포인트의 상태로 상기 I/O 유닛의 상태를 복원하는 단계와,
    상기 컴퓨터 시스템의 애플리케이션 프로세스가 I/O 요구를 발한 때에 상기 주 메모리내에 상기 I/O 요구를 수행하는데 필요한 정보를 포함하는 요구 블록을 생성하는 단계와,
    I/O 실행 프로세스를 이용하여 요구 블록에 따라 I/O 유닛 구동기 루틴을 실행시킴으로써 I/O 동작을 수행하는 단계와,
    장애 발생 후 상기 가장 최근 체크포인트로부터의 재개시에 초기 상태에 있지 않은 상기 I/O 실행 프로세스를 초기화시켜서 상기 I/O 실행 프로세스에 의해 수행되는 I/O 동작이 처음부터 재실행되도록 하는 단계
    를 포함하는 I/O 제어 방법.
KR1019970003176A 1996-01-31 1997-01-31 입/출력 제어 장치 및 방법 KR100262835B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP1535296 1996-01-31
JP96-15352 1996-01-31
JP96-015352 1996-01-31

Publications (2)

Publication Number Publication Date
KR970059930A KR970059930A (ko) 1997-08-12
KR100262835B1 true KR100262835B1 (ko) 2000-08-01

Family

ID=11886412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970003176A KR100262835B1 (ko) 1996-01-31 1997-01-31 입/출력 제어 장치 및 방법

Country Status (5)

Country Link
US (1) US5931954A (ko)
EP (1) EP0788052B1 (ko)
KR (1) KR100262835B1 (ko)
CN (1) CN1098490C (ko)
DE (1) DE69717876T2 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3253883B2 (ja) * 1997-01-31 2002-02-04 株式会社東芝 プロセスリスタート方法及びプロセス監視装置
US6332199B1 (en) * 1998-10-29 2001-12-18 International Business Machines Corporation Restoring checkpointed processes including adjusting environment variables of the processes
WO2000036506A1 (en) 1998-12-16 2000-06-22 Kent Ridge Digital Labs Process oriented computing environment
US6345331B1 (en) * 1999-04-20 2002-02-05 International Business Machines Corporation Device adapter being reintegrated with plurality of device adapters of network, or reestablishing permissions and resubmitting I/O requests depending on determined device state after failure
US6490690B1 (en) * 1999-07-22 2002-12-03 International Business Machines Corporation Method and apparatus for unix system catastrophic recovery aid
US7065779B1 (en) 1999-10-13 2006-06-20 Cisco Technology, Inc. Technique for synchronizing multiple access controllers at the head end of an access network
US7139923B1 (en) 2001-06-27 2006-11-21 Cisco Technology, Inc. Technique for synchronizing network devices in an access data network
US7209442B1 (en) 2001-06-27 2007-04-24 Cisco Technology, Inc. Packet fiber node
US7085287B1 (en) 2001-06-27 2006-08-01 Cisco Technology, Inc. Map routing technique implemented in access networks
US7639617B2 (en) * 2001-06-27 2009-12-29 Cisco Technology, Inc. Upstream physical interface for modular cable modem termination system
US7688828B2 (en) * 2001-06-27 2010-03-30 Cisco Technology, Inc. Downstream remote physical interface for modular cable modem termination system
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
KR20030056540A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 데이터베이스 관리 시스템에서 시스템 고장에 대비한 파일삭제 및 회복 방법
US7583704B1 (en) 2003-06-10 2009-09-01 Carl Walker Synchronizing separated upstream and downstream channels of cable modem termination systems
US7305608B2 (en) * 2003-09-25 2007-12-04 Broadcom Corporation DSL trellis encoding
US20050094551A1 (en) * 2003-09-25 2005-05-05 Broadcom Corporation Processor instruction for DMT encoding
US7734041B2 (en) * 2003-09-26 2010-06-08 Broadcom Corporation System and method for de-scrambling and bit-order-reversing payload bytes in an Asynchronous Transfer Mode cell
US7751557B2 (en) * 2003-09-26 2010-07-06 Broadcom Corporation Data de-scrambler
US7903810B2 (en) 2003-09-26 2011-03-08 Broadcom Corporation Single instruction for data scrambling
US7580412B2 (en) * 2003-09-26 2009-08-25 Broadcom Corporation System and method for generating header error control byte for Asynchronous Transfer Mode cell
US7756273B2 (en) * 2003-09-26 2010-07-13 Broadcom Corporation System and method for bit-reversing and scrambling payload bytes in an asynchronous transfer mode cell
US7216255B2 (en) * 2004-01-23 2007-05-08 Microsoft Corporation Adaptive recovery from system failure for application instances that govern message transactions
US7720101B2 (en) * 2004-05-25 2010-05-18 Cisco Technology, Inc. Wideband cable modem with narrowband circuitry
US7646786B2 (en) * 2004-05-25 2010-01-12 Cisco Technology, Inc. Neighbor discovery in cable networks
US7539208B2 (en) * 2004-05-25 2009-05-26 Cisco Technology, Inc. Timing system for modular cable modem termination system
US7532627B2 (en) * 2004-05-25 2009-05-12 Cisco Technology, Inc. Wideband upstream protocol
US8102854B2 (en) * 2004-05-25 2012-01-24 Cisco Technology, Inc. Neighbor discovery proxy with distributed packet inspection scheme
US7835274B2 (en) * 2004-05-25 2010-11-16 Cisco Technology, Inc. Wideband provisioning
US7817553B2 (en) * 2004-05-25 2010-10-19 Cisco Technology, Inc. Local area network services in a cable modem network
US8149833B2 (en) * 2004-05-25 2012-04-03 Cisco Technology, Inc. Wideband cable downstream protocol
US7864686B2 (en) * 2004-05-25 2011-01-04 Cisco Technology, Inc. Tunneling scheme for transporting information over a cable network
US7447225B2 (en) * 2004-07-23 2008-11-04 Cisco Technology, Inc. Multiple multicast forwarder prevention during NSF recovery of control failures in a router
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US20060129618A1 (en) * 2004-12-10 2006-06-15 Albert Maier Method and a computer system for synchronising backups of objects and of meta data about the objects
JP4060322B2 (ja) * 2005-03-28 2008-03-12 三菱電機株式会社 アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体
US7630361B2 (en) * 2005-05-20 2009-12-08 Cisco Technology, Inc. Method and apparatus for using data-over-cable applications and services in non-cable environments
KR100755706B1 (ko) * 2006-01-17 2007-09-05 삼성전자주식회사 애드 혹 네트워크를 위한 분산 서비스 컴포지션 모델을제공하는 방법 및 장치
US7701951B2 (en) * 2006-03-06 2010-04-20 Cisco Technology, Inc. Resource reservation and admission control for IP network
US8352784B2 (en) * 2007-12-17 2013-01-08 Microsoft Corporation Device settings restore point
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8175754B2 (en) * 2008-05-23 2012-05-08 Rosemount Inc. Configuration of a multivariable process fluid flow device
CN103337113B (zh) * 2013-07-17 2015-05-13 广州广电运通金融电子股份有限公司 电子流水日志智能分析方法、装置及处理器
US9495242B2 (en) * 2014-07-30 2016-11-15 International Business Machines Corporation Adaptive error correction in a memory system
US10642536B2 (en) * 2018-03-06 2020-05-05 Western Digital Technologies, Inc. Non-volatile storage system with host side command injection
US20230053087A1 (en) * 2020-02-03 2023-02-16 Samsung Electronics Co., Ltd. Data management system and method of controlling
US11636199B2 (en) * 2021-04-12 2023-04-25 Realtek Singapore Pte Ltd. Real time clock with integrated anti-rollback protection

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3688274A (en) * 1970-12-23 1972-08-29 Ibm Command retry control by peripheral devices
US3736566A (en) * 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
US4740969A (en) * 1986-06-27 1988-04-26 Hewlett-Packard Company Method and apparatus for recovering from hardware faults
JPH02294753A (ja) * 1989-05-09 1990-12-05 Fujitsu Ltd 入出力処理装置の初期化方式
US5293613A (en) * 1991-08-29 1994-03-08 International Business Machines Corporation Recovery control register
US5664090A (en) * 1993-12-15 1997-09-02 Kabushiki Kaisha Toshiba Processor system and method for maintaining internal state consistency between active and stand-by modules
DE69635409T2 (de) * 1995-03-06 2006-07-27 Intel Corp., Santa Clara Ein rechnersystem mit unbewachter auf-anfrage-verfügbarkeit
US5751939A (en) * 1995-11-29 1998-05-12 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system using an exclusive-or memory
US5712971A (en) * 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US5438675(95. 8. 1) 및 IBM TECH. DIS. B. vol.14, no.2,1971.7, pp.358-361 *

Also Published As

Publication number Publication date
EP0788052A1 (en) 1997-08-06
KR970059930A (ko) 1997-08-12
EP0788052B1 (en) 2002-12-18
DE69717876D1 (de) 2003-01-30
CN1098490C (zh) 2003-01-08
US5931954A (en) 1999-08-03
CN1165344A (zh) 1997-11-19
DE69717876T2 (de) 2003-11-13

Similar Documents

Publication Publication Date Title
KR100262835B1 (ko) 입/출력 제어 장치 및 방법
US5828821A (en) Checkpoint restart method and apparatus utilizing multiple log memories
US7085955B2 (en) Checkpointing with a write back controller
US6622263B1 (en) Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
US5845326A (en) Computer system and method for obtaining memory check points and recovering from faults using the checkpoints and cache flush operations
US5802267A (en) Method for checkpointing in computer system under distributed processing environment
US7831857B2 (en) Method and system for recovering from operating system crash or failure
JP3675802B2 (ja) 計算の状態を再構成する方法ならびにシステム
US7840768B2 (en) Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US8082469B2 (en) Virtual computer system, error recovery method in virtual computer system, and virtual computer control program
US20060150010A1 (en) Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US20120233499A1 (en) Device for Improving the Fault Tolerance of a Processor
US6810489B1 (en) Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error
JP2000293391A (ja) 大規模メモリシステム管理方法および装置
JPH07121315A (ja) ディスクアレイ
JP3093653B2 (ja) 計算機システムの入出力制御装置、及び入出力制御方法
JPH10240635A (ja) 計算機システムおよびそのシステムにおけるi/o装置の状態復元方法
JP2000222232A (ja) 電子計算機及び電子計算機のメモリ障害回避方法
JPH03134747A (ja) プログラムの動的制御システムおよびその方法
USRE45632E1 (en) Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
JP2009169515A (ja) コンピュータシステム及びシステム回復装置
JPH07271624A (ja) フォールトトレラント計算機システムにおける2重化メモリへのキャッシュフラッシュ方法
JP3729573B2 (ja) 並列処理システムの処理引き継ぎ方法
JPH07141120A (ja) 情報記憶媒体障害処理方法
CN116804927A (zh) 快闪存储器的实时固件更新

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: 20070430

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee