KR20030015218A - 광대역 단말 플랫폼 펌웨어용의 운영체제 추상화 인터페이스 - Google Patents

광대역 단말 플랫폼 펌웨어용의 운영체제 추상화 인터페이스 Download PDF

Info

Publication number
KR20030015218A
KR20030015218A KR1020027012736A KR20027012736A KR20030015218A KR 20030015218 A KR20030015218 A KR 20030015218A KR 1020027012736 A KR1020027012736 A KR 1020027012736A KR 20027012736 A KR20027012736 A KR 20027012736A KR 20030015218 A KR20030015218 A KR 20030015218A
Authority
KR
South Korea
Prior art keywords
operating system
thread
terminal
interface
function
Prior art date
Application number
KR1020027012736A
Other languages
English (en)
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
Priority claimed from US09/535,899 external-priority patent/US6721949B1/en
Application filed by 제너럴 인스트루먼트 코포레이션 filed Critical 제너럴 인스트루먼트 코포레이션
Publication of KR20030015218A publication Critical patent/KR20030015218A/ko

Links

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Communication Control (AREA)

Abstract

셋톱 텔레비전 단말용의 운영체제 추상화 인터페이스를 제공하기 위한 방법 및 장치는 광대역 환경 내에서 사용된다. 이 인터페이스는 OS 독립의 방법으로 셋톱 펌웨어(104)를 실현하는데 필요한 서비스를 추상화하는 OS 독립층(102)을 정의한다. 본 발명은 광대역 환경에만 있는 몇 가지 구성을 제공한다. 이들은 동기화 특징(106), 클록 특징(108) 및 본 발명의 인터페이스가 프로세스 기반 운영체제 및 비프로세스 기반 운영체제의 양쪽에 적합하도록 제공되는 프로세스간 명명 태그를 포함한다.

Description

광대역 단말 플랫폼 펌웨어용의 운영체제 추상화 인터페이스 {OPERATING SYSTEM ABSTRACTION INTERFACE FOR BROADBAND TERMINAL PLATFORM FIRMWARE}
디지털 셋톱 단말의 최근의 출현은 케이블/위성 텔레비전 네트워크 등의 가입자 텔레비전 네트워크의 성장을 촉진시키고 있다. 이러한 단말은 향상된 레벨의 프로그래밍 서비스, 및 전자 프로그램 안내, 주식이나 날씨 배너, 쇼핑 및 홈뱅킹 서비스, 게임 등의 각종의 소프트웨어 기반 응용/기능을 제공할 수 있다. 게다가, 이 경향은 전화, 텔레비전 및 컴퓨터 네트워크의 통합, 및 가정내의 컴퓨터 네트워크의 증가와 더불어 계속되리라고 기대되고 있다. 그 이름에도 불구하고, 디코더로서 알려진 "셋톱(set-top)이나 광대역 단말(broadband terminal)"도 또한 텔레비전 근방의 어디든지 놓일 수 있거나, 혹은 텔레비전에 짜 넣어진 그 기능을 가질수 있다.
통상적으로, 이것은 광대역 단말에서 실행될 수 있는 각기 다른 운영체제(operating system: OS) 플랫폼을 위해 실현되는 다른 펌웨어에 대해 전형적이다. 이것은, 플랫폼 소프트웨어가 그것이 실행되는 OS의 타입마다 변화되어야(즉, 리컴파일(recompile) 또는 포트화되어야) 할 필요가 있기 때문에, 종래의 시스템에서의 문제이다. 이것은, 광대역 단말 플랫폼 소프트웨어가 모든 OS 환경에 걸쳐서 동일한 것이 바람직하기 때문에, 기능적으로 다른 버전의 등가 코드를 유지할 필요성을 불편하게 발생시킨다. 주의해야 할 것은, 광대역 플랫폼 소프트웨어가 모든 하드웨어 장치를 제어하고, 또 다운스트림 또는 업스트림 메시징 및 디지털 텔레비전 서비스를 처리하기 위해 사용되는 관련 통신 프로토콜 전부를 지원한다는 점이다.
그렇지만, 각각의 환경이 전략적으로 다른 소프트웨어 특징 제공을 초래하기 때문에, 다른 운영체제 환경에 대한 필요성이 있다. 케이블 "MSO(multiple system operator: 다중 시스템 오퍼레이터)"는 그들의 소비자 기초로 다른 특징 집합(feature set)을 제공하기를 원할 것이다. 예컨대, 마이크로소프트 운영체제 환경은 더 높은 PC같은 소프트웨어 환경을 초래하는데 반해, 라이브레이트(Liberate) OS 환경은 그렇지 않다. 상술한 것에 부가하여, 단말에서의 빈번한 운영체제 변화는 향상, 비용절감(즉, 새로운 CPU), 새로운 구성요소(즉, 새로운 메모리 구성) 및 제2의 소스 제작자의 결과일 것이다. 이것은, 그것이 혼동을 일으키고, 플랫폼 소프트웨어를 유지하기 위해 거대한 양의 작업을 필요로 하기 때문에, 문제이다. 이것은, 차례로 소프트웨어/펌웨어가 개발되어 단말로 다운로드되어야 한다는 것을 의미한다. 이에 따라, MSO를 위한 부가적인 지출에 이르게 된다. 펌웨어에 대한 개발주기는, 그들이 수천수만의 단말에서 구획된 집단(fielded population)을 유지해야 하기 때문에, MSO에 대해 길고 비용이 많이 들 수 있다.
종래의 시스템의 다른 문제는, 광대역 환경 내에서 사용되는 전략상 중요한 OS 기능을 추가하기 어렵다는 점이다. 특히, 종래의 운영체제는 광대역 환경에 있어서 필수적인 많은 필요한 구성에 플랫폼 소프트웨어를 적절하게 제공하지 못한다.
따라서, 텔레비전 네트워크 오퍼레이터가 보통의 일반적인(예컨대, 운영체제 독립(operating system independent)) 펌웨어의 집합과 양립할 수 있는 다른 셋톱 운영체제를 사용하도록 허가하는 것이 바람직하다. 이 생생한 코어 코드를 그대로 두는 것은, 수백만의 가구에 존재할지도 모를 코드에 매우 중요한 특징인 더 안정한 코드를 의미한다. 또, 모든 운영체제가 광대역 환경 내에서 일반적인 집합의 기능을 지원하도록 플랫폼 소프트웨어에 필요한 구성을 이용할 수 있게 만드는 것이 바람직하다.
상술한 점에서 보아, 본 발명은 종래 기술의 한계를 극복하고, 이 기술분야에서 통상의 지식을 가진 자에게 명백하게 되는 후술하는 바와 같은 이점을 갖는 시스템을 제공한다.
본 발명은 케이블이나 위성 텔레비전 네트워크에서 사용되는 것과 같은 광대역 단말/사용자 장치에서의 플랫폼 펌웨어 및 소프트웨어용의 인터페이스에 관한 것이다. 특히, 본 발명은 플랫폼 펌웨어 및 소프트웨어가 다중(multiple)의 비슷하지 않은 운영체제 위에서 기동하도록 더 높은 레벨의 플랫폼 소프트웨어로부터 운영체제 핵심(kernel)을 추상화하기 위한 방법 및 장치를 제공한다. 또한, 본 발명은 광대역 단말 플랫폼 펌웨어에 의해 사용되는 구성도 제공한다.
도 1은 본 발명에 따라 셋톱 단말의 각종 입력 포트와 셋톱 플랫폼 소프트웨어에 의해 지원되는 프로토콜의 블록도,
도 2는 본 발명에 따라 OS 종속레벨로부터 OS 독립레벨의 추상화를 달성하는 고레벨 클래스 전송구조를 나타낸 클래스도,
도 3은 본 발명에 따른 클래스 "Thread", "Synchronizer", "SyncThread", "MessageQueue" 및 "MultiOrEvent"에 대한 클래스도,
도 4는 본 발명에 따라 시간 서비스를 제공하는 클래스 "Clock" 및 "ATime"에 대한 클래스도,
도 5는 본 발명에 따른 동기화 프리미티브(synchronization primitive)인 클래스 "Mutex"에 대한 클래스도,
도 6은 본 발명에 따른 클래스 "Timer", "Event" 및 "MultiOrEvent"에 대한 클래스도,
도 7은 본 발명에 따른 태스크간 또는 태스크내 정보를 나타내는 클래스 "Message"에 대한 클래스도 및 본 발명에 따라 대기열이 거의 충만하게 되는 것을 나타내는 클래스 "ThrottlingMessageQueue"에 대한 클래스도이다.
본 발명의 한 국면(局面)에 따르면, 플랫폼 소프트웨어와 광대역 환경 내에서 작용하는 광대역 단말에서 실행하는 특별한 운영체제간의 통신을 가능하게 하기 위한 방법이 제공된다. 이 방법은, 플랫폼 소프트웨어와 운영체제 사이에 운영체제 종속층 및 운영체제 독립층을 갖춘 운영체제 추상화 인터페이스를 제공하는 단계와, 운영체제 추상화 인터페이스 내에 스레드(thread)를 동기화하기 위한 구성을 제공하고, 타이밍을 조정하며, 프로세스간 명명(Inter-Process naming)을 제공하는 단계를 구비하고 있다. 운영체제 추상화 인터페이스는, 비슷하지 않은 운영체제에 걸쳐서 일관된 기능을 유지하는 동안에, 플랫폼 소프트웨어가 비슷하지 않은 운영체제에서 실행되는 것을 가능하게 한다.
본 발명의 특징에 따르면, 운영체제 추상화 인터페이스는 플랫폼 소프트웨어의 다른 기능을 위한 제어 스레드를 생성 및 개시하기 위한 스레드 기능(thread function)과, 스레드의 초기화 및 동기화를 제공하기 위한 동기화 기능(synchronizer function)을 포함해도 좋다. 스레드 기능은 스레드의 다른 하나에 관하여 적어도 스레드의 특별한 하나의 우선순위가 바뀌도록 하고, 일시 정지된 상태에서 특별한 스레드를 개시함으로써 적어도 스레드의 특별한 하나의 실행이 일시 정지되도록 하며, 특별한 스레드의 실행이 그 후에 재개되도록 하고 있다. 동기화 기능은 동기화와 더불어 등록되어 있는 모든 스레드가 동기화 점에 도착할 때까지 적어도 스레드의 특별한 하나가 실행을 잠시 멈추도록 하고 있다.
다른 특징에 따르면, 운영체제 추상화 인터페이스는 특별한 스레드와 관련된 제1의 태스크(task: 작업)가 초기에 더 낮은 우선순위를 갖고, 스레드의 다른 하나와 관련된 제2의 더 높은 우선순위를 갖는 태스크가 대기하고 있는 리소스(resource: 자원)를 소유할 때, 제1의 태스크가 리소스를 해제할 때까지 제1의 태스크의 우선순위를 더 높은 우선순위로 일시적으로 상승시키도록 적어도 스레드의 특별한 하나의 우선순위를 반전시키기 위한 뮤텍스 기능(mutex function)을 포함해도 좋다.
다른 특징에 따르면, 운영체제 추상화 인터페이스는 시간 구간이 지나갔음을 스레드에 통지하기 위한 타이머 기능을 포함해도 좋다.
더욱 다른 특징에 따르면, 운영체제 추상화 인터페이스는 객체가 태스크간(inter-task) 또는 태스크내(intra-task) 정보를 운반하도록 허가하기 위한 메시지 기능을 포함해도 좋다.
본 발명의 다른 특징에 따르면, 플랫폼 소프트웨어는 단말용의 펌웨어로 이루어진다.
본 발명의 다른 국면에 따르면, 다운스트림 데이터를 수신하는 복수의 입력포트와, 플랫폼 소프트웨어와 그 단말에서 실행하는 운영체제간에 운영체제 추상화 인터페이스를 포함하고, 그 위에 상주하는 실행가능한 컴퓨터 프로그램 코드를 갖는 컴퓨터 판독가능한 매체 및, 컴퓨터 프로그램 코드를 실행하기 위한 프로세서를 포함하고 있는 광대역 환경 내에서 사용하기 위한 단말이 제공된다.
운영체제 추상화 인터페이스의 일부는 운영체제와 독립하고 있고, 또 운영체제 추상화 인터페이스는 스레드를 동기화하고 타이밍을 조정하며 프로세스간 명명을 제공하기 위한 구성을 제공해도 좋다. 더욱이 운영체제 추상화 인터페이스는,비슷하지 않은 운영체제에 걸쳐서 일관된 기능을 유지하는 동안에, 플랫폼 소프트웨어가 비슷하지 않은 운영체제에서 실행되는 것을 가능하게 한다.
본 발명은 플랫폼 펌웨어가 다른 운영체제와 양립할 수 있게 하고, 광대역환경에 있어서 요구되는 필요한 OS 구성을 제공하기 위해 광대역 단말의 계층구조에 있어서 추상화층(abstraction layer)을 제공하기 위한 방법 및 장치에 관한 것이다.
도 1을 주목하면, 본 발명이 실현될 수 있는 전형적인 광대역 단말(30)이 나타내어져 있다. 그러한 단말(30)의 하나의 예로서는, 미국 펜실베이니아 호샴의 모토롤라 인코포레이티드에 의해 제조된 DCT5000이 있다. 광대역 단말(30)은 메시지가 수신되는 많은 입력 단말을 갖추고 있다. 도 1에서 볼 수 있는 바와 같이, 이들 메시지는 대역 내 또는 대역 외의 패킷 프로세서 포트(14), 이더넷 포트(Ethernet port; 10), DOCSIS 케리블 모뎀 포트(20), USB 포트(18), 병렬포트(12), VBI(Vertical Blanking Interval: 수직 소거 구간) 포트(22), 전화모뎀 포트(24), 직렬포트(26), 또는 IEEE 1394 (펌웨어) 포트(16) 등의 각종 다른 통신경로를 통해 광대역 단말(30)로 통신된다. 또한, 도 1은 광대역 단말(30)내의 플랫폼 소프트웨어(28)가 이 데이터를 수신하기 위해 통신 프로토콜의 구분을 위한 지원을 제공한다는 것도 나타내고 있다. 지원되는 프로토콜의 예로서는, DigiCipher II(DCII) 및 MPEG(Motion Picture Experts Group: 동화상 전문가 그룹) II, DOCSIS1.1(Data Over Cable System Interface Specification), 이더넷, SLIP, USB, NABITZ, IEEE 1394 및 각종 전화기 모뎀 프로토콜이 있다.
셋톱의 능력은, 그것이 이더넷 포트(10), 병렬포트(12) 또는 USB 포트(18)를 통해 PC로 인터페이스할 수 있기 때문에, 전형적인 디지털 텔레비전 서비스 이상으로 확대되고 있다. 또한 이것은, 광대역 단말(30)에서 실행될 수 있는 각종의 새로운 응용을 가능하게 하리라고 기대되고 있는, 예컨대 IEEE 1394 포트(16)를 통해 비디오 카메라 등의 홈네트워킹 장비(home-networking equipment)로 인터페이스할 수도 있다.
이제 도 2를 주목하면, 본 발명의 OS 인터페이스가 나타내어져 있다. 이 OS 인터페이스는 기능이 그들의 추상화 레벨에 따라 분리되는 계층구조를 갖는다. OS 인터페이스에 있어서 가장 낮은 추상화 레벨은 핵심 지정(kernel specific; OS 독립)층이고, 가장 높은 추상화 레벨은 전형적으로 클라이언트 응용이 지정 하드웨어 또는 OS 환경과 관계없이 작용하는 펌웨어층(104)이다. 이 펌웨어층(104)은 광대역 환경에서 실행되는 응용을 위해 필요한 모든 기능을 제공할 만큼 융통성을 가지고 있는 것이 바람직하다.
본 발명에 따라, 각 클래스의 OS 종속층(dependent layer; 100)은 OS에 의해 제공되는 실제의 핵심 호출을 이용하여 특별한 OS에 적당한 방법으로 OS 독립층(independent layer; 102)을 실현한다. 특별한 OS에 대한 소프트웨어 객체의 컴파일(compilation)은 OS 종속 객체가 사용되는 것을 결정할 것이다. 바꾸어 말하면, 코드가 컴파일될 때, 지정한 OS에 적당한 라이브러리, 예컨대 WinCE, VRTX 등이 선택된다. 게다가, 핵심 인터페이스용의 소프트웨어는 파라미터 및 리턴값이 일반적이고 어느 하나의 OS와 관계없도록 기록되는 것이 바람직하다.
이 인터페이스는, 그것이 OS 종속층(100)으로부터 OS 독립층(102)을 추상화하기에 용이한 방법을 제공하기 때문에, 객체지향 클래스(object-oriented class)를 이용하여 지정되는 것이 바람직하다. 하부 층(OS 종속층; 100)이 상부 층(OS독립층; 102)에서 열거된 OS 기능을 수행해야 하기 때문에, OS 종속층(100)은 OS 독립층(102)으로부터 계승된다. 따라서, 인터페이스는 자바 또는 C++ 프로그래밍 언어를 포함한 객체지향 프로그래밍 및 분석기술을 이용하여 실현되는 것이 바람직하다. 더욱이, 인터페이스는 윈도우즈 CE, VRSTX, VXWorks, 리눅스 등을 포함하지만 이들에 한정되지 않는 가상적으로 임의의 타입의 운영체제와 더불어 사용하기에 편리해야 한다.
본 발명의 다른 국면은, 펌웨어(104)가 각종의 비슷하지 않은 OS, 예컨대 윈도우즈 CE, VRSTX, VXWorks, 리눅스 등의 위에서 작용하도록 펌웨어(104)에 대해 능력을 제공해야 한다는 것이다. 특히, 인터페이스는 광대역 환경에서 실행하는 플랫폼 소프트웨어(28)에 대해 임계특성을 제공하도록 규정된다. 이들 임계특성에는 통상의 OS 환경에서는 제공되지 않는 지정 구성 및 지원코드가 포함된다. 이들 통상의 OS 환경은, 이들 운영체제의 대부분이 그들의 특별한 광대역 환경에서 케이블 오퍼레이터(MSO)에 의해 개발되기 때문에, 조정되어야 한다.
본 발명은 광대역 환경에 독특한 몇 가지 구성을 편리하게 제공한다. 동시에 단말(30)로 입력되는 다량의 수신 데이터(inbound data)가 있기 때문에, 기본적 운영체제가 동기화 특성을 이용가능하게 하는 것이 중요하다. 단말(30)이 종종 국가 레벨(national level)에서 제어됨에 따라, 다른 지역 시간 기초를 고려하기 위해 클록 특징(clock feature)이 필요하다. 부가적으로, 본 발명의 인터페이스가 프로세스 기반 운영체제 및 비프로세스 기반 운영체제의 양쪽에 대해 채택될 수 있도록, 프로세스간 명명 태그가 제공된다. 다음에는 상기 구성의 각각에 대해 더욱더 상세히 설명하기로 한다.
도 1에서 볼 수 있는 바와 같이, 데이터는 수개의 포트(10, 12, 14, 16, 18, 20, 22, 24, 26)중 하나 이상의 포트를 통해 단말(30)에 수신된다. 이것은, 수신 데이터를 적당한 순서로 처리할 준비가 되어 있는 모든 스레드에 대해 대책을 강구하려고 하는 것이다. 예컨대, 코드 기초(code base)의 한 부분이 이들 요구를 처리할 준비가 되어 있지 않다면, 이것은 특별한 요구에 대해 부정적인 효과를 가질 것이다. 따라서, 수신 데이터를 동기화하는 것이 바람직하다. 그래서, 도 3에 나타낸 바와 같이, 본 발명은 단말(30)로 다운스트림으로 계속해서 전송되는 메시징의 맹습(onslaught)을 처리하는 것을 개시할 준비가 되어 있는 광대역 단말 플랫폼의 소프트웨어(28)의 모든 태양에 대해 대책을 강구하기 위해 사용되는 동기화 객체(synchronizer object; 106)를 제공한다.
동기화 객체(106)는, 소비자의 광대역 장치(단말(30))로 송신되고 있는 모든 다운스트림 요구를 다룰 준비가 되어 있을 필요가 있는 모든 스레드를 조정하기 위해, 광대역 환경에서 요구된다. 또한, 이러한 필요성은 다운스트림 메시지의 조합을 특별한 순서로 처리하기 위해 상승한다. 동기화 객체(106)는 이 처리가 정확한 순서로 일어나는 것을 가능하게 한다.
Synchronizer(동기화) 클래스는 동기화와 더불어 등록되어 있는 모든 스레드(112)가 동기화 점에 도착할 때까지 다중 스레드가 실행을 잠시 멈추도록 하는 것을 허가한다. 이것은 그들이 실행을 계속하기 전에 모든 스레드 객체(112)를 조정한다. 전형적으로, 동일한 동기화 클래스를 공유함으로써 함께 동기화되어 있는 스레드(112)는 그들의 의도된 기능을 수행하기 위해 서로 의존하고 있다. 이들 스레드(112)는 확실히 그들이 의존하고 있는 다른 스레드(112)가 만족한 상태에 있다는 것을 필요로 한다. 이것은, 모든 스레드(112)가 기동하기 시작하는 단말(30)의 전력 사이클 후에 특히 필요하다. 이 특징을 광대역 환경에 있어서 더 중요하게 만드는 것은, 광대역 환경의 본질에 의해 많은 메시지가 동시에 다운스트림으로 전송된다는 사실과 함께, 단일 스레드(112) 또는 스레드(112)의 조(組)가 헤드엔드(head-end)로부터의 메시지를 처리한다는 점이다.
이제 도 4를 주목하면, 광대역 환경 내에서 사용하기 위한 제2의 구성은 clock(클록) 객체(108)이다. 클록 객체(108)는 광대역 환경에 있어서 광범위하게 사용되고 있는 GPS, UTC 및 지역 시간을 제공한다. 전형적으로, 이 설비는 통상의 OS에서 제공되는 기능을 확장하는 것을 필요로 한다. 클록 객체(108)는, TV가이드 온 스크린(TVGUIDE On Screen) 등의 응용이 지역시간의 항으로 표시되는 것을 가능하게 하는 지역시간 지원을 편리하게 제공한다. 또한, 클록 객체(108)는 이들 시간 기초가 국가 제어시스템을 위해 사용됨에 따라 GPS 및 UTC 시간 지원도 제공한다. 이 지원은, 광대역 환경 어드레스가능한 컨트롤러(addressable controller)가 다른 주의 다른 시간지역에 존재하는 단말(30)에 메시지를 전송하는 것을 가능하게 한다. 어드레스가능한 컨트롤러는 지정 GPS 시간에서 TV 서비스를 켜거나 혹은 지정 시간에서 프로그램을 소거하는 등의 어떤 기능을 활성화시키는 메시지를 전송한다. 이들 메시지에 대해, 지역시간 기초 제어가 작용하지 않고, 반면에 넓은 지역에 걸쳐 작용하도록 GPS 및 UPC 시간 기초가 설계된다. 도 4의 ATime 클래스(128)에 대해서는 후술한다.
광대역 환경을 위해 OS 인터페이스에 있어서 제공되는 제3의 OS 구성은 각종 OS 구성에 대한 프로세스간 명명 태그(Inter-Process naming tag)이다. 본 발명의 OS 추상화층(100, 102)은 프로세스 기반 환경(예컨대, 윈도우즈 CE)과 비프로세스 기반 환경(예컨대, 전형적인 실시간 운영체제 또는 RTOS)의 양쪽에 따라 편리하게 작용한다. 여기서, 키(key)는 프로세스간 메커니즘이 OS 추상화층의 아래에 있는 실제적인 운영체제에 상관없이 사실상 OS와 독립하고 있다는 점이다. 몇몇 OS는 프로세스를 갖고, 몇몇 OS는 프로세스를 갖지 않기 때문에, 확실히 양 운영체제 환경에서 기동하는 프로세스간 이름 태그가 필요하게 된다.
본 발명의 편리한 특징을 달성함에 있어서, 수개의 OS 독립 클래스가 이하에 정의된다. 셋톱 펌웨어(104)의 다른 기능을 위해 제어 스레드(control thread)를 작성하여 개시하기 위해 Thread(스레드) 클래스(112; 도 3)가 제공된다. 스레드는 필요에 따라 그 실행이 일시 중지되고, 그 후에 그 실행이 재개될 수 있는 일시 중시상태에서 개시될 수 있다. 다른 스레드에 관하여 스레드의 우선순위는 바뀔 수 있다. 스레드는, 보통 단말(30)의 몇몇 주변장치와 상호 작용하는 소비자로부터 기인하는 다운스트림 메시지 처리 및 API 호출 실행을 수행한다. SyncThread(동기 스레드) 클래스(114)는 스레드의 초기화 및 동기화를 제공하고, 메인 루프를 객체에 지정한다.
Mutex(뮤텍스; 110)(도 5) 등의 어떤 제어 객체는 2개의 다른 프로세스에서의 2개의 다른 스레드가 이름에 의해 뮤텍스(110)를 획득할 수 있도록 이름이 붙여져 있다. 뮤텍스 클래스(110)는, 더 낮은 우선순위 태스크가 더 높은 우선순위 태스크가 대기하고 있는 리소스를 소유할 때, 리소스가 해제될 때까지 더 낮은 우선순위 태스크의 우선순위를 더 높은 우선순위로 일시적으로 상승시키도록 스레드(112)의 우선순위를 반전시킬 수 있다.
도 6을 주목하면, Timer(타이머) 클래스(116)는 시간 구간이 지나갔다는 통지를 제공한다. 이와 같은 통지 메커니즘은 시간관련 사건에 펜딩(pending)되어 있는 스레드(112)에 대해 웨이크업 호출(wakeup call)을 제공하기 위해 사용된다. 도 4의 Clock(클록) 객체 클래스(108)는 타이머 객체(116)의 구성요소이다. Event(사건) 클래스(118)는 사건의 세트 및 클리어를 제어한다. 사건은 스레드(112)가 예컨대 인터럽트 서비스 서브루틴으로부터 사건(118)을 전송할 때 사용되어도 좋다. 이 특별한 스레드는 이 사건(118)을 수신할 때 웨이크업(휴지 상태에 있는 것을 동작 상태로 들어가게 하는 것)되고, 그 인터럽트에 대해 지정한 필요한 처리를 수행한다.
임계 섹션 클래스(Critical Section class; 도시하지 않음)는 코드의 임계 섹션에 대한 보호를 제공한다. 임계 섹션은 동일한 메모리 위치를 사용하는 2개의 스레드(112)를 조정하기 위해 사용된다. 어느 한 시간에는 이 메모리 위치에 하나의 스레드만 독출 또는 기록할 수 있다. 도 6에 나타내어져 있는 MultiOrEvent 클래스(120)는 하나 이상의 사건이 주장될 때 동기화가 만족된다는 것을 선언한다. MultiOrEvent 클래스(도시하지 않음)의 경우는, 동기화가 만족될 때에 주장된 모든 사건이 호출자(caller)로 리턴된다.
도 7을 주목하면, Message(메시지) 클래스(122)는 객체가 태스크간 또는 태스크내 정보를 운반하는 것을 가능하게 한다. MessageQueue(메시지 대기열) 클래스(124)는 메시지에 대해 컨테이너(container)를 제공한다. 메시지는 한 스레드(112)로부터 다른 스레드로 데이터를 전송하기 위한 전형적인 어프로치(approach: 접근방법)이다. Throttling Message Queue(드로틀링 메시지 대기열; 126)은 유사하지만, 대기열이 거의 충만하게 되었음(즉, 드로틀링상태로 되었음)을 사용자에게 알린다. 이 메커니즘은, 대기열이 오버플로우(overflow)하고 있을 때, 이들 도래하는 메시지가 대기열에 놓이는 것을 정지하는 방법을 소프트웨어 설계가 제공할 때 사용된다.
다시 도 4를 주목하면, ATime 클래스(128)는 시간값을 제공하고, Clock(클록) 클래스(108)는 기본적인 클록 기능을 제공한다. 클록 클래스(108)는 더 높은 레벨의 소프트웨어에 날짜 기능의 시간을 제공하도록 기능한다. 스레드간 통신(interthread communication)은 메시지 대기열(124), 뮤텍스(110) 및/또는 사건(118)을 통해 제공된다.
본 발명은, 광대역 환경에서의 몇몇의 운영체제 및 셋톱 플랫폼 아래에서 이용하기에 알맞은 동안에, 셋톱 펌웨어가 한번만 실현되는 것을 허가하는 독특한 어프로치를 제공하는 것이다. 또한, 본 발명은 광대역 환경에서 필요하게 되는 상술한 바와 같은 새로운 전략적인 특징을 포함하는 OS 플랫폼 및 하드웨어 플랫폼에 걸쳐서 아키텍처 및 코드의 공유를 허가하는 인터페이스를 제공한다.
본 발명은 특정의 실시예에 대해 설명되었지만, 이 개시(開示)의 일부를 이루는 논술 및 도면은 이 발명을 한정하는 것이라고 이해해서는 안된다. 이 개시로부터 당업자에게는 여러 가지의 대체 실시예 및 운용기술이 명백하게 될 것이다. 본 발명에 있어서는, 발명의 정신 및 범위로부터 이탈하는 일없이 넓은 범위에 있어서 다른 실시예를, 본 발명에 기초하여 구성할 수 있음은 명백하다. 본 발명은, 첨부의 청구의 범위에 의해 한정되는 이외에는 그것의 특정의 실시예에 의해 제약받지 않는다.

Claims (33)

  1. 플랫폼 소프트웨어와 광대역 환경 내에서 작용하는 광대역 단말에서 실행하는 특별한 운영체제간의 통신을 가능하게 하기 위한 방법으로,
    플랫폼 소프트웨어와 운영체제 사이에 운영체제 종속층 및 운영체제 독립층을 갖춘 운영체제 추상화 인터페이스를 제공하는 단계와,
    상기 운영체제 추상화 인터페이스 내에 스레드를 동기화하기 위한 구성을 제공하고, 타이밍을 조정하며, 프로세스간 명명을 제공하는 단계를 구비하고,
    상기 운영체제 추상화 인터페이스가, 비슷하지 않은 운영체제에 걸쳐서 일관된 기능을 유지하는 동안에, 플랫폼 소프트웨어가 비슷하지 않은 운영체제에서 실행되는 것을 가능하게 하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 운영체제 추상화 인터페이스는 플랫폼 소프트웨어의 다른 기능을 위한 제어 스레드를 생성 및 개시하기 위한 스레드 기능과, 스레드의 초기화 및 동기화를 제공하기 위한 동기화 기능을 포함하고 있는 것을 특징으로 하는 방법.
  3. 제2항에 있어서, 상기 스레드 기능은 스레드의 다른 하나에 관하여 적어도 스레드의 특별한 하나의 우선순위가 바뀌도록 하고, 또 상기 스레드 기능은 일시 정지된 상태에서 특별한 스레드를 개시함으로써 적어도 스레드의 특별한 하나의 실행이 일시 정지되도록 하며, 특별한 스레드의 실행이 그 후에 재개되도록 하고 있는 것을 특징으로 하는 방법.
  4. 제2항에 있어서, 상기 동기화 기능은 동기화와 더불어 등록되어 있는 모든 스레드가 동기화 점에 도착할 때까지 적어도 스레드의 특별한 하나가 실행을 잠시 멈추도록 하고 있는 것을 특징으로 하는 방법.
  5. 제2항에 있어서, 상기 운영체제 추상화 인터페이스는 특별한 스레드와 관련된 제1의 태스크가 초기에 더 낮은 우선순위를 갖고, 스레드의 다른 하나와 관련된 제2의 더 높은 우선순위를 갖는 태스크가 대기하고 있는 리소스를 소유할 때, 제1의 태스크가 리소스를 해제할 때까지 제1의 태스크의 우선순위를 더 높은 우선순위로 일시적으로 상승시키도록 적어도 스레드의 특별한 하나의 우선순위를 반전시키기 위한 뮤텍스 기능을 포함하고 있는 것을 특징으로 하는 방법.
  6. 제1항에 있어서, 상기 운영체제 추상화 인터페이스는 시간 구간이 지나갔음을 스레드에 통지하기 위한 타이머 기능을 포함하고 있는 것을 특징으로 하는 방법.
  7. 제1항에 있어서, 상기 운영체제 추상화 인터페이스는 객체가 태스크간 또는 태스크내 정보를 운반하도록 허가하기 위한 메시지 기능을 포함하고 있는 것을 특징으로 하는 방법.
  8. 제1항에 있어서, 상기 플랫폼 소프트웨어는 단말용의 펌웨어로 이루어진 것을 특징으로 하는 방법.
  9. 광대역 환경 내에서 사용하기 위한 단말로,
    다운스트림 데이터를 수신하는 복수의 입력포트와,
    플랫폼 소프트웨어와 그 단말에서 실행하는 운영체제간에 운영체제 추상화 인터페이스를 포함하고, 그 위에 상주하는 실행가능한 컴퓨터 프로그램 코드를 갖는 컴퓨터 판독가능한 매체 및,
    상기 컴퓨터 프로그램 코드를 실행하기 위한 프로세서를 구비하고,
    상기 운영체제 추상화 인터페이스의 일부는 운영체제와 독립하고 있으며,
    또 상기 운영체제 추상화 인터페이스는 스레드를 동기화하고 타이밍을 조정하며 프로세스간 명명을 제공하기 위한 구성을 제공하고,
    더욱이 상기 운영체제 추상화 인터페이스는, 비슷하지 않은 운영체제에 걸쳐서 일관된 기능을 유지하는 동안에, 플랫폼 소프트웨어가 비슷하지 않은 운영체제에서 실행되는 것을 가능하게 하는 것을 특징으로 하는 단말.
  10. 제9항에 있어서, 상기 운영체제 추상화 인터페이스는 플랫폼 소프트웨어의 다른 기능을 위한 제어 스레드를 생성 및 개시하기 위한 스레드 기능과, 스레드의초기화 및 동기화를 제공하기 위한 동기화 기능을 포함하고 있는 것을 특징으로 하는 단말.
  11. 제10항에 있어서, 상기 스레드 기능은 스레드의 다른 하나에 관하여 적어도 스레드의 특별한 하나의 우선순위가 바뀌도록 하고, 또 상기 스레드 기능은 일시 정지된 상태에서 특별한 스레드를 개시함으로써 적어도 스레드의 특별한 하나의 실행이 일시 정지되도록 하며, 특별한 스레드의 실행이 그 후에 재개되도록 하고 있는 것을 특징으로 하는 단말.
  12. 제11항에 있어서, 상기 동기화 기능은 동기화와 더불어 등록되어 있는 모든 스레드가 동기화 점에 도착할 때까지 적어도 스레드의 특별한 하나가 실행을 잠시 멈추도록 하고 있는 것을 특징으로 하는 단말.
  13. 제10항에 있어서, 상기 운영체제 추상화 인터페이스는 특별한 스레드와 관련된 제1의 태스크가 초기에 더 낮은 우선순위를 갖고, 스레드의 다른 하나와 관련된 제2의 더 높은 우선순위를 갖는 태스크가 대기하고 있는 리소스를 소유할 때, 제1의 태스크가 리소스를 해제할 때까지 제1의 태스크의 우선순위를 더 높은 우선순위로 일시적으로 상승시키도록 적어도 스레드의 특별한 하나의 우선순위를 반전시키기 위한 뮤텍스 기능을 포함하고 있는 것을 특징으로 하는 단말.
  14. 제9항에 있어서, 상기 운영체제 추상화 인터페이스는 시간 구간이 지나갔음을 스레드에 통지하기 위한 타이머 기능을 포함하고 있는 것을 특징으로 하는 단말.
  15. 제9항에 있어서, 상기 운영체제 추상화 인터페이스는 객체가 태스크간 또는 태스크내 정보를 운반하도록 허가하기 위한 메시지 기능을 포함하고 있는 것을 특징으로 하는 단말.
  16. 제9항에 있어서, 상기 플랫폼 소프트웨어는 단말용의 펌웨어로 이루어진 것을 특징으로 하는 단말.
  17. 클라이언트와 단말에서 실행하는 특별한 운영체제간에서 통신하기 위한 방법으로,
    복수의 비슷하지 않은 운영체제에 의해 제공되는 기능의 소정의 집합에 인터페이스를 제공하는 핵심 인터페이스에 대해 기능을 위한 운영체제 독립 요구를 만드는 단계와,
    상기 핵심 인터페이스에서 상기 운영체제 독립 요구를 수신하는 단계 및,
    상기 운영체제 독립 요구를 상기 특별한 운영체제에 의존하는 상기 기능에 대한 요구로 해석하는 단계를 구비한 것을 특징으로 하는 방법.
  18. 제17항에 있어서, 상기 운영체제 독립 요구는 클라이언트에 의해 만들어지는 것을 특징으로 하는 방법.
  19. 제17항에 있어서, 상기 핵심 인터페이스는 상기 운영체제 독립 요구를 수신하기 위한 제1추상화층과, 상기 해석단계를 실현하기 위한 제2추상화층을 포함하고 있는 것을 특징으로 하는 방법.
  20. 제17항에 있어서, 상기 운영체제 독립 요구는 스레드 요구인 것을 특징으로 하는 방법.
  21. 제17항에 있어서, 상기 운영체제 독립 요구는 동기화 요구인 것을 특징으로 하는 방법.
  22. 제17항에 있어서, 상기 운영체제 독립 요구는 타이머 요구인 것을 특징으로 하는 방법.
  23. 제17항에 있어서, 상기 운영체제 독립 요구는 메모리 요구인 것을 특징으로 하는 방법.
  24. 제17항에 있어서, 상기 운영체제 독립 요구는 메시지 요구인 것을 특징으로하는 방법.
  25. 제17항에 있어서, 상기 단말은 네트워크내의 가입자 텔레비전 단말인 것을 특징으로 하는 방법.
  26. 제17항에 있어서, 상기 단말은 광대역 통신 네트워크내의 단말인 것을 특징으로 하는 방법.
  27. 제17항에 있어서, 클라이언트에 의해 핵심 인터페이스로 공급되는 파라미터와, 핵심 인터페이스에 의해 클라이언트로 리턴되는 리턴값은 상기 복수의 비슷하지 않은 운영체제와 관계없는 것을 특징으로 하는 방법.
  28. 클라이언트와 단말에서 실행하는 특별한 운영체제간의 통신을 가능하게 하기 위한 장치로,
    기능을 위한 운영체제 독립 요구를 수신하기 위한 핵심 인터페이스를 구비하고,
    상기 핵심 인터페이스가, 복수의 비슷하지 않은 운영체제에 의해 제공되는 기능의 소정의 집합에 인터페이스를 제공하고, 상기 운영체제 독립 요구를 상기 특별한 운영체제에 의존하는 상기 기능에 대한 요구로 해석하는 것을 특징으로 하는 장치.
  29. 제28항에 있어서, 상기 운영체제 독립 요구는 클라이언트에 의해 만들어지는 것을 특징으로 하는 장치.
  30. 제28항에 있어서, 상기 핵심 인터페이스는 상기 운영체제 독립 요구를 수신하기 위한 제1추상화층과, 상기 해석단계를 실현하기 위한 제2추상화층을 포함하고 있는 것을 특징으로 하는 장치.
  31. 제28항에 있어서, 상기 단말은 네트워크내의 가입자 텔레비전 단말인 것을 특징으로 하는 장치.
  32. 제28항에 있어서, 상기 단말은 광대역 통신 네트워크내의 단말인 것을 특징으로 하는 장치.
  33. 제28항에 있어서, 클라이언트에 의해 핵심 인터페이스로 공급되는 파라미터와, 핵심 인터페이스에 의해 클라이언트로 리턴되는 리턴값은 상기 복수의 비슷하지 않은 운영체제와 관계없는 것을 특징으로 하는 장치.
KR1020027012736A 2000-03-27 2001-03-27 광대역 단말 플랫폼 펌웨어용의 운영체제 추상화 인터페이스 KR20030015218A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/535,899 2000-03-27
US09/535,899 US6721949B1 (en) 2000-03-27 2000-03-27 Kernel abstraction layer for digital television set-top box firmware
US09/798,351 2001-03-02
US09/798,351 US20010027464A1 (en) 2000-03-27 2001-03-02 Operating system abstraction interface for broadband terminal platform firmware

Publications (1)

Publication Number Publication Date
KR20030015218A true KR20030015218A (ko) 2003-02-20

Family

ID=27064982

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027012736A KR20030015218A (ko) 2000-03-27 2001-03-27 광대역 단말 플랫폼 펌웨어용의 운영체제 추상화 인터페이스

Country Status (11)

Country Link
US (1) US20010027464A1 (ko)
EP (1) EP1269312A2 (ko)
JP (1) JP2003529840A (ko)
KR (1) KR20030015218A (ko)
CN (1) CN1429363A (ko)
AR (1) AR030200A1 (ko)
AU (1) AU2001252975A1 (ko)
CA (1) CA2404400A1 (ko)
HK (1) HK1053369A1 (ko)
TW (1) TW541494B (ko)
WO (1) WO2001075599A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI324309B (en) * 2002-08-26 2010-05-01 Interdigital Tech Corp Communication circuit
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
US20070201270A1 (en) * 2005-12-30 2007-08-30 Stmicroelectronics Pvt. Ltd. Read only memory device with bitline leakage reduction
DE102006014019A1 (de) * 2006-03-27 2007-10-11 Siemens Ag Verfahren zum Steuern der Zugriffe auf Ressourcen eines Computersystems
JP4609381B2 (ja) * 2006-06-14 2011-01-12 株式会社デンソー 異常監視用プログラム、記録媒体及び電子装置
JP5452125B2 (ja) * 2009-08-11 2014-03-26 クラリオン株式会社 データ処理装置及びデータ処理方法
CN103019817B (zh) * 2012-11-30 2015-10-14 北京奇虎科技有限公司 一种用于页面交互的方法与装置
CN103399753A (zh) * 2013-08-19 2013-11-20 银联商务有限公司 软件架构
EP3144807A4 (en) * 2014-06-23 2017-07-05 Huawei Technologies Co., Ltd. Operation method of routing device, routing device and terminal device
US11093221B1 (en) * 2020-02-14 2021-08-17 Red Hat, Inc. Automatic containerization of operating system distributions
US11520614B2 (en) * 2020-03-10 2022-12-06 Dish Network L.L.C. Operating system-agnostic container runtime

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104868A (en) * 1996-04-30 2000-08-15 Peters; Daniel G. Extendible and portable network protocol based system management architecture
US5946487A (en) * 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
US6418460B1 (en) * 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
EP0909094A1 (en) * 1997-10-07 1999-04-14 CANAL+ Société Anonyme Multithread data processor

Also Published As

Publication number Publication date
JP2003529840A (ja) 2003-10-07
AR030200A1 (es) 2003-08-13
US20010027464A1 (en) 2001-10-04
HK1053369A1 (zh) 2003-10-17
CA2404400A1 (en) 2001-10-11
CN1429363A (zh) 2003-07-09
WO2001075599A2 (en) 2001-10-11
AU2001252975A1 (en) 2001-10-15
EP1269312A2 (en) 2003-01-02
WO2001075599A3 (en) 2002-08-01
TW541494B (en) 2003-07-11

Similar Documents

Publication Publication Date Title
US7080386B2 (en) Architecture with digital signal processor plug-ins for general purpose processor media frameworks
CN108170503B (zh) 一种跨系统运行安卓应用的方法、终端及存储介质
US5721922A (en) Embedding a real-time multi-tasking kernel in a non-real-time operating system
US6412031B1 (en) Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment
US20060225107A1 (en) System for running applications in a resource-constrained set-top box environment
EP3274831B1 (en) Application container for live migration of mobile applications
US5903752A (en) Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US20090150888A1 (en) Embedded operating system of smart card and the method for processing the task
KR20030015218A (ko) 광대역 단말 플랫폼 펌웨어용의 운영체제 추상화 인터페이스
KR20020022085A (ko) 응용프로그램 라이프사이클에 따른 응용프로그램 관리방법 및 장치
CN113542757B (zh) 云应用的图像传输方法、装置、服务器及存储介质
KR101047278B1 (ko) 미들웨어 어플리케이션 메시지/이벤트 모델
JP2005518015A (ja) 移動体端末用プラットフォーム・システムのミドルウエア・サービス・レイヤ
KR102566622B1 (ko) 멀티코어 통신방법, 장치, 전자기기 및 저장매체
CN105242962A (zh) 基于异构众核的轻量级线程快速触发方法
WO2022247698A1 (zh) 资源配置方法和装置、电子设备及计算机可读存储介质
CN111580988A (zh) 开放平台的实现方法、装置、存储介质和计算机设备
Schmidt et al. Applying patterns to develop extensible and maintainable ORB middleware
CN109669691B (zh) 基于嵌入式Linux音频播放器的平台通用控制方法及系统
CN116302549A (zh) Ai视频加速器的硬件资源获取方法、装置、设备及介质
CN115373869A (zh) 基于aar的进程处理方法、装置及电子设备
CN114028801A (zh) 基于云端的用户输入方法、装置、设备及存储介质
CN111766992A (zh) 信息显示方法、装置、电子设备及存储介质
WO2024037553A1 (zh) 一种生命周期调度的方法、装置及电子设备
CN113852635A (zh) 任务处理方法、装置、终端设备及存储介质

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid