이하, 본 발명의 실시형태에 관해 도면을 사용하여 상세히 설명한다.
(실시형태 1)
먼저 본 발명에 따른 케이블 TV 시스템의 실시형태 1을 도면을 참조하면서 설명한다. 도 2는 케이블 시스템을 구성하는 장치의 관계를 나타낸 블록도이고, 헤드엔드(101) 및 3개의 단말 장치 A(111), 단말장치 B(112), 단말장치 C(113)로 구성된다. 본 실시형태에서는, 1개의 헤드엔드에 대해 3개의 단말 장치가 결합되어 있으나, 임의의 수의 단말 장치를 헤드엔드에 결합해도, 본 발명은 실시 가능하다.
헤드엔드(101)는, 다수의 단말 장치에 대해 영상·음성·데이터 등의 방송 신호를 송신하는 동시에, 단말 장치로부터의 데이터 송신을 수신한다. 이것을 실현하기 위해, 헤드엔드(101)와 단말 장치 A(111), 단말 장치 B(112), 단말 장치 C(113) 사이의 전송에 사용되는 주파수 대역은, 분할하여 사용된다. 도 3은, 주파수 대역의 분할의 일례를 나타낸 표이다. 주파수 대역은, Out Of Band(약칭 OOB)와 In-Band의 2종류로 크게 나눠진다. 5∼130MHz가 OOB에 할당되고, 주로 헤드엔드(101)와 단말 장치 A(111), 단말 장치 B(112), 단말 장치 C(113) 사이의 데이터의 주고받음에 사용된다. 130MHz∼864MHz는 In-Band에 할당되고, 주로 영상·음성을 포함하는 방송 채널에 사용된다. OOB에서는 QPSK 변조 방식이, In-Band는 QAM64 변조 방식이 사용된다. 변조 방식 기술에 관해서는, 본 발명과 관계가 적은 공지 기술이기 때문에, 상세한 설명은 생략한다. 도 4는 OOB 주파수 대역의 더욱 상세한 사용의 일례이다. 70MHz∼74MHz는 헤드엔드(101)로부터의 데이터 송신에 사용되고, 모든 단말 장치 A(111), 단말 장치 B(112), 단말 장치 C(113)가, 헤드엔드(101)로부터 같은 데이터를 수취하게 된다. 한편, 10.0MHz∼10.1MHz는 단말 장치 A(111)로부터 헤드엔드(101)로의 데이터 송신에 사용되고, 10.1MHz∼10.2MHz는 단말 장치 B(112)로부터 헤드엔드(101)로의 데이터 송신에 사용되고, 10.2MHz∼10.3MHz는 단말 장치 C(113)로부터 헤드엔드(101)로의 데이터 송신에 사용된다. 이에 의해, 각 단말 장치 고유의 데이터를 각 단말 장치 A(111), 단말 장치 B(112), 단말 장치 C(113)로부터 헤드엔드(101)에 송신할 수 있다. 도 5는 In-Band의 주파수대에 대한 사용의 일례이다. 150∼156MHz와 156∼162MHz는 각각 TV 채널 1과 TV 채널 2에 할당되고, 이후, 6MHz 간격으로 TV 채널이 할당되어 있다. 310MHz 이후는, 1MHz 단위로 라디오 채널에 할당되고 있다. 이들 각 채널은 아날로그 방송으로서 사용해도 되고 디지털 방송으로서 사용해도 된다. 디지털 방송의 경우는, MPEG2 사양에 기초한 MPEG2 전송패킷 형식으로 전송되어, 음성이나 영상에 더해, 각종 데이터 방송용 데이터도 송신할 수 있다.
헤드엔드(101)는, 이들 주파수 대역에 적절한 방송 신호를 송신하기 위해서, QPSK 변조부나 QAM 변조부 등을 갖는다. 또, 단말 장치로부터의 데이터를 수신하기 위해서, QPSK 복조기를 갖는다. 또, 헤드엔드(101)는, 이들 변조부 및 복조부에 관련된 다양한 기기를 갖는 것으로 생각된다. 그러나, 본 발명은 주로 단말 장치에 관계하기 때문에, 상세한 설명은 생략한다.
단말 장치 A(111), 단말 장치 B(112), 단말 장치 C(113)는, 헤드엔드(101)로부터의 방송 신호를 수신하여 재생한다. 또, 헤드엔드(101)에 대해, 각 단말 장치 고유의 데이터를 송신한다. 3개의 단말 장치는 본 실시형태에서는 같은 구성을 취한다.
도 6은 단말 장치의 하드웨어 구성을 나타낸 블록도이다. 500은 단말 장치이고, QAM 복조부(501), QPSK 복조부(502), QPSK 변조부(503), TS 디코더(505), 오디오 디코더(506), 스피커(507), 비디오 디코더(508), 디스플레이(509), 2차 기억부(515), 1차 기억부(511), ROM(512), 입력부(513), CPU(514)로 구성된다. 또 단말 장치(500)에는, POD(504)가 착탈 가능하다.
도 7은 단말 장치(500)의 외관의 일례인 박형 TV이다.
601은 박형 TV의 하우징이고, POD(504)를 제외한, 단말 장치(500)의 구성 요 소 전부를 내장하고 있다.
602는 디스플레이이고, 도 6에 있어서의 디스플레이(509)에 상당한다.
603은 다수의 버튼으로 구성되는 프런트 패널부이고, 도 6의 입력부(513)에 상당한다.
604는 신호 입력 단자이고, 헤드엔드(101)와의 신호의 송수신을 행하기 위해 케이블선을 접속한다. 신호 입력 단자는, 도 6의 QAM 복조부(501), QPSK 복조부(502), QPSK 변조부(503)와 접속되어 있다.
605는, 도 6의 POD(504)에 상당하는 POD 카드이다. POD(504)는, 도 7의 POD 카드(605)처럼, 단말 장치(500)와는 독립된 형태를 취하며, 단말 장치(500)에 착탈 가능하게 되어 있다. POD(504)의 상세한 것은 후술한다.
606은 POD 카드(605)를 삽입하는 삽입 슬롯이다.
*도 6을 참조하여, QAM 복조부(501)는, CPU(514)로부터 지정된 주파수를 포함하는 튜닝 정보로, 헤드 엔드(101)에서 QAM 변조되어 송신되어 온 신호를 복조하여, POD(504)에 넘겨준다.
QPSK 복조부(502)는, CPU(514)로부터 지정된 주파수를 포함하는 튜닝 정보로, 헤드엔드(101)에서 QPSK 변조되어 송신되어 온 신호를 복조하여, POD(504)에 넘겨준다.
QPSK 변조부(503)는, CPU(514)로부터 지정된 주파수를 포함하는 복조 정보로, POD(504)로부터 받은 신호를 QPSK 복조하여, 헤드엔드(101)에 송신 한다.
POD(504)는, 도 7과 같이 단말 장치 본체(500)로부터 착탈 가능한 형태를 하고 있다. POD(504)의 일례로는, CableCard(TM)라 불리는 디스크램블 등을 행하는 카드가 있다. 단말 본체(500)와 POD(504)의 접속 인터페이스는, OpenCable(TM) HOST-POD Interface Specification(OC-SP-HOSTPOD-IF-I12-030210) 및, 이 사양서에서 참조되고 있는 사양서에서 정의되어 있다. 여기서는, 상세한 것은 생략하고, 본 발명에 관한 부분만을 해설한다.
도 8은, POD(504)의 내부 구성을 나타낸 블록도이다. POD(504)는, 제1 디스크램블러부(701), 제2 디스크램블러부(702), 스크램블러부(703), 제1 기억부(704), 제2 기억부(705), CPU(706)로 구성된다.
제1 디스크램블러부(701)는, CPU(706)로부터의 지시에 의해, 단말 장치(500)의 QAM 복조부(501)로부터 암호화된 신호를 수취하여, 복호를 행한다. 그리고, 복호된 신호를 단말 장치(500)의 TS 디코더(505)에 보낸다. 디코드에 필요한 키 등의 정보는 CPU(706)로부터 적절하게 주어진다. 구체적으로는, 헤드엔드(101)는 몇개의 유료 채널을 방송하고 있다. 사용자가, 이 유료 채널을 구매하면, 제1 디스크램블러부(701)는, CPU(706)로부터 키 등의 필요한 정보를 수취하여 디스크램블함으로써, 사용자는 유료 채널을 열람할 수 있다. 키 등의 필요한 정보가 주어지지 않은 경우는, 제1 디스크램블러부(701)는, 디스크램블을 행하지 않고, 수취한 신호를 그대로, TS 디코더(505)에 보낸다.
제2 디스크램블러부(702)는, CPU(706)로부터의 지시에 의해, 단말 장치(500)의 QPSK 복조부(502)로부터 암호화된 신호를 수취하여, 복호를 행한다. 그리고, 복호된 데이터를 CPU(706)에 넘겨준다.
스크램블러부(703)는, CPU(706)로부터의 지시에 의해, CPU(706)로부터 수취한 데이터를 암호화하여, 단말 장치(500)의 QPSK 변조부(503)에 보낸다.
제1 기억부(704)는, 구체적으로는 RAM 등의 1차 기억 메모리로 구성되어, CPU(706)가 처리를 행할 때, 일시적으로 데이터를 보존하기 위해 사용된다.
제2 기억부(705)는, 구체적으로는 플래시 ROM 등의 2차 기억 메모리로 구성되어, CPU(706)가 실행하는 프로그램을 저장하고, 또 전원 OFF가 되어도 소거되면 곤란한 데이터의 보존에 사용된다.
CPU(706)는, 제2 기억부(705)가 기억하는 프로그램을 실행한다. 프로그램은 다수의 서브 프로그램으로 구성된다. 도 9는 제2 기억부(705)가 기억하는 프로그램의 일례이다. 도 9에서는, 프로그램(800)은, 메인 프로그램(801), 초기화 서브 프로그램(802), 네트워크 서브 프로그램(803), 재생 서브 프로그램(804), PPV 서브 프로그램(805) 등 다수의 서브 프로그램으로 구성되어 있다.
여기서 PPV란 Pay Per View의 약칭이며, 영화 등 특정한 프로그램을 유료로 시청할 수 있도록 하는 서비스이다. 사용자가 비밀 번호를 입력하면, 구입했다는 것이 헤드엔드(101)에 통지되어, 스크램블이 해제되어 시청할 수 있다. 이 시청에 의해, 사용자는 후일 구입 대금을 지불하는 것이다.
메인 프로그램(801)은, CPU(706)가 전원 투입시에 최초로 기동하는 서브 프로그램이고, 다른 서브 프로그램의 제어를 행한다.
초기화 서브 프로그램(802)은, 전원 투입시에 메인 프로그램(801)에 의해 기 동되어, 단말 장치(500)와의 정보 교환 등을 행하여, 초기화 처리를 행한다. 초기화 처리의 상세한 것은, OpenCable(TM) HOST-POD Interface Specification(OC-SP-HOSTPOD-IF-I12-030210) 및, 이 사양서에서 참조되고 있는 사양서에서 정의되어 있다. 또, 사양서에 정의되어 있지 않은 초기화 처리도 행한다. 여기서는, 그 일부를 소개한다. 전원이 투입되면, 초기화 서브 프로그램(802)은, 제2 기억부(705)가 기억하는 제1 주파수를 단말 장치(500)의 CPU(514)를 통해, QPSK 복조부(502)에 통지한다. QPSK 복조부(502)는, 주어진 제1 주파수로 튜닝을 행하여, 신호를 제2 디스크램블러부(702)에 보낸다. 또, 초기화 서브 프로그램(802)은, 제2 기억부(705)가 기억하는 제1 키 등의 복호 정보를 제2 디스크램블러부(702)에 준다. 그 결과, 제2 디스크램블러부(702)는, 디스크램블을 행하여, 초기화 서브 프로그램(802)을 실행하는 CPU(706)에 넘겨준다. 따라서, 초기화 서브 프로그램(802)은 정보를 수취할 수 있다. 본 실시형태에서는, 초기화 서브 프로그램(802)은 네트워크 서브 프로그램(803)을 통해 정보를 수취하도록 한다. 상세한 것은 후술한다.
또, 초기화 서브 프로그램(802)은, 제2 기억부(705)가 기억하는 제2 주파수를 단말 장치(500)의 CPU(514)를 통해, QPSK 변조부(503)에 통지한다. 초기화 서브 프로그램(802)은 제2 기억부(705)가 기억하는 암호화 정보를 스크램블러부(703)에 준다. 초기화 서브 프로그램(802)이 송신하고자 하는 정보를, 네트워크 서브 프로그램(803)을 통해, 스크램블러부(703)에 주면, 스크램블러부(703)는, 주어진 암호화 정보를 사용하여 데이터를 암호화하여, 단말 장치(500)의 QPSK 변조부(503)에 준다. QPSK 변조부(503)는, 주어진 암호화된 정보를 변조하여, 헤드엔드(101)에 송신한다.
그 결과, 초기화 서브 프로그램(802)은, 단말 장치(500), 제2 디스크램블러부(702), 스크램블러부(703), 네트워크 서브 프로그램(803)을 통해, 헤드엔드(101)와 쌍방향 통신을 행할 수 있다.
네트워크 서브 프로그램(803)은, 메인 프로그램(801), 초기화 서브 프로그램(802) 등의 다수의 서브 프로그램에서 사용되는, 헤드엔드(101)와의 쌍방향 통신을 행하기 위한 서브 프로그램이다. 구체적으로는, 네트워크 서브 프로그램(803)을 사용하는 다른 서브 프로그램에 대해, TCP/IP에 의해, 헤드엔드(101)와 쌍방향 통신을 행하고 있는 것처럼 행동한다. TCP/IP는, 다수의 장치 사이에서 정보 교환을 행하기 위한 프로토콜을 규정한 공지의 기술이고, 상세한 설명은 생략한다. 네트워크 서브 프로그램(803)은, 전원 투입시에 초기화 서브 프로그램(802)으로 기동되면, 미리 제2 기억부(705)가 기억하고 있는 POD(504)를 식별하는 식별자인 MAC 어드레스(Media Access Control address의 약칭)를, 단말 장치(500)를 통해 헤드엔드(101)에 통지하여, IP 어드레스의 취득을 요구한다. 헤드엔드(101)는, 단말 장치(500)를 통해 POD(504)에 IP 어드레스를 통지하고, 네트워크 서브 프로그램(803)은, IP 어드레스를 제1 기억부(704)에 기억한다. 이후, 헤드엔드(101)와 POD(504)는, 이 IP 어드레스를, POD(504)의 식별자로서 사용하여 통신을 행한다.
재생 서브 프로그램(804)은, 제2 기억부(705)가 기억하는 제2 키 등의 복호 정보나, 단말 장치(500)로부터 주어지는 제3 키 등의 복호 정보를 제1 디스크램블러부(701)에 주어, 디스크램블을 가능하게 한다. 또, 네트워크 서브 프로그 램(803)을 통해, 제1 디스크램블러부(701)에 입력되어 있는 신호가, PPV 채널이라는 정보를 수취한다. PPV 채널인 것을 알았을 때는, PPV 서브 프로그램(805)을 기동한다.
PPV 서브 프로그램(805)은, 기동되면, 단말 장치(500)에 프로그램의 구입을 재촉하는 메시지를 표시하여, 사용자의 입력을 수취한다. 구체적으로는, 단말 장치(500)의 CPU(514)에 화면에 표시하고자 하는 정보를 보내면, 단말 장치(500)의 CPU(514) 상에서 동작하는 프로그램이, 단말 장치(500)의 디스플레이(509) 상에 메시지를 표시한다. 사용자는, 단말 장치(500)의 입력부(513)를 통해 비밀 번호를 입력하면, 단말 장치(500)의 CPU(514)가, 그것을 수취하여, POD(504)의 CPU(706) 상에서 동작하는 PPV 서브 프로그램(805)에 통지한다. PPV 서브 프로그램(805)은, 수취한 비밀 번호를 네트워크 서브 프로그램(803)을 통해 헤드엔드(101)에 송신한다. 헤드엔드(101)는, 비밀번호가 맞으면, 복호에 필요한 제4 열쇠 등의 복호화 정보를 네트워크 서브 프로그램(803)을 통해, PPV 서브 프로그램(805)에 통지한다. PPV 서브 프로그램(805)은 수취한 제4 열쇠 등의 복호화 정보를 제1 디스크램블러부(701)에 주고, 제1 디스크램블러부(701)는, 입력되어 있는 신호를 디스크램블한다.
도 6을 참조하여, TS 디코더(505)는, POD(504)로부터 수취한 신호의 필터링을 실시하여, 필요한 데이터를 오디오 디코더(506) 및 비디오 디코더(508), CPU(514)에 넘겨준다. 여기서, POD(504)로부터 오는 신호는 MPEG2 전송 스트림이다. MPEG2 전송 스트림의 상세한 것은 MPEG 규격서 ISO/IEC13818-1에 기재되어 있 고, 본 실시형태에서는 상세한 것은 생략한다. MPEG2 전송 스트림은, 다수의 고정길이 패킷으로 구성되고, 각 패킷에는 패킷 ID가 붙여져 있다. 도 10은 패킷의 구성도이다. 900은 패킷이며, 고정길이의 188바이트로 구성된다. 선두 4바이트가 헤더(901)이고, 패킷의 식별 정보를 저장하고 있고, 나머지 184바이트가 페이로드(902)이고, 송신하고자 하는 정보를 포함하고 있다. 903은 헤더(901)의 내역이다. 선두에서 12비트째∼24비트째까지의 13비트에 패킷 ID가 포함되어 있다. 도 11은 보내져 오는 다수의 패킷의 열을 표현한 모식도이다. 패킷(1001)은, 헤더에 패킷 ID 「1」을 갖고, 페이로드에는 영상 A의 첫번째 정보가 들어가 있다. 패킷(1002)은, 헤더에 패킷 ID 「2」를 갖고, 페이로드에는 음성 A의 첫번째 정보가 들어가 있다. 패킷(1003)은, 헤더에 패킷 ID 「3」을 갖고, 페이로드에는 음성 B의 첫번째 정보가 들어가 있다.
패킷(1004)은, 헤더에 패킷 ID 「1」을 갖고, 페이로드에는 영상 A의 두번째 정보가 들어가 있고, 이것은 패킷(1001)의 후속이다. 마찬가지로 패킷(1005, 1026, 1027)도 다른 패킷의 후속 데이터를 저장하고 있다. 이렇게, 같은 패킷 ID를 가진, 패킷의 페이로드의 내용을 연결하면, 연속한 영상이나 음성을 재현할 수 있다.
도 11을 참조하여, CPU(514)가 패킷 ID 「1」과 출력처로서 「비디오 디코더(508)」를 TS 디코더(505)에 지시하면, TS 디코더(505)는 POD(504)로부터 수취한 MPEG2 전송 스트림으로부터 패킷 ID 「1」의 패킷을 추출하여, 비디오 디코더(508)에 넘겨준다. 도 11에 있어서는, 영상 데이터만을 비디오 디코더(508)에 넘겨주게 된다. 동시에, CPU(514)가 패킷 ID 「2」와 「오디오 디코더(506)」를 TS 디코더(505)에 지시하면, TS 디코더(505)는 POD(504)로부터 수취한 MPEG2 전송 스트림으로부터 패킷 ID 「2」의 패킷을 추출하여, 오디오 디코더(506)에 넘겨준다. 도 11에 있어서는, 음성 데이터만을 비디오 디코더(508)에 넘겨주게 된다.
이 패킷 ID에 따라 필요한 패킷만을 취출하는 처리가, TS 디코더(505)가 행하는 필터링이다. TS 디코더(505)는 CPU(514)로부터 지시된 다수의 필터링을 동시에 실행할 수 있다.
도 6을 참조하여, 오디오 디코더(506)는, TS 디코더(505)로부터 주어진 MPEG2 전송 스트림의 패킷에 담겨진 오디오 데이터를 연결하여, 디지털-아날로그 변환을 행하여 스피커(507)에 출력한다.
스피커(507)는, 오디오 디코더(506)로부터 주어진 신호를 음성 출력한다.
비디오 디코더(508)는, TS 디코더(505)로부터 주어진 MPEG2 전송 스트림의 패킷에 담겨진 비디오 데이터를 연결하여, 디지털-아날로그 변환을 행하여 디스플레이(509)에 출력한다.
디스플레이(509)는, 구체적으로는 브라운관이나 액정 등으로 구성되어, 비디오 디코더(508)로부터 주어진 비디오 신호를 출력하거나, CPU(514)로부터 지시된 메시지를 표시하거나 한다.
2차 기억부(510)는, 구체적으로는, 플래시 메모리나 하드디스크 등으로 구성되어, CPU(514)로부터 지시된 데이터나 프로그램을 보존하거나 삭제하거나 한다. 또, 보존되어 있는 데이터나 프로그램은 CPU(514)에 참조된다. 보존되어 있는 데 이터나 프로그램(13)은, 단말 장치(500)의 전원이 절단된 상태라도 계속해서 보존한다.
1차 기억부(511)는, 구체적으로는 RAM 등으로 구성되어, CPU(514)로부터 지시된 데이터나 프로그램을 일차적으로 보존하거나 삭제하거나 한다. 또, 보존되어 있는 데이터나 프로그램은 CPU(514)에 참조된다. 보존되어 있는 데이터나 프로그램은, 단말 장치(500)의 전원이 절단되었을 때, 말소된다.
ROM(512)은, 다시쓰기 불가능한 메모리 디바이스이고, 구체적으로는 ROM이나 CD-ROM, DVD 등으로 구성된다. ROM(512)은, CPU(514)가 실행하는 프로그램이 저장되어 있다.
입력부(513)는, 구체적으로는, 프런트 패널이나 리모콘으로 구성되어, 사용자로부터의 입력을 접수한다. 도 12는, 프런트 패널로 입력부(513)를 구성한 경우의 일례이다. 1100은 프런트 패널이고, 도 7의 프런트 패널부(603)에 상당한다. 프런트 패널(1100)은 7개의 버튼, 상측 커서 버튼(1101), 하측 커서 버튼(1102), 좌측 커서 버튼(1103), 우측 커서 버튼(1104), OK 버튼(1105), 취소 버튼(1106), EPG 버튼(1107)을 구비하고 있다. 사용자가 버튼을 누르면, 눌러진 버튼의 식별자가 CPU(514)에 통지된다.
CPU(514)는, ROM(512)이 기억하는 프로그램을 실행한다. 실행하는 프로그램의 지시에 따라, QAM 복조부(501), QPSK 복조부(502), QPSK 변조부(503), POD(504), TS 디코더(505), 디스플레이(509), 2차 기억부(510), 1차 기억부(511), ROM(512)을 제어한다.
도 13은, ROM(512)에 기억되어, CPU(514)에 실행되는 프로그램의 구성도의 일례이다.
프로그램(1200)은, 다수의 서브 프로그램으로 구성되며, 구체적으로는 OS(1201), EPG(1202), JavaVM(1203), 서비스 매니저(1204), Java 라이브러리(1205)로 구성된다.
OS(1201)는, 단말 장치(500)의 전원이 투입되면, CPU(514)가 기동하는 서브 프로그램이다. OS(1201)는, 오퍼레이팅 시스템의 약칭이며, Linux 등이 일례이다. OS(1201)는, 다른 서브 프로그램을 평행으로 실행하는 커널(1201a) 및 라이브러리(1201b)로 구성되는 공지의 기술의 총칭이고, 상세한 설명은 생략한다. 본 실시형태에 있어서는, OS(1201)의 커널(1201a)은, EPG(1202)와 JavaVM(1203)을 서브 프로그램으로서 실행한다. 또, 라이브러리(1201b)는, 이들 서브 프로그램에 대해, 단말 장치(500)가 유지하는 구성 요소를 제어하기 위한 다수의 기능을 제공한다.
기능의 일례로서, 튜닝 기능을 소개한다. 튜닝 기능은, 다른 서브 프로그램으로부터 주파수를 포함하는 튜닝 정보를 수취하여, 그것을 QAM 복조부(501)에 넘겨준다. QAM 복조부(501)는 주어진 튜닝 정보에 기초하여 복조 처리를 행하여, 복조한 데이터를 POD(504)에 넘겨줄 수 있다. 그 결과, 다른 서브 프로그램은 라이브러리(1201b)를 통해 QAM 복조기를 제어할 수 있다.
EPG(1202)는, 사용자에게 프로그램 일람을 표시 및, 사용자로부터의 입력을 접수하는 프로그램 표시부(1202a)와, 채널 선국을 행하는 재생부(1102b)로 구성된다. 여기서, EPG는 Electric Program Guide의 약칭이다. EPG(1202)는, 단말 장 치(500)의 전원이 투입되면, 커널(1201a)에 의해 기동된다. 기동된 EPG(1202)의 내부에서는, 프로그램 표시부(1202a)가 단말 장치(500)의 입력부(513)를 통해, 사용자로부터의 입력을 기다린다. 여기서, 입력부(513)가 도 12에서 나타낸 프런트 패널로 구성되어 있는 경우, 사용자가 입력부(513)의 EPG 버튼(1107)을 누르면, EPG 버튼의 식별자가 CPU(514)에 통지된다. CPU(514) 상에서 동작하는 서브 프로그램인 EPG(1202)의 프로그램 표시부(1202a)는, 이 식별자를 수취하여, 프로그램 정보를 디스플레이(509)에 표시한다. 도 14(1) 및 (2)는, 디스플레이(509)에 표시된 프로그램표의 일례이다. 도 14(1)을 참조하여, 디스플레이(509)에는, 격자형상으로 프로그램 정보가 표시되어 있다. 열 1301에는, 시각 정보가 표시되어 있다. 열 1302에는, 채널명「채널 1」과, 열 1301의 시각에 대응하는 시간대에 방영되는 프로그램이 표시되어 있다. 「채널 1」에서는, 9:00∼10:30에 프로그램「뉴스 9」가 방영되고, 10:30∼12:00는「영화 AAA」가 방영되는 것을 나타낸다. 열 1303도 열 1302와 동일하게 채널명「채널 2」와, 열 1301의 시각에 대응하는 시간대에 방영되는 프로그램이 표시되어 있다. 9:00∼11:00에 프로그램 「영화 BBB」가 방영되고, 11:00∼12:00는 「뉴스 11」이 방영된다. 1330은 커서이다. 커서(1330)는, 프런트 패널(1100)의 좌측 커서(1103)와 우측 커서(1104)를 누르면 이동한다. 도 14(1)의 상태에서, 우측 커서(1104)를 누르면, 커서(1330)는 우측으로 이동하여, 도 14(2)처럼 된다. 또, 도 14(2)의 상태에서, 좌측 커서(1103)를 누르면, 커서(1330)는 좌측으로 이동하여, 도 14(1)처럼 된다.
도 14(1)의 상태에서, 프런트 패널(1100)의 OK 버튼(1105)이 눌러지면, 프로 그램 표시부(1202a)는, 「채널 1」의 식별자를 재생부(1102b)에 통지한다. 도 14(2)의 상태에서, 프런트 패널(1100)의 OK 버튼(1105)이 눌러지면, 프로그램 표시부(1202a)는, 「채널 2」의 식별자를 재생부(1102b)에 통지한다.
또, 프로그램 표시부(1202a)는, 표시하는 프로그램 정보를, POD(504)를 통해 헤드엔드(101)로부터 정기적으로, 1차 기억부(511)에 기억시켜 둔다. 일반적으로, 헤드엔드로부터의 프로그램 정보의 취득은 시간이 걸린다. 입력부(513)의 EPG 버튼(1107)이 눌러졌을 때, 1차 기억부(511)에 미리 보존된 프로그램 정보를 표시함으로써, 신속하게 프로그램표를 표시할 수 있다.
재생부(1102b)는, 수취한 채널의 식별자를 사용하여, 채널을 재생한다. 채널의 식별자와 채널의 관계는, 채널 정보로서 2차 기억부(510)에 미리 저장되어 있다. 도 15는 2차 기억부(510)에 저장되어 있는 채널 정보의 일례이다. 채널 정보는 표 형식으로 저장되어 있다. 열 1401은 채널의 식별자이다. 열 1402는 채널명이다. 열 1403은 튜닝 정보이다. 여기서, 튜닝 정보는 주파수나 전송 레이트, 부호화율 등을 포함하여, QAM 복조부(501)에 주는 값이다. 열 1404는 프로그램 넘버이다. 프로그램 넘버란, MPEG2 규격으로 규정되어 있는 PMT를 식별하기 위한 번호이다. PMT에 관해서는, 후술한다. 행 1411∼1414의 각 행은, 각 채널의 식별자, 채널명, 튜닝 정보의 조가 된다. 행 1411은 식별자가「1」, 채널명이「채널 1」, 튜닝 정보에 주파수「312 MHz」, 프로그램 넘버가「101」을 포함하는 조로 되어 있다. 재생부(1102b)는, 채널의 재생을 행하기 위해, 수취한 채널의 식별자를 그대로 서비스 매니저로 넘겨준다.
또, 재생부(1102b)는, 재생중에, 사용자가 프런트 패널(1100)의 상측 커서(1101)와 하측 커서(1102)를 누르면, 입력부(513)로부터 CPU(514)를 통해, 눌러졌다는 통지를 수취하여, 재생하고 있는 채널을 변경한다. 먼저, 재생부(1102b)는, 1차 기억부(511)에 현재 재생중인 채널의 식별자를 기억한다. 도 16(1) (2) 및 (3)은, 1차 기억부(511)에 보존하고 있는 채널의 식별자의 예이다. 도 16(1)에서는 식별자「3」이 기억되어 있고, 도 15를 참조하여, 채널명 「TV 3」의 채널이 재생중이라는 것을 나타낸다. 도 16(1)의 상태에서, 사용자가 커서(1101)를 누르면 재생부(1102b)는, 도 15의 채널 정보를 참조하여, 표중의 앞의 채널인 채널명 「채널 2」의 채널로 재생을 전환하기 위해, 서비스 매니저에 채널명 「채널 2」의 식별자 「2」를 넘겨준다. 동시에, 1차 기억부(511)에 기억되어 있는 채널 식별자「2」로 다시쓴다. 도 16(2)는, 채널 식별자가 다시쓰여진 상태를 나타낸다. 또, 도 16(1)의 상태에서, 사용자가 하측 커서(1102)를 누르면 재생부(1102b)는, 도 15의 채널 정보를 참조하여, 표중의 다음 채널인 채널명 「TV Japan」의 채널로 재생을 전환하기 위해, 서비스 매니저에 채널명 「TV Japan」의 식별자「4」를 넘겨준다. 동시에, 1차 기억부(511)에 기억되어 있는 채널 식별자 「4」로 다시쓴다. 도 16(3)은, 채널 식별자가 다시쓰여진 상태를 나타낸다.
JavaVM(1203)은, Java(TM) 언어로 기술된 프로그램을 순차 해석하여 실행하는 Java 버츄얼 머신이다. Java 언어로 기술된 프로그램은 바이트 코드라 불리는, 하드웨어에 의존하지 않는 중간 코드로 컴파일된다. Java 버츄얼 머신은, 이 바이트 코드를 실행하는 인터프리터이다. 또, 일부의 Java 버츄얼 머신은, 바이트 코드를 CPU(514)가 이해 가능한 실행 형식으로 번역하고 나서, CPU(514)에 넘겨줘서 실행하는 것도 행한다. JavaVM(1203)은, 커널(1201a)에 실행하는 Java 프로그램이 지정되어 기동된다. 본 실시형태에서는, 커널(1201a)은, 실행할 Java 프로그램으로서 서비스 매니저(1204)를 지정한다. Java 언어의 상세한 것은, 서적「Java Language Specification(ISBN 0-201-63451-1)」등의 많은 서적에서 해설되어 있다. 여기서는, 그 상세한 것을 생략한다. 또, JavaVM 자체의 상세한 동작 등은, 「Java Virtual Machine Specification(ISBN 0-201-63451-X)」등의 많은 서적에서 해설되어 있다. 여기서는, 그 상세한 것을 생략한다.
서비스 매니저(1204)는, Java 언어로 쓰여진 Java 프로그램이며, JavaVM(1203)에 의해 순차 실행된다. 서비스 매니저(1204)는, JNI(Java Native Interface)를 통해, Java 언어로 기술되어 있지 않은 다른 서브 프로그램을 호출하거나, 또는 호출되거나 하는 것이 가능하다. JNI에 관해서도, 서적「Java Native Interface」등의 많은 서적에서 해설되어 있다. 여기서는, 그 상세한 것을 생략한다.
서비스 매니저(1204)는, JNI를 통해, 재생부(1102b)로부터 채널의 식별자를 수취한다.
서비스 매니저(1204)는, 처음에 Java 라이브러리(1205) 내에 있는 Tuner(1205c)에, 채널의 식별자를 넘겨줘, 튜닝을 의뢰한다. Tuner(1205c)는, 2차 기억부(510)가 기억하는 채널 정보를 참조하여, 튜닝 정보를 획득한다. 지금, 서비스 매니저(1204)가 채널의 식별자「2」를 Tuner(1205c)에 넘겨주면, Tuner(1205c)는, 도 15의 열 1412를 참조하여, 대응하는 튜닝 정보「156MHz,」를 획득한다. Tuner(1205c)는, OS(1201)의 라이브러리(1201b)를 통해, QAM 복조부(501)에 튜닝 정보를 넘겨준다. QAM 복조부(501)는 주어진 튜닝 정보에 따라서 헤드엔드(101)로부터 송신되어 온 신호를 복조하여, POD(504)에 넘겨준다.
다음에 서비스 매니저(1204)는, Java 라이브러리(1205) 내에 있는 CA(1205d)에 디스크램블을 의뢰한다. CA(1205d)는, OS(1201)의 라이브러리(1201b)를 통해 복호에 필요한 정보를 POD(504)에 준다. POD(504)는, 주어진 정보를 바탕으로, QAM 복조부(501)로부터 주어진 신호를 복호하여 TS 디코더(505)에 넘겨준다.
다음에 서비스 매니저(1204)는, Java 라이브러리(1205) 내에 있는 JMF(1205a)에 채널의 식별자를 주어, 영상·음성의 재생을 의뢰한다.
먼저, 처음에 JMF1205a는, 재생해야 할 영상과 음성을 특정하기 위한 패킷 ID를 PAT, PMT으로부터 취득한다. PAT나 PMT는 MPEG2 규격으로 규정되어 있는, MPEG2 전송 스트림 내의 프로그램 구성을 표현하는 테이블이며, MPEG2 전송 스트림에 포함되는 패킷의 페이로드에 담겨, 음성이나 영상과 함께 송신되는 것이다. 상세한 것은 규격서를 참조하면 된다. 여기서는, 개략적인 것만 설명한다. PAT는, Program Association Table의 약칭이며, 패킷 ID 「0」의 패킷에 저장되어 송신되고 있다. JMF(1205a)는, PAT를 취득하기 위해서, OS(1201)의 라이브러리(1201b)를 통해, TS 디코더(505)에 패킷 ID 「0」과 CPU(514)를 지정한다. TS 디코더(505)가 패킷 ID 「0」으로 필터링을 행하여, CPU(514)에 넘겨줌으로써 JMF(1205a)는, PAT의 패킷을 수집한다. 도 17은, 수집한 PAT 정보의 일례를 모식적으로 나타낸 표이 다. 열 1601은 프로그램 넘버이다. 열 1602는 패킷 ID 이다. 열 1602의 패킷 ID는 PMT를 취득하기 위해 사용된다. 행 1611∼1613은, 채널의 프로그램 넘버에 대응하는 패킷 ID의 조이다. 여기서는, 3개의 채널이 정의되어 있다. 행 1611은 프로그램 넘버「101」과 패킷 ID 「501」의 조가 정의되어 있다. 지금, JMF(1205a)에 주어진 채널의 식별자가 「2」라고 하면, JMF(1205a)는, 도 15의 열 1412를 참조하여, 대응하는 프로그램 넘버「102」를 획득하고, 다음에 도 17의 PAT의 열 1612를 참조하여, 프로그램 넘버「102」에 대응하는 패킷 ID「502」를 획득한다. PMT는, Program Map Table의 약칭이며, PAT에서 규정된 패킷 ID의 패킷에 저장되어 송신되고 있다. JMF(1205a)는, PMT를 취득하기 위해서, OS(1201)의 라이브러리(1201b)를 통해, TS 디코더(505)에 패킷 ID와 CPU(514)를 지정한다. 여기서, 지정하는 패킷 ID는「502」로 한다. TS 디코더(505)가 패킷 ID「502」로 필터링을 행하여, CPU(514)에 넘겨줌으로써 JMF(1205a)는 PMT의 패킷을 수집한다. 도 18은, 수집한 PMT의 정보의 일례를 모식적으로 나타낸 표이다. 열 1701은, 스트림 종별이며, 열 1702는 패킷 ID 이다. 열 1702에서 지정되는 패킷 ID의 패킷에는, 스트림 종별로 지정된 정보가 페이로드에 저장되어 송신되고 있다. 열 1703은 보충 정보이다. 열 1711∼1714은 엘레멘트리 스트림이라 불리는, 패킷 ID와 송신하고 있는 정보 종별의 조이다. 열 1711은, 스트림 종별「음성」과 패킷 ID「5011」의 조이고, 패킷 ID「5011」의 페이로드에는 음성이 저장되어 있는 것을 나타낸다. JMF(1205a)는, PMT로부터 재생하는 영상과 음성의 패킷 ID를 획득한다. 도 18을 참조하여, JMF(1205a)는, 행 1711로부터 음성의 패킷 ID「5011」를, 행 1712로부터 영상의 패킷 ID「5012」를 획득한다.
다음에 JMF(1205a)는, OS(1201)의 라이브러리(1201b)를 통해, 획득한 음성의 패킷 ID와 출력처로서 오디오 디코더(506), 영상의 패킷 ID와 출력처로서 비디오 디코더(508)의 조를, TS 디코더(505)에 준다. TS 디코더(505)는 주어진 패킷 ID와 출력처에 기초하여, 필터링을 행한다. 여기서는 패킷 ID「5011」의 패킷을 오디오 디코더(506)에, 패킷 ID「5012」의 패킷을 비디오 디코더(508)에 넘겨준다. 오디오 디코더(506)는, 주어진 패킷의 디지털-아날로그 변환을 행하여 스피커(507)를 통해 음성을 재생한다. 비디오 디코더(508)는, 주어진 패킷의 디지털-아날로그 변환을 행하여 디스플레이(509)에 영상을 표시한다.
마지막으로 서비스 매니저(1204)는, Java 라이브러리(1205) 내에 있는 AM(1205b)에 채널의 식별자를 주어, 데이터 방송 재생을 의뢰한다. 여기서, 데이터 방송 재생이란, MPEG2 전송 스트림에 포함되는 Java 프로그램을 추출하여, JavaVM(1203)에 실행시키는 것이다. MPEG2 전송 스트림에 Java 프로그램을 담는 방법은, MPEG 규격서 ISO/IEC13818-6에 기술된 DSMCC라는 방식을 사용한다. 여기서는 DSMCC의 상세한 설명은 생략한다. DSMCC 방식은, MPEG2 전송 스트림의 패킷 중에, 컴퓨터에서 사용되고 있는 디렉토리나 파일로 구성되는 파일 시스템을 인코드하는 방법을 규정하고 있다. 또, 실행하는 Java 프로그램의 정보는 AIT라고 불리는 형식이며, MPEG2 전송 스트림의 패킷 중에 담겨 송신되고 있다. AIT는, DVB-MHP 규격(정식으로는, ETSI TS 101 812 DVB-MHP 사양 V1.0.2)의 10장에 정의되어 있는, Application Information Table의 약칭이다.
AM(1205b)는, 먼저 AIT를 획득하기 위해서, JMF(1205a)와 동일하게 PAT, PMT를 취득하여, AIT가 저장되어 있는 패킷의 패킷 ID를 획득한다. 지금, 주어진 채널의 식별자가 「2」이고, 도 17의 PAT, 도 18의 PMT가 송신되어 있으면, JMF(1205a)와 같은 순서로, 도 18의 PMT를 획득한다. AM(1205b)은, PMT로부터 스트림 종별이「데이터」이고 보충 정보로서「AIT」를 갖는 엘레멘트리 스트림으로부터 패킷 ID를 추출한다. 도 18을 참조하여, 행 1713의 엘레멘트리 스트림이 해당하고, 패킷 ID「5013」을 획득한다.
AM(1205b)은, OS(1201)의 라이브러리(1201b)를 통해 TS 디코더(505)에 AIT의 패킷 ID와 출력처 CPU(514)를 준다. TS 디코더(505)는, 주어진 패킷 ID로 필터링을 행하여, CPU(514)에 넘겨준다. 그 결과, AM(1205b)은, AIT의 패킷을 수집할 수 있다. 도 19는, 수집한 AIT의 정보의 일례를 모식적으로 나타낸 표이다. 열 1801은 Java 프로그램의 식별자이다. 열 1802는 Java 프로그램의 제어 정보이다. 제어 정보에는「autostart」「present」「kill」등이 있고, 「autostart」는 즉시 단말 장치(500)가 이 프로그램을 자동적으로 실행하는 것을 의미하며, 「present」는 자동 실행하지 않는 것을 의미하며, 「kill」은 프로그램을 정지하는 것을 의미한다. 열 1803은, DSMCC 방식으로 Java 프로그램을 포함하고 있는 패킷 ID를 추출하기 위한 DSMCC 식별자이다. 열 1804는 Java 프로그램의 프로그램명이다. 열 1811과 1812는, Java 프로그램의 정보의 조이다. 열 1811로 정의되는 Java 프로그램은, 식별자「301」, 제어 정보 「autostart」, DSMCC 식별자「1」, 프로그램명「a/TopXlet」의 조이다. 열 1812로 정의되는 Java 프로그램은, 식별자「302」,제어 정보「present」, DSMCC 식별자「1」, 프로그램명「b/GameXlet」의 조이다. 여기서 2개의 Java 프로그램은 같은 DSMCC 식별자를 가지지만, 이것은 1개의 DSMCC 방식으로 인코드된 파일 시스템 내에 2개의 Java 프로그램이 포함되어 있는 것을 나타낸다. 여기서는, Java 프로그램에 대해 4개의 정보밖에 규정하지 않지만, 실제로는 보다 많은 정보가 정의된다. 상세한 것은 DVB-MHP 규격을 참조하면 된다.
AM(1205b)은, AIT 중에서「autostart」의 Java 프로그램을 찾아내어, 대응하는 DSMCC 식별자 및 Java 프로그램명을 추출한다. 도 19를 참조하여, AM(1205b)은 행 1811의 Java 프로그램을 추출하여, DSMCC 식별자「1」 및 Java 프로그램명「a/TopXlet」을 획득한다.
다음에 AM(1205b)는, AIT로부터 취득한 DSMCC 식별자를 사용하여, Java 프로그램을 DSMCC 방식으로 저장하고 있는 패킷의 패킷 ID를 PMT로부터 획득한다. 구체적으로는, PMT 중에서 스트림 종별이「데이터」이고, 보충 정보의 DSMCC 식별자가 합치하는 엘레멘트리 스트림의 패킷 ID를 취득한다.
지금, DSMCC 식별자가「1」이고, PMT가 도 18이라고 하면, 행 1714의 엘레멘트리 스트림이 합치하여, 패킷 ID「5014」를 취출한다.
AM(1205b)은, OS(1201)의 라이브러리(1201b)를 통해 TS 디코더(505)에 DSMCC 방식으로 데이터가 담겨진 패킷의 패킷 ID와 출력처로서 CPU(514)를 지정한다. 여기서는, 패킷 ID「5014」를 준다. TS 디코더(505), 주어진 패킷 ID로 필터링을 행하여, CPU(514)에 넘겨준다. 그 결과, AM(1205b)은, 필요한 패킷을 수집할 수 있다. AM(1205b)은, 수집한 패킷으로부터, DSMCC 방식에 따라 파일 시스템을 복원하 여, 1차 기억부(511)에 보존한다. MPEG2 전송 스트림 중의 패킷으로부터 파일 시스템 등의 데이터를 취출하여 1차 기억부(511) 등의 기억 수단에 보존하는 것을 이후, 다운로드라고 부른다.
도 20은 다운로드한 파일 시스템의 일례이다. 도면중, ○는 디렉토리를, □는 파일을 나타내고, 1901은 루트 디렉토리, 1902는 디렉토리「a」, 1903은 디렉토리「b」, 1904는 파일「TopXlet. class」, 1905는 파일「GameXlet. c1ass」이다.
다음에 AM(1205b)은, 1차 기억부(511)에 다운로드한 파일 시스템중에서 실행할 Java 프로그램을 JavaVM(1203)에 넘겨준다. 지금, 실행하는 Java 프로그램명이「a/TopXlet」이라고 하면, Java 프로그램명의 마지막에「.class」를 부가한 파일「a/TopXlet. class」가 실행해야 할 파일이 된다. 「/」는 디렉토리나 파일명의 구획이고, 도 20을 참조하여, 파일(1904)이 실행해야 할 Java 프로그램이다. 다음에 AM(1205b)은, 파일(1904)를 JavaVM(1203)에 넘겨준다.
JavaVM(1203)은, 넘겨받은 Java 프로그램을 실행한다.
서비스 매니저(1204)는, 다른 채널의 식별자를 수취하면, Java 라이브러리(1205)에 포함되는 각 라이브러리를 통해 재생하고 있는 영상·음성 및 Java 프로그램의 실행을, 마찬가지로 Java 라이브러리(1205)에 포함되는 각 라이브러리를 통해 정지하고, 새롭게 수취한 채널의 식별자에 기초하여, 영상·음성의 재생 및 Java 프로그램의 실행을 행한다.
Java 라이브러리(1205)는, ROM(512)에 저장되어 있는 다수의 Java 라이브러리의 집합이다. 본 실시형태에서는, 여기서는 Java 라이브러리(1205)는, JMF(1205a), AM(1210b), Tuner(1205c), CA(1205d), POD Lib(1205e) 등을 포함하고 있다.
다음에, 본 발명의 주요 기능인 Java 프로그램의 다운로드·보존 및 실행 기능에 관해 설명한다.
서비스 매니저(1204)는, Java 라이브러리(1205)에 포함되는 POD Lib(1205e)를 통해 헤드엔드(101)와 쌍방향 통신을 행한다. 이 쌍방향 통신은, POD Lib(1205e)는 OS(1201)의 라이브러리(1201b) 및, POD(504)를 통해, QPSK 복조부(502), QPSK 변조부(503)를 사용하여 실현된다.
서비스 매니저(1204)는, 이 통신을 사용하여 헤드엔드(101)로부터, 단말 장치(500)가 2차 기억부(510)에 보존해야 할 Java 프로그램의 정보를 수취한다. 이 정보를 XAIT 정보라고 부른다. XAIT 정보는, 헤드엔드(101)와 POD(504) 사이에서, 임의의 형식으로 송신된다. 어떠한 송신 형식을 채용하더라도, XAIT에 필요로 하는 하는 정보가 포함되어 있으면, 본 발명은 실시 가능하다.
도 21은, 헤드엔드(101)로부터 취득한 XAIT 정보의 일례를 모식적으로 나타낸 표이다. 열 2001은 Java 프로그램의 식별자이다. 열 2002는 Java 프로그램의 제어 정보이다. 제어 정보에는 「autoselect」「present」등이 있고, 「autoselect」는 단말 장치(500)가 전원 투입시에 이 프로그램을 자동적으로 실행하는 것을 의미하며, 「present」는 자동 실행하지 않는 것을 의미한다. 열 2003은, DSMCC 방식으로 Java 프로그램을 포함하고 있는 패킷 ID를 추출하기 위한 DSMCC 식별자이다. 열 2004는 Java 프로그램의 프로그램명이다. 열 2005는, Java 프로그 램의 우선도이다. 열 2011과 2012는, Java 프로그램의 정보의 조이다. 열 2011로 정의되는 Java 프로그램은, 식별자「701」,제어 정보「autoselect」, DSMCC 식별자「1」, 프로그램명「a/PPV1Xlet」의 조이다. 여기서는, Java 프로그램에 대해 5개의 정보밖에 규정하지 않지만, 보다 많은 정보가 정의되어 있어도 본 발명은 실시 가능하다.
서비스 매니저(1204)는, XAIT 정보를 수취하면, AIT 정보로부터 Java 프로그램을 다운로드한 순서와 같은 순서로, MPEG2 전송 스트림으로부터 파일 시스템을 1차 기억부(511)에 보존한다. 그 후, 보존한 파일 시스템을 2차 기억부(510)에 복사한다. 또한, 1차 기억부(511)를 통하지 않고, 직접 2차 기억부(510)에 다운로드하는 것도 실시 가능하다. 다음에, 서비스 매니저(1204)는, XAIT 정보에 다운로드한 파일 시스템의 저장 위치를 대응지어 2차 기억부(510)에 보존한다. 도 22는, 2차 기억부(510)가 XAIT 정보와 다운로드한 파일 시스템이 대응지어져 보존되어 있는 일례를 나타낸다. 도 22 중에서, 도 21과 같은 번호의 요소는 도 21과 같기 때문에, 설명은 생략한다. 열 2101은 대응하는 다운로드한 파일 시스템의 보존 위치를 저장한다. 도면 중, 보존 위치는 화살표로 나타내고 있다. 2110은 다운로드한 파일 시스템이고, 내부에 탑 디렉토리(2111), 디렉토리「a」(2112), 디렉토리「b」(2113), 파일「PPV1Xlet. class」(2114), 파일「PPV2Xlet. class」(2115)를 유지한다.
여기서, XAIT 정보는, Java 프로그램을 보존하고 나서 보존하고 있지만, Java 프로그램을 보존하기 전에 보존하는 것도 실시 가능하다.
단말 장치(500)에 전원 투입 후, OS(1201)가, 서비스 매니저(1204)를 JavaVM(1203)으로 지정하고, JavaVM(1203)이 서비스 매니저(1204)를 기동한 후, 서비스 매니저(1204)는, 처음에 2차 기억부(510)에 보존된 XAIT 정보를 참조한다. 여기서 각 Java 프로그램의 제어 정보를 참조하여 「autoselect」의 프로그램을 JavaVM(1203)에 넘겨주어, 기동한다. 도 22를 참조하여, 행 2011로 정의되는 Java 프로그램「PPV1Xlet」이 기동된다.
여기서, Java 프로그램「PPV1Xlet」는 POD(504)가 내부에 갖는 PPV 서브 프로그램(805)에 대응하여, PPV 대상의 프로그램 정보를 표시하는 프로그램으로 한다. 단말 장치(500)에, Java 프로그램「PPV1Xlet」이 없을 때는, PPV 서브 프로그램(805)이 단말 장치(500)의 CPU(514)에 화면에 표시하고자 하는 정보를 보내면, OS(1201)의 라이브러리(1201b)에 포함되는 문답 표시 프로그램이, 도 23에 도시한 것 같은 프로그램 구입을 재촉하는 메시지를 디스플레이(509)에 표시한다. 2201은 문답 박스이고, 메시지(2202), 4자리수의 비밀 번호를 입력하기 위한 비밀 번호 박스(2203), OK 버튼(2204), 취소 버튼(2205)의 표시 요소를 갖는다. 그러나, 이 표시에서는, 프로그램 내용이 불분명하기 때문에, 사용자는 프로그램 가이드 등의 책을 참조하는 등 하여 프로그램 내용을 확인할 필요가 있어 불편하다.
단말 장치(500)에, Java 프로그램「PPV1Xlet」이 보존되어 기동되면, Java 프로그램「PPV1Xlet」은, Java 라이브러리(1205)의 POD Lib(1205e)에 자신을, POD(504)로부터 참조가능한 Java 프로그램으로서 등록한다. 등록할 때, 자신의 Java 프로그램의 식별자와 동작 종별, 우선도도 동시에 등록한다. POD Lib(1205e) 는 등록된 내용을 2차 기억부(510)에 기억한다. 도 24는, 2차 기억부(510)가, 등록된 POD(504)로부터 참조 가능한 Java 프로그램의 정보를 보존하고 있는 상태의 일례이다. 이 예에서는, 표 형식으로 보존하고 있으며, 열 2301은 Java 프로그램의 식별자, 열 2302는 Java 프로그램의 동작 종별, 열 2303은 Java 프로그램의 우선도, 열 2304는 Java 프로그램의 이름을 기억하고 있다. 여기서, Java 프로그램의 동작 종별은, 도 25와 같이「1」과「2」의 2가지 값이 있고, 값「1」은 등록된 Java 프로그램이, 등록된 다른 Java 프로그램이나, OS(1201)의 라이브러리(1201b)에 포함되는 프로그램과 동시에 실행되는 것이 불가능한 것을 나타낸다. 값「2」는, 등록된 Java 프로그램이, 등록된 다른 Java 프로그램이나, OS(1201)의 라이브러리(1201b)에 포함되는 프로그램과 동시에 실행 가능한 것을 나타낸다. 도 24를 참조하여, 행 2311∼2312는 등록되어 있는 Java 프로그램을 나타낸다. 행 2311은, 식별자「PPV」, 동작 종별「2」, 우선도「200」, Java 프로그램의 이름「PPV1Xlet」의 조로 되어 있다.
POD Lib(1205e)는, 등록된 Java 프로그램의 정보를 POD(504)에 통지하고, POD(504) 내의 서브 프로그램과, 등록된 Java 프로그램 사이에서 데이터의 송수신이 가능해진다. 예를 들면, POD(504) 내의 PPV 서브 프로그램(805)은, 도 24의 행 2311에서 나타낸 등록된 Java 프로그램에, PPV 구입 대상의 프로그램 내용을 보내고, Java 프로그램은, 도 26처럼 디스플레이(509)에 표시를 행할 수 있다. 도 23과 같은 번호의 요소는, 도 23과 같기 때문에 설명을 생략한다. 2501은 등록된 Java 프로그램이 표시하고 있는 프로그램 정보이다. 여기서는, OS(1201)의 라이브 러리(1201b)의 문답 표시 프로그램과 등록된 Java 프로그램이 동시에 실행되고 있다. 이 때, POD(504)로부터는, 등록된 Java 프로그램의 종별을 참조하여 데이터를 보내는 상대의 Java 프로그램을 식별하고 있다.
한편, OS(1201)의 라이브러리(1201b)의 문답 표시 프로그램과 등록된 Java 프로그램은 따로따로 개발되어, 결과적으로, 2201와 2501이 겹쳐져 표시되어 버릴지도 모른다. 이것을 회피하기 위해, OS(1201)의 라이브러리(1201b)의 문답표시 프로그램을 정지하는 것도 가능하다. 구체적으로는, Java 프로그램은, OS(1201)의 라이브러리(1201b)의 문답 표시 프로그램이 행해야 할 비밀 번호 입력 등의 기능도 모두 구비하며, 또한 동작 종별「1」로 등록한다. 도 27은, 이 경우의 등록된 Java 프로그램이 POD(504)의 PPV 서브 프로그램으로부터 지시를 받아 디스플레이(509)에 표시를 행한 일례이다.
여기서, 도 28처럼 2차 기억부(510)가 등록된 Java 프로그램을 보존하고 있는 것으로 한다. 이 예에서는, 2개의 Java 프로그램은 같은 식별자「PPV」를 갖고 있고, 또한 동작 종별은「1」로 공존 불가능하다. 이러한 경우, POD Lib(1205e)은, 우선도가 높은 Java 프로그램만을 동작시킨다. 또는, 양쪽 동작시키지만, POD(504)로부터의 메시지는 우선도가 높은 Java 프로그램에만 배송한다.
도 29·도 30은, POD Lib(1205e)에 Java 프로그램이 등록된 경우의, POD Lib(1205e)의 동작을 정리한 흐름도이다. POD Lib(1205e)는, Java 프로그램의 등록을 접수한다(단계 S2801). 접수한 정보를 2차 기억부(510)에 보존한다(단계 S 2802). 이미 2차 기억부(510)에 등록되어 있는 Java 프로그램과, 접수한 Java 프 로그램의 식별자를 비교하여, 같은 식별자의 Java 프로그램이 다수 있는지 여부를 판정한다(단계 S2803). 같은 식별자의 Java 프로그램이 있는 경우는, 도 30의 단계 S2901로 진행한다. 같은 식별자의 Java 프로그램이 없는 경우, 접수한 Java 프로그램의 동작 종별이 공존 실행 가능한지 여부를 조사한다(단계 S2804). 불가능한 경우, POD(504)로부터, OS(1201)의 라이브러리(1201b)로의 메시지 배송을 정지한다 (단계 S2805). 그 후, 접수한 Java 프로그램으로의 POD(504)로부터의 메시지 배송을 유효로 하고(단계 S2806), 등록 처리를 종료한다. 단계 S2803에서, 같은 식별자의 Java 프로그램이 있는 경우는, 다수의 같은 식별자의 Java 프로그램의 동작 종별이 모두 공존 실행 가능한지 여부를 조사한다(단계 S2901). 공존 실행 불가능한 Java 프로그램이 있는 경우는, 접수한 Java 프로그램의 우선도와, 기존의 Java 프로그램의 우선도를 비교한다(단계 S2902). 접수한 Java 프로그램의 우선도가 가장 높을 때는, POD(504)로부터, 기존의 Java 프로그램으로의 메시지 배송을 정지하고(단계 S2903), POD(504)로부터 접수한 Java 프로그램으로의 메시지 배송을 유효로 한다(단계 S2904). 단계 S2901에서, 전체 Java 프로그램의 동작 종별이 모두 공존 실행 가능한 경우, 단계 S2904로 진행한다. 단계 S2902에서, 접수한 Java 프로그램의 우선도가 최고가 아닌 경우는 기존의 Java 프로그램이 메시지를 계속 받기 때문에, 아무것도 하지 않고 처리를 종료한다.
도 31, 도 32, 도 33은, 본 동작의 흐름도에 기초하여, POD(504)로부터의 메시지의 배송처의 변화를 나타내는 모식도이다. 도 31(1)은, Java 프로그램이 등록되어 있지 않은 상태를 나타내고, POD(504)로부터 모든 메시지가 OS(1201)의 라이 브러리(1201b)에 배송되고 있다. 화살표 3001은, 메시지 배송을 나타낸다. 도 31(1)의 상태에서, Java 프로그램이 등록되면, 등록된 Java 프로그램의 동작 종별이 공존 동작 가능한 경우, 도 29의 흐름도를 참조하여, 단계 S2801, S2802, S2803, S2804, S2806의 처리가 행해져, 도 31(2)의 상태가 된다. 여기서 3011은 등록된 Java 프로그램이고, 화살표 3002는, 신규로 설정된 POD(504)로부터 Java 프로그램(3011)으로의 메시지의 흐름이다. 엄밀하게는, POD(504)와 Java 프로그램의 사이에는, CPU(514)나 POD Lib(1205e)가 개재하고 있다. 등록된 Java 프로그램의 동작 종별이 공존 동작 불가능한 경우, 도 29의 흐름도를 참조하여, 단계 S2801, S2802, S2803, S2804, S2805, S2806의 처리가 행해져, 도 31(3)의 상태가 된다. 화살표 3001로 표시되는 POD(504)로부터 라이브러리(1201b)의 메시지의 흐름을 정지하고, 신규 POD(504)로부터 Java 프로그램(3011)으로의 메시지의 배송이 설정된다.
도 32(1)은, Java 프로그램이 1개 등록되고, POD(504)로부터 모든 메시지가 OS(1201)의 라이브러리(1201b)와 등록되어 있는 Java 프로그램(3111)에 배송되고 있는 상태를 나타낸다. 화살표 3101과 3102는, 메시지 배송을 나타낸다. 도 32(1)의 상태에서, Java 프로그램이 등록되면, 등록된 Java 프로그램의 동작 종별이 공존 동작 가능한 경우, 도 29, 도 30의 흐름도를 참조하여, 단계 S2801, S2802, S2803, S2901, S2904의 처리가 행해져, 도 32(2)의 상태가 된다. 여기서 3112는 등록된 Java 프로그램이고, 화살표 3103은, 신규로 설정된 POD(504)로부터 Java 프로그램(3112)으로의 메시지의 배송을 나타낸다.
도 33(1)은, Java 프로그램이 1개 등록되고, POD(504)로부터 모든 메시지가 등록되어 있는 Java 프로그램(3211)에 배송되고 있는 상태를 나타낸다. Java 프로그램(3211)은, 동작 종별이 공존 실행 불가능하기 때문에, 이러한 상태로 되어 있다. 화살표 3201은, 메시지 배송을 나타낸다. 도 32(1)의 상태에서, Java 프로그램이 등록되면, 등록된 Java 프로그램의 동작 종별이 공존 동작 가능한 경우, 기존의 Java 프로그램(3211)과 등록된 Java 프로그램의 우선도가 비교된다. 등록된 Java 프로그램의 우선도가 높은 경우, 도 29, 도 30의 흐름도를 참조하여, 단계 S2801, S2802, S2803, S2901, S2902, S2903, S2904의 처리가 행해져, 도 32(2)의 상태가 된다. 화살표 3201로 표시되는 POD(504)로부터 Java 프로그램(3211)으로의 메시지의 배송을 정지하고, 신규 POD(504)로부터 Java 프로그램(3212)으로의 메시지의 배송이 설정된다. 기존의 Java 프로그램(3211)의 우선도가 높은 경우, 도 29, 도 30의 흐름도를 참조하여, 단계 S2801, S2802, S2803, S2901, S2902의 처리가 행해져, 도 32(3)의 상태가 된다. 메시지의 배송은 동일하다.
또한, 단계 S2902에서 기존의 Java 프로그램의 최고 우선도와 접수한 Java 프로그램의 우선도가 같은 경우, 제어를 단계 S2903으로 옮겨, 접수한 Java 프로그램이 메시지를 수취할 수 있도록 해도 된다. 이것은, 다수의 Java 프로그램의 우선도가 같은 경우, 임의의 1개를 골라 일고(一考)하는 것을 의미한다.
또는, 다수의 Java 프로그램을 실행하여, 다수의 Java 프로그램에 같은 메시지를 보낸다. 이 경우는, 의도적으로 다수의 Java 프로그램은 같은 우선도와 식별자가 주어져 있고, 서로의 동작을 이해하여, 동시에 동작하더라도 문제가 일어나지 않도록 실장되어 있는 것으로 한다. 도 34는, 다수의 Java 프로그램이 같은 식별자와 우선도를 갖고 있는 경우의 일례이다. 여기서, POD(504)로부터는 프로그램에 내용과, 요금의 정보를 보낸다. 행 3311의 Java 프로그램은 요금 표시와 비밀 번호 입력의 접수를 행하고, 행 3312의 Java 프로그램은 프로그램 내용의 표시만을 행하는 것도 실시 가능하다.
POD Lib(1205e)는, Java 프로그램의 등록을 접수하는 동시에, 삭제도 접수한다. 도 35·도 36은, POD Lib(1205e)가 Java 프로그램의 등록을 삭제하는 경우의, POD Lib(1205e)의 동작을 정리한 흐름도이다. POD Lib(1205e)는, Java 프로그램의 삭제를 접수한다(단계 S3401). 2차 기억부(510)로부터 접수한 Java 프로그램을 삭제한다(단계 S3402). 삭제할 Java 프로그램이 현재, POD(504)로부터 메시지를 수취하고 있는지를 조사하여(단계 S3403), 수취하고 있으면, POD(504)로부터 접수한 Java 프로그램으로의 메시지 배송을 무효로 한다(단계 S3404). 2차 기억부(510)에 동일한 식별자의 Java 프로그램이 있는지 여부를 조사하여(단계 S3405), 없으면 POD(504)로부터 OS(1201)의 라이브러리(1201b)로의 메시지 배송을 유효로 한다(단계 S3406). 단계 S3403에 있어서, 삭제할 Java 프로그램이 POD(504)로부터 메시지를 수취하고 있지 않으면, 처리를 종료한다. 단계 S3405에서, 삭제할 Java 프로그램과 같은 식별자의 Java 프로그램이 있는 경우는, 도 36을 참조하여, 전체 Java 프로그램이 공존 실행가능한지 여부를 조사한다(단계 S3501). 식별자가 같은 공존 가능한 모든 Java 프로그램 및 OS(1201)의 라이브러리(1201b)로의 POD(504)로부터의 메시지 배송을 유효로 한다(단계 S3502). 전체 Java 프로그램이 공존 실행이 아닌 경우, 최고의 우선도를 갖는 Java 프로그램을 추출한다(단계 S3503). 추출한 Java 프로그램으로의 POD(504)로부터의 메시지 배송을 유효로 한다(단계 S3504).
이상과 같이, 본 실시형태에 의하면, 기존의 프로그램을 삭제하지 않고, 일시적으로 다운로드한 프로그램을 대신 실행함으로써, 프로그램의 갱신이 가능해지는 동시에, 기존의 프로그램을 용이하게 되돌리는 것도 가능해진다. 또, 기존의 프로그램과 동시에 실행 가능해지도록 프로그램을 다운로드하여 보존함으로써, 기존의 프로그램에 없는 기능을 추가할 수 있다.
또한, 본 실시형태에 있어서는, POD(504) 내의 PPV 서브 프로그램(805)과 Java 프로그램이 메시지 교환을 행하여, 동작을 행하는 것으로 하고 있으나, PPV에 한정되지 않고, POD(504) 상의 어떠한 서브 프로그램과, 단말 장치(500) 상의 어떠한 Java 프로그램의 사이에서 메시지 교환을 행하여, 동작하는 것에 대해서도 적응 가능하다. 또, Java 프로그램은 Java에서 기술된 부분과, CPU가 직접 실행할 수 있는 바이너리 형식의 부분의 혼합이어도 되고, CPU가 직접 실행할 수 있는 바이너리 형식만으로 구성되어 있어도 실시 가능하다.
본 실시형태에서는, ROM(512)이 보존하는 내용을 2차 기억부(510)가 보존함으로써, ROM(512)을 삭제하는 것도 실시 가능하다. 또, 2차 기억부(510)는, 다수의 서브 2차 기억부로 구성하고, 개개의 서브 2차 기억부가 다른 정보를 보존해도 실시 가능하다. 예를 들면, 1개의 서브 2차 기억부는 튜닝 정보만을 보존하고, 다른 서브 2차 기억부는, OS(1201)의 라이브러리(1201b)를 보존하고, 또 다른 서브 2차 기억부는, 다운로드한 Java 프로그램을 보존하는 등, 상세히 분할하는 것이 가 능하다.
(실시형태 2)
실시형태 1에 있어서는, Java 프로그램이 등록되면, OS(1201)의 라이브러리(1201b)나 2차 기억부(510)에 이미 등록된 Java 프로그램이 POD(504)와의 메시지 통신이 갑자기 정지되어 버린다. 예를 들면, 사용자가 PPV 구입 처리의 도중에, Java 프로그램이 등록되면, 구매 처리가 중단되어, 도중까지 입력한 비밀 번호가 무효로 될 가능성이 있다.
따라서, 본 실시형태에 있어서는, 메시지 통신이 정지되는 OS(1201)의 라이브러리(1201b)나 기존의 Java 프로그램에 대해, 사전에 통지를 행하여, 승낙을 얻은 후 정지하는 것으로 한다. 구체적으로는, 실시형태 1에서의 동작을 나타내는 흐름도인 도 29의 단계 S2805의 라이브러리(1201b)로의 메시지 배송의 정지, 도 30의 단계 S2903의 기존의 Java 프로그램으로의 메시지 배송의 정지를 도 34에 기술된 흐름도로 치환한다.
도 37을 참조하여, POD Lib(1205)는, 메시지 송신이 정지되는 대상, 구체적으로는 Java 프로그램이나 OS(1201)의 라이브러리(1201b)에 대해, 메시지 송신이 정지되는 것을 사전 통지한다(단계 S3601). 정지 통지를 받은 Java 프로그램이나 OS(1201)의 라이브러리(120)는, 필요한 처리를 종료한 후, POD Lib(1205e)에 메시지 송신 정지의 양해를 통지한다(단계 S3602). POD Lib(1205e)는 메시지의 송신을 정지한다(단계 S3603).
또, POD(504) 상의 서브 프로그램도 메시지 통지처가 변경되는 것을 알려줄 필요가 있다. 도 38은, POD Lib(1205e)가 POD(504)에 메시지 통지처가 변경되는 것을 통지하는 동작을 나타낸 흐름도이다.
POD Lib(1205e)는, POD(504)에 대해, 메시지 송신이 정지하는 것을 사전 통지한다(단계 S3701). 정지 통지를 받은 POD(504)는, 필요한 처리를 종료한 후, POD Lib(1205e)에 메시지 송신 정지의 양해를 통지한다(단계 S3702). POD Lib(1205e)는 메시지의 송신을 정지하고(단계 S3703), 새로운 배송처를 설정한다(단계 S3704). POD Lib(1205e)는 마지막으로, 새로운 배송처가 설정됐다는 것을, POD(504)에 통지한다 (단계 S3705).
또, 새롭게 배송처로 설정된 Java 프로그램이나 OS(1201)의 라이브러리(1201 b)도, 설정되었다는 통지를 받아도 된다. Java 프로그램이나 OS(1201)의 라이브러리(1201b)는, POD(504)로부터 메시지를 수취하는 것뿐만 아니라, 메시지를 POD(504)에 보내는 경우도 있기 때문이다. 구체적으로는, PPV에서 사용자가 입력하는 비밀 번호를 POD(504)에 보내는 등을 들 수 있다. 메시지 송신이 유효하게 된 것을 알 수 있으면, 쓸데없이 메시지를 보낼 필요가 없어진다.
(실시형태 3)
실시형태 1에서는, 등록된 Java 프로그램을 2차 기억부(510)에 보존했으나, 1차 기억부(511)에 보존하는 것도 실시 가능하다.
1차 기억부(511)에 보존하는 경우, 전원 OFF시에, 보존된 정보는 모두 없어진다. 그러나, 상술한 바와 같이 XAIT에 기초하여 Java 프로그램을 다운로드하여 실행하면, 실행된 Java 프로그램이 자신을 POD Lib(1205e)에 등록하기 때문에, 복 원 가능하다. 그러나, 이 경우, 전원 투입 후 잠시동안은, OS(1201)의 라이브러리(1201b)가 동작하고 있으므로, 전환이 발생한다. 도 39는, 단말 장치(500)가 전원 투입되고 나서, POD(504)로부터의 메시지 배송이 변경되기까지의 동작을 나타낸 흐름도이다. 단말 장치(500)에 전원이 투입되면(단계 S3801), 단말 장치(500) 및 POD(504)의 프로그램이 기동되어, POD(504)와 라이브러리(1201b) 사이에 메시지 배송이 확립된다 (단계 S3802). AM(1205b)은, XAIT 정보에 기초하여, Java 프로그램을 다운로드하고, JavaVM(1203)은, 이 Java 프로그램을 실행한다(단계 S3803). Java 프로그램이 POD(504)와의 메시지 교환이 필요한 경우는, 자신을 POD Lib(1205e)에 등록한다 (단계 S3804). 도 29, 도 30에서 규정된 흐름도에 기초하여, 메시지 배송이 필요에 따라 변경된다(단계 S3805).
한편, 실시형태 1처럼, 등록된 Java 프로그램을 2차 기억부(510)에 보존하고 있었던 경우는, 전원 투입 후부터, OS(1201)의 라이브러리(1201b) 대신에 등록된 Java 프로그램에 POD(504)로부터의 메시지가 배송된다. 그러나, 상술한 바와 같이 XAIT에 기초하여 Java 프로그램을 다운로드하여 실행하면, 실행된 Java 프로그램이 자신을 POD Lib(1205e)에 등록하므로, 이중 등록이 된다. 이것을 막기 위해서, POD Lib(1205e)는, 이미 등록되어 있는 Java 프로그램의 등록은, 접수하지 않는 것으로 한다. 도 40은, 단말 장치(500)가 전원 투입되고나서, POD(504)로부터의 메시지 배송이 변경되기까지의 동작을 나타낸 흐름도이다. 단말 장치(500)에 전원이 투입되면(단계 S3901), 단말 장치(500) 및 POD(504)의 프로그램이 기동되어, 2차 기억부(510)가 보존된 등록 정보에 기초하여, POD(504)와 Java 프로그램 또는 라이 브러리(1201b) 사이에 메시지 배송이 확립된다 (단계 S3902). AM(1205b)은, XAIT 정보에 기초하여, Java 프로그램을 다운로드하고, JavaVM(1203)은, 이 Java 프로그램을 실행한다(단계 S3903). Java 프로그램이 POD(504)와의 메시지 교환이 필요한 경우는, 자신을 POD Lib(1205e)에 등록한다(단계 S3904). POD Lib(1205e)는, 2차 기억부(510)를 참조하여, 이미 같은 Java 프로그램이 등록되어 있는지 여부를 조사한다(단계 S3905). 보존되어 있지 않으면, 등록 처리가 행해져, 도 29, 도 30에서 규정된 흐름도에 기초하여, 메시지 배송이 필요에 따라 변경된다(단계 S3906).
또한, 실시형태 1, 2, 3을 통해, 이하의 응용이 가능하다.
본 발명은, PC나 휴대전화 등의 정보 기기이면, 적응 가능하다.
또, POD(504)는 착탈 가능한 형태라고 하고 있지만, 내장하고 있어도 실시 가능하다. 또한, 내장한 경우, POD(504)의 CPU(706)를 떼내어, CPU(514)가 CPU(706)의 동작을 행하는 것도 실시 가능하다.
POD Lib(1205e)에 등록되는 Java 프로그램은, 다운로드된 Java 프로그램 뿐만 아니라, 미리 내장되어 있는 Java 프로그램이어도 실시 가능하다. 또, SD 메모리 카드 등의 착탈 가능한 기억 매체를 착탈하면 슬롯부를 부착하여, 거기에서 Java 프로그램을 받아들이는 것도 가능하다. 또, 네트워크에 접속하는 네트워크부를 부착하여, 인터넷으로부터 Java 프로그램을 취출하는 것도 가능하다.
또한, 본 실시형태 1∼3에서는, POD(504) 상의 1개의 서브 프로그램만이, Java 프로그램에 메시지를 배송하고 있지만, 2개 이상의 서브 프로그램 및 Java 프로그램이, 각각 개별적으로 메시지를 배송하는 것도 실시 가능하다. 도 41은, POD(504) 상의 다수의 서브 프로그램 및 다수의 Java 프로그램 사이에서의, 메시지 배송의 일례를 나타낸다. POD(504)에는 서브 프로그램 A(4001), 서브 프로그램 B(4002), 서브 프로그램 C(4003)가 동작하고 있고, 단말 장치(500) 상에서는, Java 프로그램 X(4011), Java 프로그램 Y(4012), Java 프로그램 Z(4013)가 동작하고 있다. 화살표 4021, 4022, 4023, 4024는 설정되어 있는 메시지 배송의 패스를 나타낸다. 서브 프로그램 A(4001)로부터 Java 프로그램 X(4011)로 메시지 배송의 패스(4021)가 설정되어 있고, 서브 프로그램과 Java 프로그램이 1대1로 되어 있다. 한편, 서브 프로그램 B(4002)는, Java 프로그램 Y(4012), Java 프로그램 Z(4013)의 2개의 Java 프로그램에 메시지 배송의 패스를 갖는다. 반대로, Java 프로그램 Z(4013)는, 서브 프로그램 B(4002), 서브 프로그램 C(4003)의 2개의 서브 프로그램으로부터 메시지를 수취한다.
또, 이 도면에서는 서브 프로그램으로부터 Java 프로그램에 메시지가 배송되고 있으나, Java 프로그램으로부터 서브 프로그램으로 메시지를 배송하는 것도 실시가능하다. 또, 쌍방향으로 메시지를 교환하는 것도 가능하다.
여기서, 메시지 배송의 패스에, 메시지 패스 ID를 할당하여, 서브 프로그램 및 Java 프로그램은, 메시지 패스 ID를 사용하여, 메시지의 송신 상대를 특정해도 된다. 또, Java 프로그램을 등록할 때, 동시에 등록하는 Java 프로그램의 식별자 대신에, 이 메시지 패스 ID를 사용해도, 본 발명은 실시 가능하다. 경합하는 Java 프로그램과 POD(504) 상의 서브 프로그램의 메시지 패스에 대해, 동작 종별 등에 기초하여 메시지 배송을 행하는 Java 프로그램을 특정할 수 있다. 또는, POD(504) 상의 서브 프로그램을 식별하기 위한 서브 프로그램 식별자를 정의하여, Java 프로그램을 등록할 때, 동시에 등록하는 Java 프로그램의 식별자 대신에, 이 서브 프로그램 식별자를 사용해도, 본 발명은 실시 가능하다.
또, 메시지를 배송하는 Java 프로그램을, 동작 종별을 사용하여 결정했으나, 동작 종별을 사용하지 않고, 마지막으로 등록된 Java 프로그램을 우선하거나, 또는 먼저 등록된 Java 프로그램을 우선하는 등, 미리 준비된 규칙에 따라서 결정해도 된다.
본 실시형태 1∼3에 있어서, POD Lib(1205e)에 등록되는 Java 프로그램의 동작이란, 메시지의 배송을 받아 행하는 동작을 의미하고 있다. 즉, Java 프로그램은, 메시지의 배송을 받음으로써 동작한다. 한편, Java 프로그램은, 일반적으로 다수의 처리를 평행으로 행하는 것이 가능하다. 본 발명에서는, 메시지의 배송을 받음으로써 동작하는 처리 이외의 Java 프로그램이 갖는 그 밖의 처리에 대해, 일체 제한하지 않고 실시 가능하다.
또, 상술한 실시형태에서 설명한 바와 같이 POD Lib(1205e)는 메시지 배송의 대상이 되는 Java 프로그램에 대한 메시지 배송의 등록과 함께 삭제(즉 비등록으로 하는 것)도 접수하도록 하고 있다.
도 42는 POD Lib(1205e)에 Java 프로그램이 등록되는 경우에 있어서의 POD Lib(1205e)의 동작을 정리한 흐름도이다.
POD Lib(1205e)는, Java 프로그램과의 메시지의 배송(송신/수신의 적어도 한쪽을 또는 양쪽을 포함한다)의 등록을 접수하면, 2차 기억부(510)로 필요한 정보 (예를 들면 도 28에 나타낸 것 같은 정보)를 보존하고(단계 SX101), 단계 SX101에서 등록을 접수한 Java 프로그램의 식별자와, 이미 2차 기억부(510)에 등록되어 있는 다른 Java 프로그램의 식별자를 비교함으로써, 등록을 접수한 Java 프로그램의 식별자와 같은 식별자의 Java 프로그램이 2차 기억부(510)에 있는지 여부를 판정한다(단계 SX102).
그 결과, 같은 식별자의 Java 프로그램이 2차 기억부(510)에 있는 경우(즉 단계 SX101에서 등록을 접수한 Java 프로그램과 같은 식별자를 갖는 다른 Java 프로그램에 대해 메시지의 배송을 접수하는 등록이 단계 SX101의 시점보다도 전에 POD Lib(1205e)에 의해 이루어져 있는 경우)는(단계 SX102에서 Yes), POD Lib(1205e)는, 메시지 송신이 정지되는 대상, 구체적으로는 2차 기억부(510)에 등록되어 있는 다른 Java 프로그램(즉, 단계 SX101에서 메시지 배송의 등록을 접수한 Java 프로그램과 같은 식별자를 갖고, 메시지 배송을 접수하는 등록이 이루어진 다른 Java 프로그램)이나 OS(1201)의 라이브러리(1201b)에 대해, 메시지 송신이 정지하는 것을 사전 통지한다(단계 SX103). 정지 통지를 받은 Java 프로그램이나 OS(1201)의 라이브러리(1201b)는, 필요한 처리(POD(504)로부터의 메시지 배송의 정지(즉 메시지 배송의 등록을 비등록으로 하는 것) 전에 종료해야 할 필요한 내부처리)를 종료한 후, POD Lib(1205e)에 메시지 송신 정지의 양해를 통지한다(단계 S X104). 그 양해 통지를 받은 POD Lib(1205e)는, POD(504)로부터 기존의(2차 기억부(510)에 이미 등록되어 있고, POD(504)로부터의 메시지 배송 정지의 대상으로 되어 있는) Java 프로그램 또는 OS(1201)의 라이브러리(1201b)와의 메시지 배송의 등 록을 삭제(즉 비등록)하여, Java 프로그램으로의 메시지 배송을 정지한다(단계 SX105). 그리고, 단계 SX101에서 등록을 접수한 Java 프로그램에 대해 메시지 배송을 개시한다는 취지의 통지를 행한 뒤에(단계 SX106), 단계 SX101에서 등록을 접수한 Java 프로그램으로의 POD(504)로부터의 메시지 배송을 접수하는 등록을 행함으로써, 메시지의 배송을 유효하게 한다(단계 SX107).
한편, 같은 식별자의 Java 프로그램이 2차 기억부(510)에 없는 경우는(단계 SX102에서 No), POD Lib(1205e)는, 단계 SX101에서 등록을 접수한 Java 프로그램에 대해 메시지 배송을 개시한다는 취지를 통지한 후에(단계 SX106), 단계 SX101에서 등록을 접수한 Java 프로그램으로의 POD(504)로부터의 메시지 배송을 접수하는 등록을 행함으로써, 메시지의 배송을 유효하게 한다(단계 SX107).
도 43은, POD Lib1(205e)가 Java 프로그램의 등록을 삭제하는 (즉 2차 기억부(510)에 등록한 Java 프로그램과의 메시지 배송의 등록을 비등록으로 하는) 경우의 POD Lib(1205e)의 동작을 정리한 흐름도이다.
POD Lib(1205e)는, Java 프로그램의 삭제를 접수하면(단계 SX201), 삭제의 대상이 되는 Java 프로그램에 대해, 메시지의 배송이 정지하는 것을 사전 통지한다 (단계 SX202). 정지 통지를 받은 Java 프로그램은, 필요한 처리(POD(504)로부터의 메시지 배송의 정지(즉 메시지 배송의 등록을 비등록으로 하는 것) 전에 종료해야 할 필요한 내부 처리)를 종료한 후, POD Lib(1205e)에 메시지 배송 정지의 양해를 통지한다(단계 SX203). 그 양해 통지를 받은 POD Lib(1205e)는, 2차 기억부(510)에 등록된 Java 프로그램 중 요구된 삭제의 대상으로 되어 있는 Java 프로그램으로 의 메시지 배송의 등록을 삭제함(즉 비등록으로 함)으로써, POD(504)로부터 대상이 되는 Java 프로그램으로의 메시지 배송을 정지한다(단계 SX204). 그리고, POD Lib(1205e)는, OS(1201)의 라이브러리(1201b)에 대해 POD(504)와의 메시지의 배송을 접수하는 등록을 행함으로써 OS(1201)의 라이브러리(1201b)와의 메시지의 배송을 유효하게 한다(단계 SX205).
또, 단계 SX205에서 2차 기억부(510)에 등록되어 있는 다른 Java 프로그램 또는 새롭게 등록된 Java 프로그램이 있고 이들 Java 프로그램 중 어느 1개와의 메시지의 배송을 행하고자 하는(또는 행할 수 있는) 경우에는, POD(504)와 대상이 되는 Java 프로그램과의 메시지의 배송을 접수하는 등록을 행함으로써 대상이 되는 Java 프로그램과의 메시지의 배송을 유효하게 하도록 해도 된다. 또한, POD(504)와의 메시지의 배송에 있어서 배송의 대상이 되는 Java 프로그램과 OS(1201)의 라이브러리(1201b)가 서로 공존할 수 있으면(즉 서로 경합하지 않으면) OS(1201)의 라이브러리(1201b)와의 메시지의 배송을 접수하는 등록을 행하여, 대상이 되는 Java 프로그램과 OS(1201)의 라이브러리(1201b)에 메시지를 배송하도록 해도 된다.