KR100196760B1 - 터미널 에뮬레이터 또는 사용자 프로그램으로부터 그래픽 사용자 인터페이스 제어 및 커맨드 라인 제어를 선택할 수 있도록 해주는 다중 쓰레드를 실행하는 컴퓨터 프로그램용 제어기 - Google Patents

터미널 에뮬레이터 또는 사용자 프로그램으로부터 그래픽 사용자 인터페이스 제어 및 커맨드 라인 제어를 선택할 수 있도록 해주는 다중 쓰레드를 실행하는 컴퓨터 프로그램용 제어기 Download PDF

Info

Publication number
KR100196760B1
KR100196760B1 KR1019950700281A KR19950700281A KR100196760B1 KR 100196760 B1 KR100196760 B1 KR 100196760B1 KR 1019950700281 A KR1019950700281 A KR 1019950700281A KR 19950700281 A KR19950700281 A KR 19950700281A KR 100196760 B1 KR100196760 B1 KR 100196760B1
Authority
KR
South Korea
Prior art keywords
tty
gui
program
thread
controller
Prior art date
Application number
KR1019950700281A
Other languages
English (en)
Other versions
KR950702721A (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 KR950702721A publication Critical patent/KR950702721A/ko
Application granted granted Critical
Publication of KR100196760B1 publication Critical patent/KR100196760B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Abstract

ARC/INFO 지리 정보 시스템(GIS) 컴퓨터 프로그램(28)은 커맨드라인(TTY) 및 그래픽 사용자 인터페이스(GUI) 동작의 다중 쓰레드를 지원한다. 쓰레드의 상부에 있는 TTY 동작은 터미널 에뮬레이터(26)를 통한 키보드(20)로부터 제어되도록 인에이블되는 반면에, 쓰레드의 상부에 있는 GUI 동작은 윈도우 디스플레이(24)를 사용하여 마우스에 의해 제어되도록 프로그램(28)을 인에이블한다. 단독형 프로그램(28)의 TTY에서 GUI 제어로의 전환은 입력 스트림으로부터 명령을 필요로하는 반면에, GUI에서 TTY 제어로의 전환은 마우스(22) 또는 키보드(20)로부터 인위적으로 트리거할 필요가 있다. 본 발명의 제어기(44)는 흔히 쓰레드(48)의 TTY 동작(46)의 상부에 있는 가공물로서 더미 윈도우를 포함하는 더미 GUI 동작(50)을 삽입함으로써 GUI 제어를 인에이블시킨다. 키보드(20) 또는 사용자 프로그램으로부터의 TTY 명령에 응답하여 제어기(44)가 더미 윈도우를 제거함으로써, 쓰레드(48)로부터 더미 GUI 동작(50)이 삭제되게 하고 키보드(20)로부터 TTY 제어를 인에이블시키게 한다. 다음에 제어기(44)는 프로그램(28)에 명령을 공급하고, 후속하는 GUI 제어를 인에이블시키기 위해 쓰레드(48)의 TTY 동작 (46)의 상부로 다시 상기 더미 GUI 동작(50)을 삽입한다.

Description

[발명의 명칭]
터미널 에뮬레이터 또는 사용자 프로그램으로부터 그래픽 사용자 인터페이스(GUT) 제어 및 커맨드 라인(TTY)제어를 선택할 수 있도록 해주는 다중 쓰레드(Thread)를 실행하는 컴퓨터 프로그램용 제어기
[발명의 분야]
본 발명은 총체적으로 컴퓨터 기술에 관한 것으로, 보다 구체적으로는 ARC/INFO지리 정보 시스템(Geographic Information system, GIS) 및, 사용자에 의한 수동적인 전환(Switching)없이, 키보드를 사용하는(TTY) 제어와 마우스 또는 키보드를 사용한 그래픽 사용자 인터페이스(Graphic User Interface, GUI)제어를 가능하게하는 상기와 유사한 컴퓨터 소프트웨어 프로그램용 제어기에 관한 것이다.
[관련 기술 설명]
ARC/INFO캘리포니아주 레드랜드스의 환경 시스템 연구 기관 (ESRI)(주)로부터 사업적으로 입수할 수 있는 매핑(mapping) 및 지리 정보 시스템(GIS) 컴퓨터 소프트웨어 프로그램이다.
ARC/INFO는 알파뉴매릭 문자와 아이콘 형태로 된 지리 정보등과 오버레이 시킨 지도를 작성하고 보여주는데 사용된다. ARC/INFO에 대한 포괄적인 소개는 환경 연구기관 (주)에 의해, 1992년 9월 출간원 ARC/INFO: GIS Today and Tomorrow,ESRI WHITE PAPER SERIES 라는 명칭의 홍보 책자에 제시되어 있다:
ARC/INFO에는, 그래픽 사용자 인터페이스(Graphic User Interface, GUI)와 마우스나 다른 포인팅 장치 또는 키보드를 사용하여 특정 응용 프로그램을 반자동으로 실행하기 위해 사용자가 커스텀 윈도우 및 메뉴를 생성할 수 있도록 하는 툴 컷(Toolkit)이 제공된다.
범용 목적 컴퓨터에서 사용하기 위해 설치된 단독형(standalone) ARC/INFO일반적인 구성이 제1도에 설명되어 있다. 컴퓨터 시스템(10)은, 양호하게는 표준 X-윈도우 환경의 UNIXR운영체제 하에서 운영되는 컴퓨터(12)를 구비하지만, 본발명은 이것에 한정되지는 않는다. 컴퓨터(12)는 키보드(20), 마우스(22) 및 비디오 디스플레이 모니터(24)를 구비한다.
상기 컴퓨터 시스템(10)은 프로그램 소프트웨어 시스템(16)을 더 포함하는데, 이 프로그램 소프트웨어 시스템(16)은 입력을 제어하기 위한 키보드(20), 마우스(22) 및 모니터(24)에 대한 입력, 출력 및 디스플레이 동작을 제어하기 위한 종래의 X-서버(18)을 포함한다.
상기 프로그램 소프트웨어 시스템(16)은 X-서버(18)의 제어하에서 키보드(20)으로부터의 커맨드라인(TTY) 입력들을 처리하여, 이 입력들을 (28)로 가리켜진 ARC/INFO 시스템 프로그램으로 공급하기 위한 터미널 에뮬레이터(26)을 더 포함한다. 상기 X-서버(18)는 마우스(22)와 키보드(20)으로부터의 그래픽 제어(GUI)입력들을 ARC/INFO 시스템 프로그램(28)으로 향하게 하고, ARC/INFO 시스템 프로그램(28)으로부터의 디스플레이 출력들을 모니터(24)로 공급한다.
비록 단독형의 ARC/INFO을 포함하는 시스템(10)이, 키보드(20)을 사용한 TTY 제어와 마우스(22)를 사용한 GUI 제어 모두를 가능하게 하더라도, 이들 두 제어 모드들은 수동으로 전환되어야 한다. TTY로부터 GUI제어로 전환시키는데에는 수동으로 키보드(20)으로부터 명령을 내리는 것이 요구되는 반면, GUI로부터 TTY제어로 전환하는데에는 수동으로 마우슬 사용하여 디스플레이 아이콘을 아이콘을 클릭(click)하거나 또는 키보드(20)상의 키를 누를 필요가 있다.
이는, ARC/INFO 시스템 프로그램(28)이 모니터(24)상에 디스플레이할 데이터를 사용자 프로그램이 주기적으로 생성하는 응용 프로그램에 있어서는 주요한 문제가 된다. 비록 사용자 프로그램이 데이터를 TTY 제어 입력으로 자동적으로 공급할 수 있더라도, 프로그램을 인에이블시켜 디스플레이를 갱시하기 위해서는 사용자가 GUI에서 TTY 제어로 수동으로 전환시킬 필요가 있다.
특히, 시스템(10)에 의해 디스플레이된 정보에 기초하여 사용자가 신속히 결정하여야 하는 응용프로그램에서는, 사용자가 모니터 디스플레이를 수동으로 갱신 하는 것과 같은 낮은 수준의 작업을 사용자로 하여금 인위적으로 수행하게 하는 것은 허용될 수 없다. 단독형 ARC/INFO 시스템 프로그램(28)이 TTY와 GUI제어사이에서 수동적으로 전환을 요구되는 이유가 제2(a)도 내지 제2(c)도에 설명된다.
ARC/INFO 시스템 프로그램(28)은 (30, 32와 34)와 같은 복수의 제어 동작 쓰레드들을 지원한다. 각 쓰레드 (30, 32와 34)는 보류된 동작(TTY 인터프리터,GUI윈도우 또는 메뉴)의 스택을 그 내부에 가질 수 있다. ARC/INFO가 쓰레드를 스케쥴링하는 동안 유닉스 운영 체제는 프로세스를 스케쥴링한다는 점에서, ARC/INFO 쓰레드는 유닉스 프로세스와 유사하다.
각각의 쓰레드(30, 32와 34)는 ARC/INFO 매크로 언어(AML) 동작도 역시 포함할 수 있다. AML 동작은, ARC/INFO 툴킷을 사용하여 커스텀화될 수 있는 ARC/INFO 시스템 프로그램(28) 내의 특정 테스크(task)나 함수를 론치(launch)한다.
제2(a)도에서, 쓰레드(30, 32와 34) 모두는, 선행될 동작이 없이 우선 순위 0가 할당된 GUI동작을 그 상부에 갖고 있다. 이러한 동작들이 스케쥴링되는 순서는 ARC/INFO 시스템 프로그램(28)내의 스케쥴러에 및 마우스(22)와 키보드(20)으로부터 수신된 입력에 의해 결정된다.
제2(b)도는 쓰레드(30)의 상부에 AML 동작, 및 쓰레드(32와 34)의 상부에 있는 GUI 동작을 도시하고 있다. AML 동작은 GUI 동작에 선행하며, 우선 순위 1이 할당된다. 따라서 쓰레드(30) 내의 AML 동작은 쓰레드(32와 34)내의 GUI 동작에 앞서 스케쥴링된다. GUI 동작은, 모든 쓰레드가 GUI 동작 컨텍스트(context)에 있을 때까지 스케쥴링되지 않을 것이다.
제2(c)도는 쓰레드(30)의 상부에 있는 AML 동작, 쓰레드(32)의 상부에 있는 TTY 동작, 및 쓰레기(34)의 상부에 있는 GUI 동작을 도시한다. TTY 동작은 AML과 GUI 동작 모두에 선행하며, 우선 순위 2가 할당되어 있다. 따라서, 쓰레드(32) 내의 TTY 동작이 쓰레드(30)내의 AML 동작에 앞서 스케쥴링이될 것이며, 쓰레드(30)내의 AML 동작도 역시 쓰레드(34)내의 GUI 동작에 선행한다.
만일 TTY 동작이 쓰레드의 상부에 있다면, TTY 동작은 스케쥴링되어, 복귀(쓰레드를 팝오프시키고 쓰레드를 호출한 동작으로 복귀)할 때까지 또는 자신의 쓰레드의 상부에 GUI동작을 푸시함으로써 그 자신을 보류할 때 까지 어떠한 다른 쓰레드에도 제어를 양보하지 않을 것이다. 이와 같이, TTY 동작이 쓰레드의 상부에 있는 동안, 어느 다른 쓰레드의 상부에 있는 GUI나 AML 동작이 스케쥴링되지 않을 것이다.
ARC/INFO 시스템 프로그램(28)이 쓰레드의 상부에 있는 GUI 동작의 제어하에 있으면, TTY 제어로의 전환은, TTY 동작이 임의의 쓰레드의 상부에 놓이는 현재의 동작이 되게끔 만들어 주는 수동적인 입력에 의해 트리거되어야만 한다.
[발명의 요약]
ARC/INFO지리 정보 시스템(GIS), 및 이와 유사 컴퓨터 프로그램 커맨드라인(TTY) 및 그래픽 사용자 인터페이스(Graphic User Interface, GUI) 동작의 다중쓰레드를 지원한다. 쓰레드의 상부에 있는 TTY 동작은 ARC/INFO가 키보드나 사용자 프로그램으로부터의 입력 명령 스트림에 의해 제어되도록 해주는 반면, 쓰레드의 상부에 있는 GUI 동작은 ARC/INFO가 윈도우 디스플레이를 사용한 마우스 또는 키보드에 의해 제어될 수 있도록 해준다.
단독형 ARC/INFO의 제어를 TTY로부터 GUI로 전환하는데에는 그 입력스트림으로부터의 명령을 필요로하는 반면, GUI로부터 TTY로의 제어 전환은 마우스 또는 키보드로부터의 수동적인 트리거를 필요로 한다.
본 발명을 구현하는 ARC/INFO 제어기는, 파워 유저(power user)가 친숙한 GUI 인터페이스를 이용하지 않고 TTY 인터페이스를 통해 그 고유의 언어로 ARC/INFO와 대화할 수 있도록 해주고 있다. 또한, 이 제어기는 별개의 사용자 프로그램으로부터 ARC/INFO 프로그램과의 프로시쥬얼한(컴퓨터가 진행하는) 대화(interact)역시 허용해 주고 있다. 그렇게함으로써, ARC/INFO 시스템 프로그램은 TTY와 GUI 입력 모두에 대해 동시에 응답하는 것처럼 보인다.
본 발명의 제어기는 통상적으로 GUI 제어를 인에이블시킨다. 이것은 제어기에 리스닝(listening)하고 있는 TTY 동작의 상부에 [인위적인 더미(dummy)윈도우를 갖는]더미 GUI 동작을 푸시함으로써 이루어진다.
키보드나 사용자 프로그램으로부터의 TTY 명령에 응답하여, 제어기는 더미윈도우를 삭제하고, GUI 동작이 호출 TTY 동작으로 제어를 반환되도록 하며(즉, 웨이크업시키며), 상기 TTY 명령을 ARC/INFO로 공급하고, 더미 GUI 동작을 쓰레드 상에 다시 푸시하여 GUI 제어가 후속될 수 있도록 한다.
ARC/INFO는 TTY 명령에 응답하여 GUI 제어로부터 TTY 제어로 자동적으로 전환되므로, ARC/INFO 단독형에서 수동적인 전환의 필요성이 없어진다. 이는 디스플레이가 사용자 프로그램으로 부터의 TTY 명령들에 의해 자동적으로 갱신될 수 있으므로 사용자가 수동적으로 디스플레이를 갱신시킬 필요성이 없다는 점에서 특히 이점이 있다.
비록 본 발명이 특별히 ARC/INFO시스템을 위해 설계되었지만, 본 발명은, 동작의 다중 쓰레드를 지원하며 한 쓰레드의 상부에 있는 TTY 동작이 다른 쓰레드의 상부에 GUI 동작에 선행하는 그러한 다른 프로그램 시스템에서 TTY와 GUI 제어 모두를 가능케 하는데에도 역시 적용될 수 있다.
본 기술분야에 숙련된 자들은, 동일한 부분에는 동일한 참조 번호가 부여된 첨부 도면을 참조한 이후의 상세한 설명을 통해, 본 발명의 이들 및 다른 특징와 이점들을 명확하게 이해할 수 있을 것이다.
[도면의 간단한 설명]
제1도는 단독형 ARC/INFO컴퓨터 소프트웨어 프로그램을 포함하고 있는 컴퓨터 시스템의 블록 다이어그램.
제2(a)도 내지 제2(c)도는 ARC/INFO 프로그램에서의 동작 스케쥴링 환경을 도시하는 다이어그램.
제3도는 본 발명을 구현하는 ARC/INFO 컴퓨터 소프트웨어 프로그램과 ARC/INFO 제어기를 포함하는 컴퓨터 시스템의 블록 다이어그램.
제4(a)도 내지 제 4(c)도는 본 발명의 제어기의 기본 동작 원리를 도시하는 다이어그램.
제5도는 제3도의 소프트웨어 시스템의 일부를 도시하는 시스템 컨텍스트 데이타 흐름도.
제6도는 본 발명의 제어기를 도시하는 데이타 흐름도.
제7도는 본 발명의 제어기에 의해 수행되는 데이터 변환을 도시하는 데이타 흐름도.
제8도는 ARC/INFO 프로그램의 제어기 및 그 관련 부분을 도시하는 구조도.
제9도는 본 발명의 제어기의 메인(MAIN)루틴을 도시하는 순서도.
제10도는 본 발명의 제어기의 판독 표준 입력(READ STANDARD INPUT)서브루틴을 도시하는 순서도.
제11도는 제어기의 웨이크 업(WAKE-UP) 서브루틴을 도시하는 순서도.
제12도는 제어기의 풋 투 슬립(PUT TO SLEEP) 서브루틴을 도시하는 순서도.
[발명의 상세한 설명]
제3도는, 종래 기술의 시스템(10)과 공통된 부분이면서 동일한 참조 번호가 지정된 구성요소를 포함하는 본 발명을 구현하는 컴퓨터 시스템(40)을 도시한다. 컴퓨터 시스템(40)은, 프로그램 소프트웨어 시스템(42)이 터미널 에뮬레이터(26)과 ARC/INFO 시스템 프로그램(28) 사이에 접속된 ARC/INFO 제어기(ACI)(44)를 구비한다는 점에서, 컴퓨터 시스템(10)과 다르다. ARC/INFO 제어기(44)는 X-서버(18)와도 통신한다.
본 발명의 기본 동작 원리가 제4a도 내지 4c도에 도시되어 있다. ARC/INFO 시스템 프로그램(28)은 프로그램의 표준 입력과 표준 출력에 접속된 TTY 동작(46)을 초기 쓰레드(48)의 단일 동작으로서 생성한다. 그 다음, ARC/INFO 제어기(44)는 쓰레드(48)에서 TTY 동작(46)의 상부 더미 GUI 동작(50)을 푸시한다. 더미 GUI 동작(50)의 가공물(artifact)은 더미 메뉴 또는 윈도우이다. 더미 윈도우의 내용물은 결코 액세tm(access)되지 않을 것이기 때문에 중요하지 않다.
TTY 동작(46)은 더미 GUI 동작(50)에 의해 보류되었기 때문에 스케쥴러에 의해 고려되지 않는다. 이로 인해, ARC/INFO 시스템 프로그램(28)은 다른 쓰레드들의 상부에 있는 GUI 동작에 의해 정상적으로 제어된다.
터미널 에뮬레이터(26)을 통한 키보드(20)으로부터 TTY 명령, 또는 보조 사용자 프로그램으로부터의 TTY 명령에 응답하여, ARC/INFO 제어기(44)는 더미 윈도우를 삭제하여 더미 GUI 동작(50)을 팜(pop)한 다음, 제4(b)도에 도시된 바와 같이 TTY 동작 (46)으로 제어를 복귀시킨다. 동작(46)은 쓰레드(48)의 상부에 있기 때문에 우선권을 가지며, 어느 다른 쓰레드의 상부에 있는 GUI와 AML 동작에 앞서 ARC/INFO 시스템 프로그램(28)에 의해 스케쥴링될 것이다. 이것은 터미널 에뮬레이터(26) 또는 사용자 프로그램으로부터의 TTY 명령이 ARC/INFO 시스템 프로그램(28)로 공급되거나 릴레이되도록 해준다.
제4(c)도에 도시된 바와 같이, 터미널 에뮬레이터(26) 또는 사용자 프로그램으로부터 ARC/INFO 시스템 프로그램(28)으로 TTY 명령이 성공적으로 제공된 후에, ARC/INFO 제어기(44)는 쓰레드(48) 내의 TTY 동작 (46)의 상부로 GUI 동작 (50)을 다시 푸시하여, 더미 윈도우가 재생성되고 다른 쓰레드의 GUI 동작으로 제어를 반환하도록 한다.
보조 사용자 프로그램 또는 프로세스는, 상기 사용자 프로그램에 의해 검출 될 수 있는 임의의 이벤트에 응답하여 TTY 명령이 ARC/INFO 시스템 프로그램(28)으로 인가되도록 한다는 것에 유의하여야 한다.
ARC/INFO 시스템 프로그램(28)고 ARC/INFO 제어기(44)를 포함하는 프로그램 소프트웨어 시스템(42)의 일부의 시스템 컨텍스트 데이터 흐름도가 제5도에 도시되어 있다. 프로그램 소프트웨어 시스템(42)에는 2개의 TTY 데이터 스트림, 즉, 표준 입력 stdin과 표준 출력 stdout이 제공된다. 유닉스 운영 체제에서 stdin과 stdout을 터미널 에뮬레이터(26) 또는 파일이나 사용자 프로그램으로 리디렉트 하는 것은 간단하다.
프로그램 소프트웨어 시스템(42)는 stdin과 stdout이 터미널 또는 터미널 에뮬레이터에 접속될 때 가장 쉽게 검증된다. 터미널에서 ARC/INFO 명령을 타이핑하고 터미널과 ARC/INFO 디스플레이 상에 그 결과를 검증하는 것은 ARC/INFO를 직접 사용하는 것과 같은 방법으로 이루어진다.
프로그램 소프트웨어 시스템(42)는 stdin이 다른 프로세스의 stdout에 접속될 때 가장 유용하다. 이는 표준 유닉스 쉘(shall)을 사용하여 용이하게 수행될 수 있다. 다른 프로세스는, 출력을 트리거하여 결과적으로 ARC/INFO 시스템 프로그램(28)을 트리거하기 위하여 임의의 유닉스 이벤트를 사용할 수 있다.
ARC/INFO 제어기(44)의 데이터 흐름도가 제6도에 도시되어 있다. ARC/INFO 제어기(44)는 ARC/INFO 시스템 프로그램(28)을 차일드 프로세스(child process)로서 생성하고, 그 stdin과 stdout을 pty/tty쌍 또는 한 세트의 파이프일 수 있는 childWrite와 childRead에 각각 접속한다.
ARC/INFO 시스템 프로그램(28)의 스케쥴리에 부가하여, ARC/INFO 제어기(44)는 그 stdin을 그 childWrite를 통해 ARC/INFO 시스템 프로그램(28)의 stdin으로 간단히 전달한다. 그것은 또한 그 childRead를 통해 ARC/INFO 시스템 프로그램(28)의 stdout를 취하여 그 stdout으로 전달한다. ARC/INFO 시스템 프로그램(28)과 ARC/INFO 제어기(44) 양쪽 모두는, X-서버(18)로의 독립적인 디스플레이 접속을 생성한다.
ARC/INFO 제어기(44)는 그 stdin 스트림에서 사용 가능한 데이터가 존재할 때 readStdin 변환을 수행한다. 이 변환은 제7도에서 도시한 바와 같이 3단계로 실행된다.
1. ARC/INFO 차일드 웨이크업(그 stdin로 향해진 ARC/INFO 시스템 프로그램(28)의 주목을 끈다). 이것은 stdin 스트림이 childWrite로 릴레이하기 전에 행해져야 한다. ARC/INFO 시스템 프로그램(28)을 웨이크 업하는 방법은 표준 X 윈도위 매니저 프로토콜(protocol)을 사용하여 X-서버(18)로 윈도우 삭제 베세지를 보내는 것이다. 윈도우 삭제 메시지가 향해지는 윈도우는, 하부의 TTY 동작(46)을 차단하고 있는 더미 GUI 동작(50)의 가공물 위도우(artifact window)이다. 윈도우를 삭제함으로써 GUI 동작(50)이 종료되고 ARC/INFO의 stdin을 판독할 TTY 동작(46)으로 제어를 복귀시키게 한다.
2. stdin을 childWrite로 릴레이. ARC/INFO 시스템 프로그램(28)의 TTY 동작(46)은 릴레이된 모든 명령을 인터프리트할 것이다.
3. ARC/INFO 차일드를 슬립시킴(그 ARC/INFO 시스템 프로그램(28)의 주목을 stdin으로부터 벗어나게 함). 이는, 쓰레드(48)에 있는 TTY 동작(46)의 상부에 더미 GUI 동작(50)을 푸시하는 인터프리트될 명령을 ARC/INFO 시스템 프로그램(28)으로 전달하여, 동작(50)이 그 연관된 가공물 윈도우가 삭제될 때까지 종료되지 않도록 함으로써 달성된다.
상기 3단계를 실행한 후에, 프로그램 소프트웨어 시스템(42)는 정규 상태에 있게 되는데, 이 상태에서 프로그램 소프트웨어 시스템(42)는 쓰레드(48)이 아닌 다른 쓰레드들의 GUI 동작에 의해서 제어된다. 만일, 또다른 readStdin 이벤트가 검출되면, 상기 3단계들이 반복 수행되어, ARC/INFO 시스템 프로그램(28)이 인입되는 TTY 명령을 수신하고 인터프리트하게 할 것이다.
ARC/INFO 제어기(44)의 구조도가 ARC/INFO 시스템 프로그램(28)의 메인 루틴인 XtMainLoop루틴(28a)와 결합되어 제8도에 도시되어 있다.ARC/INFO 제어기(44)는 메인 루틴(62)에 의해 셋업된 콜벡 파라메타(callback parameter)에 따라 XtMainLoop(28a)에 의해 호출되는 readStdin 서브루틴(60)을 포함한다. readStdin 서브루틴(60)은 WakeUp 서브루틴(64)와 putToSleep 서브루틴(66)을 호출한다.
ARC/INFO 제어기(44)의 구조와 동작은 제9도 내지 제12도의 순서도를 참조하여 기술될 것이다. 제9도에 도시된 바와 같이, 메인 루틴(62)은 X-서버(18)에 대한 통신 링크(link)를 생성하고 stdin 과 stdout로의 TTY 링크와 더불어 ARC/INFO 차일드 프로세스를 생성함으로써 시스템 동작을 셋업한다. readStdin 서브루틴(60)은 ARC/INFO 제어기(44)의 stdin으로부터 판독할 것이 있는 경우에 XtMainLoop(28A)내부로부터 다시 호출될 수 있도록 등록된다.
그 다음, 메인 루틴(62)은, 쓰레드(48)에서의 TTY 동작(46)의 상부에 더미 GUI 동작(50)을 삽입하는 putToSleep 서브루틴(66)을 호출한다. 이로 인해 프로그램 소프트웨어 시스템(42)는 다름 쓰레드의 상부의 있는 GUI 명령에 의해 제어되게 된다.
[모니터(24)상의 디스플레이를 새로운 데이터로 갱신하는 명령과 같은] 터미널 에뮬레이터(26) 또는 보조 사용자 프로그램으로부터의 TTY 명령에 응답하여, readStdin 서브루틴(60)을 호출하는 XtMainLoop(28a)에 의해 관련된 이벤트가 검출된다. 제10도에 도시된 바와 같이, readStdin 서브루틴(60)은, 더미 GUI 동작(50)에 관련되어 있는 더미 윈도우를 삭제하라는 명령을 X-서버(18)로 전달하는 WakeUp 서브루틴(64)를 호출한다.
그 다음, 제어는, ARC/INFO 시스템 프로그램(28)이 그 stdin과 stdout으로 주목하게끔 우선 순위에 기초하여 스케쥴링된 TTY 명령(48)으로 복귀된다.
그 다음, readStdin 서브루틴(60)은, TTY 명령이 사용자 프로그램으로부터 터미널 에뮬레이터(26) 또는 childWrite를 통해 ARC/INFO 시스템 프로그램(28)의 stdin으로 릴레이되도록 한다. 이 동작을 완료한 후에, readStdin 서브루틴(60)은 쓰레드(48)에 있는 TTY 동작(46)의 상부에 다시 더미 GUI 동작(50)을 푸시하기 위해 putToSleep 서브루틴(66)을 호출한다. 이로 인해, 후속 제어는 다른 쓰레들의 상부에 잇는 GUI 동작으로 복귀하게 된다. 그 다음, readStdin 서브루틴(60)은 XtMainLoop(28a)로 복귀한다.
WakeUp 서브루틴(64)가 제11도에 도시되어 있다. 서브루틴(64)는 ARC/INFO 시스템 프로그램(28)로 명령을 전달하면, 이어서, ARC/INFO시스템 프로그램(28)은 더미 윈도우를 삭제하는 명령은 X-서버(18)로 전달한다. 그 다음, 서브루틴(64)는 관련된 더미 윈도우가 존재하는지를 판별하기 위해 X-서버(18)을 반복해서 폴링(poling)한다. X-서버(18)로부터 서브루틴(64)로 복귀된 정보가 더미 윈도우가 존재하지 않는다고 가리키면, 서브루틴(64)은 readStdin 서브루틴(60)으로 복귀한다.
putToSleep 서브루틴(66)이 제12도에 도시되어 있다. 서브루틴(66)은 쓰레드(48)에 있는 TTY 동작(46)의 상부 더미 GUI 동작(50)을 푸시하기 위해 ARC/INFO 시스템 프로그램(28)로 명령을 전달한다. 그 다음, 서브루틴(64)은 관련된 더미 윈도우가 존재하는지를 판별하기 위해 X-서버(18)를 반복하여 폴링한다. X-서버(18)로부터 서브루틴(60)으로 복귀된 정보가 더미 윈도우가 존재한다고 가리키면, 서브루틴(64)은 readStdin 서브루틴(60)으로 복귀한다.
본 발명의 예시적인 실시예가 도시되고 설명되었지만, 본 발명의 정신과 범위로부터 벗어나지 않고 본 기술분야의 숙련된 자는 다양한 변형과 대안적인 실시예를 구현할 수 있다. 따라서, 본 발명은 단지 특정적으로 기술된 실시예에 한정되어 있지 않다. 첨부된 청구범위에 한정되는 본 발명의 정신과 범위를 벗어나지 않고 다양한 변경이 이루어질 수 있다.

Claims (10)

  1. 임의의 쓰레드의 상부에 있는 TTY 동작이 다른 모든 쓰레드의 상부에 있는 GUI 동작의 선행(supersedes)하는 다중 동작 쓰레드를 지원하는 컴퓨터(12) 및 메인 프로그램(28)- 상기 메인 프로그램(28)은 제1 쓰레드(48)의 상부에 TTY 제어 동작(46)을 삽입함-을 포함하는 컴퓨터 시스템(40)에서, 커맨드라인(TTY)와 그래픽 사용자 인터페이스(Graphic User Interface, GUI) 제어를 가능하게 하기 위한 프로그램 제어기(44)에 있어서, 상기 제1 쓰레드(48)에 있는 상기 TTY 제어 동작(46)의 상부로 더미 GUI 동작(50)을 삽입하여 상기 메인 프로그램(28)이 정상적으로 제2 쓰레드의 GUI 제어 동작에 의해 제어되도록 하기 위한 셋업 유니트(62), 및 TTY 제어 명령에 응답하여, 상기 메인 프로그램(28)이 상기 TTY 제어 동작(46)에 의해 제어되도록 상기 제1 쓰레드(48)로부터 상기 더미 GUI 동작(50)을 제거하며, 상기 메인 프로그램(28)로 상기 TTY 제어 명령을 공급하고, 상기 메인 프로그램(28)이 상기 제2 쓰레들에 있는 상기 GUI 제어 동작에 의해 후속해서 제어되도록 상기 제1 쓰레드(48)에 있는 상기 TTY 제어 동작(46)의 상부에 상기 더미 GUI 동작(50)을 삽입하기 위한 웨이크-업(Wake-up)유니트(60,64,66)을 포함하는 것을 특징으로 하는 프로그램 제어기(44).
  2. 제1항에 있어서, 상기 메인 프로그램(28)은 Arc/Info것을 특징으로 하는 프로그램 제어기(44).
  3. 제1항에 있어서, 상기 더미 GUI 동작(50)은 더미 윈도우를 가공물(artifact)로서 포함하는 것을 특징으로 하는 프로그램 제어기(44).
  4. 제1항에 있어서, 상기 컴퓨터(12)는 디스플레이용 윈도우를 삽입 및 삭제하기 위한 디스플레이 제어기(18)을 포함하고, 상기 웨이크-업 유니트(60,64,66)은 상기 더미 윈도우를 삭제하는 명령을 상기 디스플레이 제어기로 전달함으로써 상기 제1 쓰레드로부터 상기 더미 GUI 동작(50)을 제거하는 것을 특징으로 하는 프로그램 제어기(44).
  5. 제1항에 있어서, 상기 웨이크-업 유니트(60,64,66)는 상기 더미 GUI 동작(50)을 생성하는 명령을 상기 메인 프로그램(28)로 전달함으로써 상기 제1 쓰레드(48)에 있는 상기 TTY 제어 동작(46)의 상부에 상기 더미 GUI 동작(50)을 삽입하는 것을 특징으로 하는 프로그램 제어기(44).
  6. 제5항에 있어서, 상기 메인 프로그램(28)은 Arc/Info인 것을 특징으로 하는 프로그램 제어기(44).
  7. 제1항에 있어서, 상기 TTY 제어 동작(46)은 상기 메인 프로그램(28)을 위한 표준 입력과 표준 출력을 포함하는 것을 특징으로 하는 프로그램 제어기(44).
  8. 제1항에 있어서, 상기 TTY 제어 명령을 방생시키기 위한 터미널 에뮬레이터(26)을 더 포함하는 것을 특징으로 하는 프로그램 제어기(44).
  9. 제1항에 있어서, 상기 TTY 제어 명령은 보조 프로그램에 의해 발생되는 것을 특징으로 하는 프로그램 제어기(44).
  10. 제9항에 있어서, 상기 메인 프로그램(28)은 그래픽 데이타를 발생시키고, 상기 보조 프로그램은 상기 그래픽 데이타를 갱신하기 위한 상기 TTY 제어 명령을 발생하는 것을 특징으로 하는 프로그램 제어기(44).
KR1019950700281A 1993-05-24 1994-05-20 터미널 에뮬레이터 또는 사용자 프로그램으로부터 그래픽 사용자 인터페이스 제어 및 커맨드 라인 제어를 선택할 수 있도록 해주는 다중 쓰레드를 실행하는 컴퓨터 프로그램용 제어기 KR100196760B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/069052 1993-05-24
US08/069,052 US6131183A (en) 1993-05-24 1993-05-24 Computer and method for enabling graphic user interface (GUI) control and command line (TTY) control of a computer program
US8/069052 1993-05-24
PCT/US1994/005691 WO1994028483A1 (en) 1993-05-24 1994-05-20 Automatic switching between graphic user interface control and command line control

Publications (2)

Publication Number Publication Date
KR950702721A KR950702721A (ko) 1995-07-29
KR100196760B1 true KR100196760B1 (ko) 1999-06-15

Family

ID=22086424

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950700281A KR100196760B1 (ko) 1993-05-24 1994-05-20 터미널 에뮬레이터 또는 사용자 프로그램으로부터 그래픽 사용자 인터페이스 제어 및 커맨드 라인 제어를 선택할 수 있도록 해주는 다중 쓰레드를 실행하는 컴퓨터 프로그램용 제어기

Country Status (8)

Country Link
US (1) US6131183A (ko)
EP (1) EP0651896B1 (ko)
JP (1) JP2904929B2 (ko)
KR (1) KR100196760B1 (ko)
CA (1) CA2138515C (ko)
DE (1) DE69420512T2 (ko)
DK (1) DK0651896T3 (ko)
WO (1) WO1994028483A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496841B1 (en) * 1996-06-26 2002-12-17 Sun Microsystems, Inc. Techniques for identifying and manipulating quoted or reproduced material using a quote bar
US6836780B1 (en) 1999-09-01 2004-12-28 Jacada, Ltd. Method and system for accessing data in legacy applications
US7043534B1 (en) * 2000-03-31 2006-05-09 Lenavo (Singapore) Pte. Ltd. Remote execution of commands in a multi-host network
US20040049655A1 (en) * 2001-10-12 2004-03-11 Allison David S. Method and apparatus for communication to threads of control through streams
US7243334B1 (en) * 2002-01-16 2007-07-10 Prelude Systems, Inc. System and method for generating user interface code
US20030210275A1 (en) * 2002-05-02 2003-11-13 Johann Draschwandtner Extensible command-line description mechanism for activating external tools
CA2433527A1 (en) * 2003-06-26 2004-12-26 Ibm Canada Limited - Ibm Canada Limitee System and method for object-oriented graphically integrated command sh ell
US20050131854A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Dynamic command line user interface
US7546374B2 (en) 2005-08-05 2009-06-09 Global Serv Inc. Methods and arrangements for managing and maintaining a switch environment
US7689704B2 (en) 2005-08-05 2010-03-30 Global Serv Inc. Methods and arrangements for managing automated switching
US20070240062A1 (en) * 2006-04-07 2007-10-11 Christena Jennifer Y Method and System for Restricting User Operations in a Graphical User Inerface Window
US8321840B2 (en) * 2007-12-27 2012-11-27 Intel Corporation Software flow tracking using multiple threads
US10417331B2 (en) * 2016-03-18 2019-09-17 Vmware, Inc. System and method for processing command line interface commands

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899136A (en) * 1986-04-28 1990-02-06 Xerox Corporation Data processor having a user interface display with metaphoric objects
US4873652A (en) * 1987-07-27 1989-10-10 Data General Corporation Method of graphical manipulation in a potentially windowed display
US5214757A (en) * 1990-08-07 1993-05-25 Georesearch, Inc. Interactive automated mapping system
US5375199A (en) * 1991-06-04 1994-12-20 Digital Equipment Corporation System monitoring method and device including a graphical user interface to view and manipulate system information

Also Published As

Publication number Publication date
DE69420512T2 (de) 2000-01-27
CA2138515C (en) 2000-07-18
CA2138515A1 (en) 1994-12-08
EP0651896A1 (en) 1995-05-10
EP0651896B1 (en) 1999-09-08
KR950702721A (ko) 1995-07-29
JP2904929B2 (ja) 1999-06-14
WO1994028483A1 (en) 1994-12-08
US6131183A (en) 2000-10-10
DK0651896T3 (da) 2000-02-28
DE69420512D1 (de) 1999-10-14
JPH07504777A (ja) 1995-05-25

Similar Documents

Publication Publication Date Title
KR100196760B1 (ko) 터미널 에뮬레이터 또는 사용자 프로그램으로부터 그래픽 사용자 인터페이스 제어 및 커맨드 라인 제어를 선택할 수 있도록 해주는 다중 쓰레드를 실행하는 컴퓨터 프로그램용 제어기
US5075675A (en) Method and apparatus for dynamic promotion of background window displays in multi-tasking computer systems
JP3348410B2 (ja) オブジェクトの追加および削除を選択的に行う方法およびシステム
JPH0895821A (ja) マルチタスクのプログラムデバッグ方法とその装置
NZ213918A (en) Display screen review of status of concurrently running programs: keyboard actuation
JPH07219753A (ja) 会話型プログラム開発支援システム
CN100426221C (zh) 图形化资源管理系统及其方法
JPH0635855A (ja) コンピュータシステムにおけるワークステーション制御方式
JPS63205722A (ja) メニユ−制御装置
JPH03137767A (ja) データ編集システム
JPH03192455A (ja) ターミナルエミュレータ
JP2700013B2 (ja) プログラマブルコントローラのためのユーザプログラム用コンパイラ
JPH04332068A (ja) ジョブ制御システム
JPH04373015A (ja) カットアンドペースト処理方式
JPH11242591A (ja) プログラム作成装置、プログラム作成方法および記録媒体
JPH01140301A (ja) シーケンス制御方法
JPH0540588A (ja) ウインドウを用いたユーザインタフエースの方法及びその情報処理装置
JPH1063546A (ja) マルチタスクオペレーティングシステムのキュー表示方法およびデバッグ装置
JPH04115348A (ja) 端末エミュレータのデータ表示処理方式
JPH10283323A (ja) 計算機の表示占有ユーザ切換装置
JPH11154097A (ja) エージェントの動作の変更方法
WO1991004545A1 (fr) Systeme en reseau compose de terminaux possedant une fonction de preparation de documents
JPH07200232A (ja) メッセージ出力の競合制御方法
JPH02132544A (ja) インテリジェント端末の擬似tssコマンド化方式
JPH09114536A (ja) 計算機操作の自動化方法

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
LAPS Lapse due to unpaid annual fee