KR101702729B1 - 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법 - Google Patents

다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법 Download PDF

Info

Publication number
KR101702729B1
KR101702729B1 KR1020147007035A KR20147007035A KR101702729B1 KR 101702729 B1 KR101702729 B1 KR 101702729B1 KR 1020147007035 A KR1020147007035 A KR 1020147007035A KR 20147007035 A KR20147007035 A KR 20147007035A KR 101702729 B1 KR101702729 B1 KR 101702729B1
Authority
KR
South Korea
Prior art keywords
operating
operating system
environment
operating environment
independent
Prior art date
Application number
KR1020147007035A
Other languages
English (en)
Other versions
KR20140043168A (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 KR20140043168A publication Critical patent/KR20140043168A/ko
Application granted granted Critical
Publication of KR101702729B1 publication Critical patent/KR101702729B1/ko

Links

Images

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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명의 다양한 실시예는 공통 커널에서 다수의 공존하고 독립적인 운영 시스템 환경을 운영하는 모바일 컴퓨팅 장치를 제공한다. 다수의 운영 시스템 환경을 초기화하기 위한 부팅 프로세스가 또한 제공된다. 또한, 본 발명의 다양한 실시예는 하나의 운영 시스템 환경과 제2 운영 시스템 환경 사이의 전환을 관리하기 위한 프로세스들을 포함한다.

Description

다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법{SYSTEM AND METHOD FOR SWITCHING BETWEEN ENVIRONMENTS IN A MULTI-ENVIRONMENT OPERATING SYSTEM}
본 발명은 일반적으로 서로 다른 운영 환경 간에 전환하기 위한 다중 환경 운영 시스템들 및 방법들에 관한 것이다.
운영 시스템은 특정 어플리케이션 및 사용자 요구 성능에 기초하여 설계되고 통상적으로 최적화된다. 사용자 선호 프로그램들이 운영 시스템에 의존적일 수 있기 때문에, 어느 하나의 유형의 운영 시스템의 피쳐(feature)가 다른 운영 시스템에서도 이용될 수 있는 것이 일반적으로 바람직하다.
리눅스(LinuxTM) 및 윈도우즈(WindowsTM)와 같은 범용 컴퓨터 운영 시스템들은 파일 시스템, 장치 드라이버, 어플리케이션, 라이브러리 등과 같은 광범위한 피쳐들의 집합을 갖는다. 그러한 운영 시스템들은 다수의 프로그램의 동시 실행을 허용하고, 동시에 실행하는 프로그램들의 서비스에 관련된 응답 시간(대기 시간(latency time)이라고도 함) 및 CPU 사용 또는 부하를 최적화하는 것을 시도한다. 그러나, 불행하게도, 그러한 운영 시스템들은, 예를 들어 모바일 컴퓨팅 장치를 위한 내장형 실시간 어플리케이션에 일반적으로 적합하지 않다. 특정한 환경하에서는, 모바일 컴퓨팅 장치가 모바일 특정 내장형 운영 시스템에 관련된 성능과 범용 운영 시스템의 피쳐들을 갖는 것이 바람직할 것이다.
예를 들어, 리눅스는, 최신 운영 시스템 피쳐들, 다수의 개발 툴(tool)들, 네트워킹 등을 포함하는 최신 장치들을 위한 많은 바람직한 피쳐들을 갖는 잘 알려진 범용 데스크탑 운영 시스템이다. 그러나, 리눅스는 내장형 또는 실시간 운영 시스템이 되도록 설계되지는 않았다. 셋탑박스(set top box), 이동 전화 및 자동차 네비게이션 시스템 등(이에 한정되는 것은 아님)의 많은 최신 장치들은, 리눅스와 같은 범용 운영 시스템의 피쳐들뿐만 아니라 실시간 실행을 포함하는 내장형 또는 실시간 운영 시스템의 피쳐들을 필요로 한다.
역사적으로, 하나의 장치에서 실행하는 다수의 운영 환경들은, 예를 들어, VMwareTM, VirtualBoxTM, QEMUTM 등과 같은 가상화 기술을 통해 달성되었다. 그러나, 가상화를 사용하는 경우 완전한 컴퓨터가 에뮬레이팅되고 하나 이상의 소프트웨어 스택(stack)들이 에뮬레이팅된 컴퓨팅 장치에서 작동된다. 에뮬레이션은 높은 간접비용을 초래한다.
본 발명의 적어도 하나의 실시예에 따르면, 모바일 장치를 제1 운영 환경으로부터 제2 운영 환경으로 전환하는 방법이 제공된다. 상기 방법은 코어 커널(core kernel)에 결합된 적어도 두 개의 공존하는 독립적인 미들웨어 운영 환경을 초기화하는 단계를 포함하고, 미들웨어 운영 환경들 각각은 대응하는 어플리케이션 요소를 갖는다. 또한, 상기 방법은 장치 동작에 적어도 부분적으로 기초하여 모드 상태 초기화 변경 신호를 수신하는 단계, 장치의 제1 운영 환경 제어를 해제하는 단계 및 장치의 제2 운영 환경 제어를 초기화하는 단계를 포함한다.
본 발명의 적어도 하나의 실시예에 따르면, 장치 하드웨어 요소와 미들웨어 요소를 접속시키도록 구성된 코어 커널을 갖는 모바일 장치 운영 시스템이 제공된다. 상기 시스템은 코어 커널에 결합된 적어도 두 개의 공존하는 독립적 미들웨어 운영 환경들을 포함하고, 미들웨어 운영 환경들 각각은 대응하는 어플리케이션 요소를 갖는다.
또 다른 실시예에 따르면, 공통 커널(common kernel)에 위치한 제1 독립적 운영 시스템 및 제2 독립적 운영 시스템을 갖는 모바일 컴퓨팅 장치가 제공된다. 상기 장치는 컴퓨터 실행가능한 명령어들에 적어도 부분적으로 기초하고, 제1 운영 환경과 제2 운영 환경 사이에서 상기 장치의 1차 제어를 전환하도록 구성된 프로세서를 또한 포함한다.
다른 실시예에 따르면, 모바일 컴퓨팅 장치를 동작시키는 방법은 공통 커널 상에 적어도 두 개의 독립적 운영 시스템들을 갖는 모바일 장치의 동작을 초기화하는 단계 및 1차 및 2차 운영 시스템을 식별하는 단계를 포함한다. 상기 방법은 1차 운영 시스템이 장치를 제어하는 동안 2차 운영 시스템 어플리케이션을 시작하는 단계를 또한 포함한다.
본 발명의 다른 실시예에 따르면, 컴퓨터 프로세서에 결합된 메모리 저장 유닛을 갖는 모바일 컴퓨팅 장치가 제공된다. 메모리 저장 유닛은 공통 커널에서 적어도 두 개의 운영 시스템 환경들을 운영할 수 있는 컴퓨터 실행가능 명령어들을 포함한다.
또 다른 대안적인 실시예에 따르면, 멀티미디어 정보를 수신 및 전송하도록 구성된 그래픽 사용자 인터페이스를 갖는 이동 전화기가 제공된다. 상기 전화기는 메모리 저장 유닛에 결합된 프로세서를 갖는 컴퓨팅 시스템, 및 공통 커널을 갖는 다중 환경 운영 시스템을 포함한다. 메모리 저장 유닛은 적어도 두 개의 공존하는 독립적 운영 시스템 환경들 사이에서 공유되는 자원들을 관리할 수 있는 컴퓨터 실행가능 명령어들을 포함한다.
대안적인 실시예에 따르면, 본 발명은 운영 시스템을 초기화하도록 구성된 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 메모리에 결합된 컴퓨터 프로세서를 갖는 모바일 컴퓨팅 장치를 포함한다. 상기 장치는 또한 하나의 커널에서 표준 리눅스 배포판 운영 시스템 환경 및 안드로이드(AndroidTM) 운영 시스템 환경을 동시에 실행하도록 구성된 운영 시스템을 포함한다.
또 다른 대안적인 실시예에 따르면, 본 발명은 장치 하드웨어 요소와 미들웨어 요소를 접속하도록 구성된 코어 커널(core kernel)을 갖는 모바일 장치 운영 시스템을 포함한다. 상기 장치는 또한, 자바 해석 어플리케이션을 실행하도록 구성되고 코어 커널에 결합된 제1 독립적 미들웨어 운영 환경, 및 네이티브(native) 어플리케이션들을 실행하도록 구성되고 코어 커널에 결합된 제2 독립적 미들웨어 운영 환경을 포함한다.
전술한 내용을 고려할 때, 공존하고, 독립적인 운영 시스템들의 성능 및 피쳐들을 효율적이고 편리하게 제공하는 하나의 커널(kernel) 환경을 구현하는 시스템에 대한 필요가 있다.
도 1은 모바일 장치의 예시적인 사시도이다;
도 2는 예시적인 운영 시스템을 나타내는 블록도이다;
도 3은 예시적인 운영 시스템의 블록도이다;
도 4는 예시적인 운영 시스템의 런타임 공존 스키마(runtime co-existence schema)의 블록도이다;
도 5는 예시적인 운영 시스템의 환경간 통신 스키마의 블록도이다;
도 6은 예시적인 운영 시스템을 위한 부팅 시퀀스(booting sequence)에서 단계들을 나타내는 순서도이다;
도 7은 예시적인 운영 시스템이 제2 운영 환경에 의해 제어되는 동안 제1 운영 환경에서 어플리케이션을 시작하기 위한 예시적인 단계들을 나타내는 순서도이다;
도 8은 제1 운영 환경이 1차 제어를 갖는 동안 제2 운영 환경 어플리케이션을 시작하기 위한 예시적인 단계들을 나타내는 메시지 순서도이다;
도 9는 제1 운영 환경으로부터 제2 운영 환경으로 전환하는 것에 관련된 예시적인 단계들을 나타내는 순서도이다;
도 10은 제1 운영 환경으로부터 제2 운영 환경으로 전환하기 위한 예시적인 단계들을 나타내는 메시지 순서도이다;
도 11은 제2 운영 환경으로부터 제1 운영 환경으로 전환하기 위한 예시적인 단계들을 나타내는 메시지 순서도이다;
도 12는 제2 운영 환경이 컴퓨팅 장치를 1차 제어하는 동안 제1 운영 환경에 의해 제어되는 어플리케이션의 예시적인 사용을 나타내는 순서도이다.
내장형 운영 시스템 및 리눅스 기반 운영 환경을, 컴퓨팅 장치의 하드웨어 상에서 직접 실행하는 하나의 리눅스 커널과 직접적으로 통신시키는 것이 유리할 것으로 예상된다.
도 1을 참조하면, 모바일 전화기(10)가 제공된다. 전화기(10)는 GUI(12) 및 복수의 데이터 입력 버튼(14)을 포함한다. 모바일 장치(10)는 모바일 개인용 컴퓨터(PC), 넷북, 모바일 전화기, 랩탑 컴퓨터, 휴대용(handheld) 컴퓨터 및 스마트폰을 포함하는(이에 제한되지는 않음) 그룹으로부터 선택된다. 비록 장치(10)는 이동형이지만, 500 mHz를 초과하는 프로세서 속도를 갖는 상당한 컴퓨팅 파워를 갖도록 의도되나, 더 느린 프로세서도 제외되진 않는다. 컴퓨팅 파워를 고려하여, 사용자는 장치(10)를 다양한 주변 장치들(도시 생략)에 연결시킬 수 있다. 주변 장치들은 컴퓨터 모니터, 랩탑 컴퓨터, 태블릿 PC, 데스크탑 컴퓨터 및 스크린 프로젝터를 포함하는(이에 제한되지는 않음) 그룹으로부터 선택된다.
이제 도 2를 참조하면, 커널(18)과 통신하는 예시적인 운영 시스템(OS)(16)의 블록도가 제공된다. OS(16)는 리눅스 배포판 시스템, 리눅스 기반 운영 시스템 또는 비-리눅스 기반(non-Linux-based) 운영 시스템이 될 수 있다. 장치 하드웨어(20)는 또한 리눅스 커널(18)과 통신한다. 운영 시스템(16)은 하나의 리눅스 커널(18)과 통신하는 제1 운영 시스템 환경(22) 및 제2 운영 시스템 환경(24)을 포함한다. 예를 들어, 제2 미들웨어 운영 시스템 환경(24)은 표준 리눅스 배포판이고, 제1 미들웨어 운영 시스템 환경(22)은 안드로이드(AndroidTM)(오픈 핸드셋 얼라이언스(Open Handset Alliance), www.openhandsetalliance.com) 운영 시스템과 같이 모바일 장치에서의 사용을 위해 의도된 내장형 운영 시스템 환경이다. 리눅스 배포판(16)은 리눅스 커널(18)과 통신하고, 리눅스 커널(18)은 장치 하드웨어(20)와 통신한다. 장치 하드웨어(20)는, 여기에 설명된 바와 같이, 다양한 기능 및 동작을 수행하도록 구성된 컴퓨터 실행가능 명령어들을 저장하는 프로세서(도시 생략)에 결합된 메모리 저장 장치(도시 생략)일 수 있다.
예시적인 운영 시스템(16)은 리눅스 기반 운영 시스템 환경(24)을 위한 우분투(Ubuntu®)(캐노니컬(Canonical Ltd.), www.ubuntu.com)를 포함한다. 다수의 미들웨어 운영 시스템 환경들이 다른 것(들)과 독립적으로 공존하는 것이 특히 의도된다. 운영 시스템(16)에 포함될 수 있는 예시적인 환경들은 안드로이드(AndroidTM) 우분투(Ubuntu®)(캐노니컬(Canonical Ltd.), www.ubuntu.com), 표준 리눅스 기반 환경들, 심비안(심비안 재단(Symbian Foundation Ltd.), www.symbian.com) 및 윈도우 기반 환경들을 포함한다. 대안적인 실시예에서, 두 개보다 더 많은 운영 시스템 환경이 동일한 코어 커널(18) 상에서 독립적으로 공존하도록 구성되는 것이 예상된다.
도 3을 참조하면, 예시적인 운영 시스템의 블록도가 제공된다. 본 예시적인 실시예에서, 제1 OS 환경(22)은 안드로이드(AndroidTM) 기반 운영 환경이고, 제2 OS 환경(24)은 리눅스 기반이다. 제1 운영 시스템 환경(22)은 포털(portal) 서비스 모듈(26), 포털 액티비티(activity) 모듈(28), OS 서비스 모듈(30) 및 OS 어플리케이션 모듈(32)을 포함한다. 제2 운영 시스템 환경(24)은 자원 관리자(34), AIW(Android in a window) 모듈(36), 제2 OS 어플리케이션 모듈(38) 및 제2 OS 서비스 모듈(40)을 포함한다.
AIW 모듈(36)은, 제2 OS(24)가 1차 운영 환경인 동안 GUI(12)에서 제1 OS(22) 어플리케이션 윈도우를 디스플레이하도록 구성된다.
포털 서비스 모듈(26)은 제1 OS(22)를 위한 서비스를 허용하도록 구성된 일련의 명령어들을 포함하고 자원 관리자(34)와의 모든 통신을 관리한다. 장치(10)가 작동하는 동안 포털 서비스 모듈(26)은 항상 실행되는 것이 바람직하다. 또한, 포털 서비스 모듈(26)은 제1 OS(22) 브로드캐스트 이벤트뿐만 아니라 포털 액티비티 모듈(28)에 관련된 액티비티에도 연결된다. 포털 액티비티 모듈(28)은 어플리케이션 또는 일련의 컴퓨터 실행가능 명령어들이고, 제1 OS(22) 스택 위에 위치한 제2 OS(24) 어플리케이션을 나타낸다. 예를 들어, 제2 OS(24)가 우분투(Ubuntu®)인 경우, 포털 액티비티 모듈(28)은 특정한 우분투 어플리케이션을 나타낼 수 있고, 포털 액티비티 모듈(28)이 중점(focus)을 갖는 경우, 우분투는 GUI(12)를 통해 보여진다. 많은 어플리케이션(한 무리의 실행하는 어플리케이션이라고도 함)이 임의의 주어진 운영 환경 내에서 동시에 실행될 수 있다. 논리적으로 말하면, 최상위의 어플리케이션이 "중점"을 갖는 것으로 간주된다.
커널(18)은 한 세트의 드라이버들(42) 및 AEV 모듈(44)을 포함한다. 하드웨어 요소들(20)을 위한 입력 장치 드라이버들이 드라이버들(42)과 함께 포함된다. AEV(44)는 AIW(36)로부터 절대 좌표(absolute coordinate) 및 키보드 이벤트들을 획득하고 그것들을 이벤트 허브로 통과시키는 커널 모듈이다.
운영 시스템(16) 내에서 공존 환경들은 서로 통신한다. 제2 OS(24)의 일부인 자원 관리자(34)는, 제1 OS(22)의 일부인 포털 서비스 모듈(26)과 직접적으로 통신한다. 또한, 제1 OS(22)의 일부인 포털 서비스 모듈(26)은 자원 관리자(34)와 직접적으로 통신한다. 자원 관리자(34)는 제1 OS(22) 및 제2 OS(24)에 의해 공유되는 자원들을 관리하도록 구성된 일련의 명령어들이다. 공유된 자원들은 디스플레이 장치들, 입력 장치들, 파워 관리 서비스들 및 시스템 상태 정보를 포함한다. 또한, 자원 관리자(34)는 하드웨어(20)로의 OS(22, 24) 액세스를 제어하도록 구성된다. 또한, 자원 관리자(34)는 어느 OS(22, 24) 사용자 인터페이스가 GUI(12)를 통해 디스플레이되는지를 식별하고 제어한다.
본 실시예에 따르면, 포털 서비스(26)는 제1 OS(22)로부터 자원 관리자(34)로의 모든 통신의 소스(source)이다. 또한, 포털 서비스(26)는 자원 관리자(34)로부터 제1 OS(22)로의 모든 콜백(callback)을 위한 싱크(sink)이다. 자원 관리자는 상황 발견 가능한 어플리케이션 프로그래밍 인터페이스(API)를 포털 서비스(26)로 제공한다. 이러한 API는 자원 관리자(34)에 의해 언제라도 호출될 수 있도록 구성된다. 자원 관리자(34)는 런타임(runtime) 상황을 획득하고 처리하며, 런타임 상황은 자원 관리자가 상태 머신(state machine)을 유지하는 것을 가능하게 해준다. 제1 OS(22)를 위해, 포털 서비스(26)는 런타임 상황을 그것들을 요구하는 프로세스들에 제공한다. 마찬가지로, 포털 서비스(26)는 상황 정보를 제공하는 프로세스들로부터 상황 업데이트를 요청하고 수신한다. 제2 OS(24)를 위한 유사 통신은 자원 관리자(34)에 의해 제어되고, 자원 관리자(34)는 런타임 상황을 그것을 요청하는 프로세스들에 제공한다. 자원 관리자(34)는 상황 정보를 제공하는 다양한 프로세스로부터 상황 업데이트를 요청하고 수신한다. 커널(18)에 논리적으로 관련된 장치 드라이버들(42)은 런타임 상황 정보를 제공하는 프로세스들뿐만 아니라 자원 관리자(34)와 직접적으로 통신한다. 예를 들어, API는 디스플레이들, 터치스크린들 또는 GUI(12)와 같은 사용자 인터페이스 장치들로의 접속을 중재한다. 또 다른 예시로, API는 배터리들 및/또는 AC/DC 콘센트들과 같은 전원 입력 장치들로의 접속을 중재한다.
제1 OS(22) 및 제2 OS(24)는 다른 것으로부터 독립적이고, 다른 것에 대하여 공존한다. 각각의 OS(22, 24)는 완전하게 기능하는 운영 시스템 환경이며, 다른 운영 시스템 환경이 기능하는 것을 필요로 하지 않는다. 상기 두 개의 운영 시스템 환경은 동일한 장치(10)에 존재하며 다른 것에 대하여 100% 독립적이다. 상술한 바와 같이, 제1 및 제2 OS(22, 24)는 가상화 또는 에뮬레이션 방식으로 공존하지 않고, 하나의 커널(18) 상에서 실제로 동작한다. 대신에, 공통 C 런타임 환경에 영향을 줄 필요가 없기 때문에, OS(22, 24) 양쪽 모두가 그들 각각의 원래 환경(native environments)에서 실행하고, OS(22, 24) 양쪽 모두가 다시 컴파일되지 않는 런타임 공존이 존재한다. 사용자의 컴퓨팅 경험을 방해받지 않으면서 사용자는 OS(22, 24) 중 어느 하나에 대하여 전적으로(purely) 코딩된 어플리케이션에 액세스할 수 있다.
도 4를 참조하면, 블록도는 안드로이드(Android®) OS(22) 및 우분투(UbuntuTM) OS(24)를 위한 예시적인 공존 방식을 제공한다. 각각의 OS(22, 24)는 개별적인 런타임 환경에서 동작하고, 장치(10)가 동작하는 동안 프로그램들 및/또는 프로세스들을 위한 소프트웨어 서비스들을 제공한다. 안드로이드 프로세스들(46) 및 안드로이드 라이브러리들(48)은 바이오닉 C 라이브러리(Bionic C library)(50)에 접속하고, 바이오닉 C 라이브러리(Bionic C library)(50)는 안드로이드 환경에 특화되도록 최적화되고 수정된다. 우분투 프로세스들(52) 및 우분투 라이브러리들(54)은 Glibc C 라이브러리(56)에 접속하고, Glibc C 라이브러리(56)는 다수의 표준 데스크톱 리눅스 기반 시스템들에서 사용된 GNU C 라이브러리이다. 각각의 OS 환경은 다른 운영 환경에 충돌하지 않고 그것의 각각의 C 라이브러리에서 실행된다.
도 5를 참조하면, 도 4에서 설명된 제1 OS(22)와 제2 OS(24) 사이의 더 상세한 통신 경로가 제공된다. 프로세스간 통신(inter-process communication, IPC) 시스템은 제1 OS(22) 및 제2 OS(24) 사이의 환경간 통신 흐름을 관리하도록 구성된다. 포털 서비스(26)는 DBUS 바인딩(Binding)(58)과 통신하고, DBUS 바인딩(58)은 DBUS 라이브러리(60)와 통신하도록 구성된 프로그래밍 언어 및 실행가능 명령어들을 포함하는 소프트웨어 패키지이다. 자원 관리자(34)는 Glib DBUS 바인딩(62)과 통신하고, Glib DBUS 바인딩(62)은 또한 제2 OS(24)를 위해 구성된 DBUS 라이브러리(64)와 통신하도록 구성된 프로그래밍 언어 및 실행가능 명령어들을 포함하는 소프트웨어 패키지이다. 제1 OS(22) DBUS 라이브러리(60) 및 제2 OS(24) 라이브러리(64) 양쪽 모두는 DBUS 데몬(Daemon)(66)을 통해 통신하고, DBUS 데몬(66)은 논리적으로 제2 OS(24)의 일부이고, 두 개의 운영 환경 사이에서 통신 링크로서 기능한다.
도 6을 참조하면, 부트 시퀀스(boot sequence)를 나타내는 순서도가 제공된다. 부트 시퀀스는 공통의 단계 및 운영 시스템 환경 특정 단계 양쪽 모두를 포함한다. 실제 부트 시퀀스는 부팅 시퀀스(booting sequence)를 명령하는 미리 결정된 장치 상태에 관련된 규칙들에 따른다. 예를 들어, 장치가 모니터와 같은 주변 장치에 연결된 경우, 장치 상태는 도킹 모드(docked mode)로 간주되고, 제2 OS(24)가 디폴트 1차 환경이다. 대안적으로, 장치(10)가 주변 장치에 연결되지 않는 경우, 그것은 모바일 모드이고, 제1 OS(22)가 디폴트 1차 운영 환경이다. 그러나, 2차 운영 환경은 1차 환경과 동시에 시작되고, 장치(10) 상태가 변환하고 2차 환경이 1차 환경이 되도록 전환되는 경우 백그라운드(background)에서 동작한다. 예를 들어, 장치(10)가 도킹 모드이고 주변 장치가 플러그가 뽑힌 상태인 경우, 모바일 모드로 자동 전환되어서, 2차 환경이 1차 환경이 되는데, 그 반대의 경우도 마찬가지이다.
단계(68)에서 부트 시퀀스가 초기화되고, 이어서 단계(70)에서 코어 리눅스 커널(18)을 시작한다. 부트로더(bootloader) 프로그램은 커널을 시작하기 전에 초기화된다. 리눅스 커널(18)이 초기화된 후, 단계(72)에서 커널은 사용자 공간 스크립트를 시작한다. 단계(74)에서 자원 관리자(34)가 시작되고, 이어서 단계(76)에서 모드 상태를 식별한다. 일단 모드 상태가 식별되면, 단계(78)에서 참조 라이브러리가 액세스되어 식별된 모드 상태에 관련되고/관련되거나 식별된 모드 상태에 의해 명령된 기준을 결정한다. 단계(80)에서, 제1 OS(22) 및 제2 OS(24) 양쪽 모두에 공통된 서비스가 시작된다. 단계(76)에서 결정된 모드 상태가 단계(82)에서 참조된다. 모바일 상태가 식별되고 제1 OS(22)가 1차 운영 환경인 경우, 단계(84)에서 제1 OS 초기화 스크립트가 시작되고, 이어서 단계(86)에서 제2 OS 초기화 스크립트가 시작된다. 단계(82)에서 도킹 상태로 가르켜지고 제2 OS(24)가 1차 운영 환경인 경우, 단계(88)에서 제2 OS(24) 초기화 스크립트가 시작되고, 이어서 단계(90)에서 제1 OS(22) 초기화 스크립트를 시작한다. 어떠한 환경이 1차인지에 관계없이, 단계(92)에서 장치(10)가 동작하기 전에 양쪽 환경 모두 시작되고 실행된다. 단계(80)에서 공통 서비스가 최초로 시작되기 때문에, 모든 의도 및 목적을 위해 1차 및 2차 환경이 동시에 시작된다. 그러나, 1차 환경 특정 서비스들은, 장치 상태에 기초하여, 2차 환경 특정 서비스들 바로 전에 시작된다. 공통 서비스 시작과 환경 특정 시작이 구분되므로, 장치(10)는 다수의 공존하고 독립적인 운영 환경을 이용하여 빠르게 동작할 수 있다.
도 7을 참조하면, 장치(10)가 모바일 모드(94)이고 제1 OS(22)가 1차 제어를 하는 동안 제2 OS(24) 어플리케이션을 시작하기 위한 단계들을 나타내는 순서도가 제공된다. 단계(96)에서 제2 OS(24) 어플리케이션, 예를 들어 모바일 PC가 선택된다. 모바일 PC는, 장치(10)가 모바일 모드로 동작하고 제1 OS(22)가 1차 제어를 하는 동안, 전체 PC 보기(다르게는 넷북 보기(view)로 칭해짐)를 제공하는 제1 OS(22)에서의 어플리케이션이다. 대안적인 실시예에서, 제2 OS(24)로부터의 각각의 어플리케이션은 제1 OS(22) 메뉴에 열거되고 개별적으로 시작될 수 있으며, 넷북 보기와 유사할 수 있다.
단계(98)에서 포털 서비스(26)는, 포털 액티비티(28)가 중점(focus)을 획득하였음을 나타내는 상황 업데이트 통신을 자원 관리자(34)에게 전송한다. 그 후에, 단계(100)에서, 자원 관리자(34)는 제1 OS(22) 입력을 사용 불가능하게 하고 가상 터미널을 전환시킨다. 단계(102)에서 모바일 PC 어플리케이션이 GUI(12)에서 디스플레이된다. 모바일 PC 어플리케이션을 동작시키는 동안, 단계(104)에서 비요청 이벤트(unsolicited event)가 발생하거나 단계(106)에서 사용자 요청 이벤트(user-solicited event)가 발생할 수 있다. 비요청 이벤트는 긴급(time critical) 및 비긴급(non-time critical) 이벤트를 포함한다. 예를 들어 긴급 비요청 이벤트는 전화 통화 또는 예정되거나 또는 예정되지 않은 알람을 포함한다. 또한, 예를 들어, 비긴급 비요청 이벤트는 SMS 메시지, 이메일 메시지 또는 장치 업데이트 알림을 포함한다. 이벤트(104, 106)가 발생한 후, 단계(108)에서 포털 서비스(26)는 포털 액티비티(28)가 중점을 상실했음을 나타내는 통신을 자원 관리자(34)에게 전송한다. 단계(110)에서, 자원 관리자(34)는 입력 이벤트 흐름을 가능하게 할 것을 제1 OS(22)에 요청하고 가상 터미널을 전환시킨다. 예를 들어, 본 실시예는 제1 OS(22)와 제2 OS(24) 사이에 디스플레이 제어를 전환하기 위한 개별적인 가상 터미널들을 포함한다. 일반적으로, 가상 터미널은, 시스템 사용자가 윈도우 기반 보기(view)와 시스템 콘솔 사이에서 디스플레이 제어를 전환할 수 있도록 해주는 리눅스 어플리케이션이다.
단계(112)에서 비요청 이벤트가 발생하거나 사용자가 "홈(Home)" 키를 선택하는 경우, 비요청 이벤트가 계속되거나 사용자가 GUI(12)의 "홈" 메뉴로부터 다른 어플리케이션을 동작시키는 동안, 단계(114)에서 포털 액티비티(28)는 백그라운드로 전환된다. 이와 달리, 단계(112)에서 사용자가 "뒤로가기(Back)" 키를 선택한 경우, 단계(94)에서 포털 액티비티(28)는 어플리케이션을 종료하고 장치(10)는 유휴상태(idle)의 메인 메뉴로 되돌아간다. 홈 키, 뒤로가기 키를 선택하는 것, 또는 새로운 어플리케이션을 초기화하는 것과 같은 사용자 개시 이벤트들은 예시적인 요청 이벤트이다. 이벤트가 발생할 때, 단계(118)에서 결정이 이루어지고, 이벤트가 비요청 이벤트인 경우 단계(120)에서 제1 OS(22)가 중단된다. 이와 달리, 이벤트가, 사용자가 "홈" 키를 선택한 것과 같은 요청 이벤트인 경우, 단계(94)에서 장치가 유휴상태 메인 메뉴로 되돌아간다. 단계(120)에서의 OS 중단 후에, 단계(122)에서 중단하는 어플리케이션이 종료되고 포털 액티비티(28)는 중점을 다시 획득하고 장치(10)는 단계(98)로 되돌아간다.
다른 실시예에서는, 가상 터미널 기능이 이용되지 않는다. 모바일 모드인 동안 제2 OS(24) 어플리케이션을 렌더링(rendering)하는 것은 VNC와 유사한 어플리케이션을 통해 수행될 수 있다. 우분투(Ubuntu)와 같은 제2 OS(24) 어플리케이션은 VNC 클라이언트로 원격으로 렌더링될 수 있다. 또한, 이러한 실시예는 제1 OS(22)로부터 물리적 디스플레이 제어를 가져가지 않는다.
또 다른 대안 실시예에서, 제1 OS(22)에 의해 생성된 비긴급 알림은 제2 OS(24) 보기 내의 패널(panel)에서 식별되고 열거된다. 패널에서 알림을 열거하는 것에 의해, 제2 OS(24)가 1차 OS인 경우 제1 OS(22) 상황 정보는 제2 OS(24) 보기와 통합된다. 사용자가 한가할 때, 패널은 비긴급 상태 알림을 나타내기 위해 접속된다. 패널이 관여된 경우, 제1 OS(22)는 1차 OS가 되고 알림이 보여지게 한다. 예를 들어, 패널은 슬라이드 제스쳐와 함께 상황 영역으로부터 내려오는 풀 다운(pull-down) 리스트일 수 있다.
도 8을 참조하면, 제1 OS(22)가 1차 제어를 하는 동안 제2 OS(24) 어플리케이션을 시작하기 위한 단계들을 나타내는 메시지 순서도가 제공된다. 순서도는 포털 액티비티 모듈(28)과 자원 관리자(34) 사이에서 전송되는 신호들의 위로부터 아래로의 단계적인 흐름을 제공한다. 포털 액티비티(28)는 신호(124)를 수신하여 포털을 시작하고 입력을 사용하지 못하게 한다. 신호(126)가 모드 상태를 제2 OS(24)가 1차 제어를 획득하는 것으로 전환하기 전에 제1 OS(22)가 1차 제어를 한다. 신호(126)는 포털 액티비티(28)로부터 자원 관리자(34)로 전송되고, 자원 관리자(34)는 포털 액티비티(28)로 전송되는, 제2 OS(24)가 1차 OS임을 알리는 응답 신호(128)를 생성한다. 신호(130)는 포털 액티비티(28)에 의해 수신되고 입력을 가능하게 한다. 제2 OS(24)로부터 제1 OS(22)로 모드 상태를 변경시키는 신호(132)가 포털 액티비티(28)로부터 자원 관리자(34)로 전송된다. 신호(132)를 수신한 후, 자원 관리자(34)는 가상 터미널을 전환한다. 그 후, 자원 관리자(34)는 제1 OS(22)가 1차임을 알리는 상황 업데이트 신호(134)를 포털 액티비티(28)로 전송한다.
도 9를 참조하면, 제1 운영 환경으로부터 제2 운영 환경으로 전환하는 것에 관련된 단계들을 나타내는 순서도가 제공된다. 단계(136)에서 장치(10)는 모바일 모드(OS1(22))에서 유휴상태이다. 단계(138)에서 장치(10)는 도킹 스테이션(docking station)에 연결되거나 또는 주변 장치에 연결된다. 예를 들어 HDMI 연결이 장치(10)와 모니터 또는 텔레비젼 사이에 설정될 수 있다. 단계(140)에서 자원 관리자(34)는 업데이트된 연결 상황을 통지받고, 단계(142)에서 연결 상황 변화에 응답하여 제1 OS(22)가 디스에이블된다. 단계(144)에서 제1 OS(22) 포털은 공유된 메모리 프레임버퍼를 전환하고, 이어서 단계(146)에서 자원 관리자(34)가 가상 터미널을 전환한다. 단계(148)에서 모바일 PC 어플리케이션이 보이는 경우, 단계(150)에서 포털 액티비티(26)는 종료한다. 이와 달리, 모바일 PC 어플리케이션이 보이지 않는 경우, 단계(152)에서 도킹 모드가 인에이블된다. 단계(154)에서 장치 상태가 변하는 경우, 단계(156)에서 자원 관리자(34)는 상황 상태 업데이트를 수신한다. 예를 들어, 사용자가 장치(10)를 주변 장치에 연결시키기 위해 사용된 HDMI 케이블 또는 유사한 커넥터를 제거하는 경우, 시스템의 상태가 변한다. 이벤트 상태 업데이트(156) 이후에, 제1 OS(22)가 인에이블되고(158), 장치가 모바일 모드로 동작한다. 단계(160)에서 프레임버퍼 전환이 요청되고 단계(162)에서 가상 터미널 전환이 요청되는데, 이들 둘 다 포털 액티비티(26)에 의해 수행된다. 단계(162) 이후에, 장치는 모바일 모드에서의 유휴상태(136)로 되돌아간다.
도 10을 참조하면, 장치(10)가 모바일 모드(OS1)로부터 도킹 모드(OS2)로 전환하는 경우 수행되는 단계들을 나타내는 메시지 순서도가 제공된다. 장치(10)는 모바일 모드에서 동작하고 제1 OS(22)가 1차 OS이다. 케이블 신호(164)는 자원 관리자(34)에 의해 수신되고, HDMI 또는 대체 하드와이어(hardwire) 플러그가 장치(10)에 부착되었음을 알린다. 케이블 신호(164)는 예시적인 모드 상태 초기화 변경 신호이다. 대안적인 실시예에서, 플러그는 장치(10)와 주변 장치 사이의 무선 통신이 될 수 있고, 무선 통신이 사용 불가능하게 됨에 따라 모드 상태 초기화 변경 신호가 생성될 것이다. 모바일 모드로부터 도킹 모드로 장치를 전환하는 일련의 신호들이 초기화된다. 모드 상황 전환을 알리고 주요 데이터 입력을 사용 불가능하게 하는 신호(164)가 자원 관리자(34)로부터 포털 액티비티(28)로 전송된다. 포털 액티비티(28)는, 제2 OS(24)가 현재 1차임을 식별시키고 가상 터미널을 전환시키는 신호(168)를 자원 관리자(34)로 전송한다. 제2 OS(24)를 1차로서 프레임버퍼의 소유권을 취득하였음을 식별시키는 신호(170)가 자원 관리자(34)로부터 포털 액티비티로 전송된다. 장치가 현재 도킹 모드이고 제2 OS(24)가 1차 OS임을 식별시키는 모드 상태 변경 확인 신호(172)가 포털 액티비티(28)로부터 자원 관리자(34)로 전송된다. 시스템 모드 업데이트 신호는 자원 관리자(34)로부터 AIW(36)로 전송된다.
도 11을 참조하면, 장치(10)가 도킹 모드(OS2)로부터 모바일 모드(OS1)로 전환하는 경우 수행되는 단계들을 나타내는 메시지 순서도가 제공된다. 케이블 신호(176)는 자원 관리자(34)에 의해 수신되고, HDMI 또는 대체 하드와이어 플러그가 장치(10)로부터 제거되었음을 알린다. 플러그의 제거는 주변 장치(도시 생략)가 더이상 장치(10)와 통신하지 않음을 나타낸다. 대안적인 실시예에서, 플러그는 장치(10)와 주변 또는 대체 장치(도시 생략) 사이에서 무선 통신을 할 수 있다. 장치를 도킹 모드로부터 모바일 모드로 전환하는 일련의 신호들이 초기화된다. 모드 상황 전환을 알리고 주요 데이터 입력 및 주요 프레임버퍼를 인에이블시키는 신호(178)가 자원 관리자(34)로부터 포털 액티비티(28)로 전송된다. 포털 액티비티(28)는 제1 OS(22)가 현재 1차임을 식별시키고 가상 터미널을 전환하는 신호(180)를 자원 관리자(34)로 전송한다. 제1 OS(22)를 1차로서 프레임버퍼의 소유권을 취득하였음을 식별시키는 신호(182)가 자원 관리자(34)로부터 포털 액티비티로 전송된다. 장치가 현재 모바일 모드이며 제1 OS(22)가 1차 OS임을 식별시키는 모드 상태 변경 확인 신호(184)가 포털 액티비티(28)로부터 자원 관리자(34)로 전송된다. 시스템 모드 갱신 신호는 자원 관리자(34)로부터 AIW(36)로 전송된다.
도 12를 참조하면, 단계(188)에서 장치(10)는 도킹 모드에서 유휴상태이고 제2 OS(24)는 1차 운영 환경이다. 단계(190)에서 비요청 이벤트가 발생하거나 단계(192)에서 사용자가 윈도우 어플리케이션에서 OS1(22)을 선택한다면, 단계(194)에서 윈도우 어플리케이션에서의 OS1(22)이 시작된다. 예를 들어, 안드로이드(Android)가 모바일 운영 환경(22)이라면, AIW(Android in a Window) 어플리케이션이 시작된다. AIW 어플리케이션은, 장치가 도킹 모드로 동작하는 동안 사용자가 안드로이드 어플리케이션들에 액세스할 수 있게 해준다. 단계(194)에서 자원 관리자(34)는 또한 상황 업데이트를 통지받는다. 단계(196)에서 제1 OS(22)로의 입력이 가능해지고, 이어서 단계(198)에서 제1 OS 디스플레이 업데이트 통지가 전송된다. 단계(200)에서 AIW 어플리케이션이 동작하고 중점을 갖는다. 단계(202)에서 AIW 어플리케이션이 종료되거나 또는 단계(204)에서 사용자가 AIW를 중점으로부터 제거하는 경우, 단계(206)에서 제1 OS(22) 입력이 디스에이블된다. 단계(208)에서 제1 OS(22) 디스플레이가 중단된다. 단계(210)에서 AIW 어플리케이션이 중단되는 경우, 시스템은 유휴상태 도킹 모드(188)로 되돌아간다. 이와 달리, AIW 어플리케이션이 중점이 아닌 경우, 단계(212)에서 어플리케이션은 이러한 상태에서 동작한다. 단계(214)에서 비요청 이벤트의 경우 또는 단계(216)에서 AIW 어플리케이션과의 요청된 상호작용의 경우, 단계(218)에서 AIW가 중점을 다시 획득한다. AIW가 중점이 아닌 동안 사용자는 AIW 어플리케이션을 선택하고 AIW 윈도우와의 상호작용을 계속할 수 있고, AIW를 다시 중점으로 하고 상황 업데이트를 자원 관리자(34)에게 통지한다. AIW가 본 실시예의 경우 안드로이드인 제1 OS(22)에 중점을 다시 획득한 후, 단계(220)에서 입력이 인에이블된다. 단계(222)에서 제1 OS(22) 디스플레이 업데이트 통지가 자원 관리자(34)로 전송되고, 이어서 시스템이 단계(200)로 되돌아오는데, 여기서 AIW는 인에이블되고 중점 상태가 된다. 어플리케이션이 중점 상태인 경우, 그 어플리케이션은 실행 중인 한 무리의 어플리케이션들의 논리적 최상위에 있다.
대안적인 실시예에서, 장치(10)가, 장치(10)를 도킹하거나 분리하는 것 외의 이벤트들에 기초하여 모드 상태들 사이에서 전환될 수 있음이 고려된다. 예를 들어, 장치(10)가 미리 설정된 기간의 시간 동안 정지되는 경우, 다른 장치 상황에 관계없이, 장치(10)는 가장 에너지 효율적인 모드 상태에서 동작하도록 프로그램되어질 수 있다. 또 다른 예시에서, 장치가 주변 장치와 연결됨에도 불구하고, 사용자는 모드 상태를 도킹 상태로부터 모바일 상태로 전환할 수 있다. 또한, 장치(10)에 연결된 주변 장치의 종류는, 자동 모드 상태 변경 시퀀스가 초기화되는지 또는 사용자가 모드 상태 변경 요청을 제공받는지 여부에 영향을 줄 수 있다. 이에 의해 사용자는 장치(10)를 동작시키는 모드 상태를 선택할 수 있다. 또 다른 대안적인 예시에서, 특정 장치(10) 사용, 및 장치 메모리(20)에서 사용가능한 어플리케이션들에 기초하여 추가 모드 상태들이 고려된다.
본 발명은 여기에 포함된 실시예 및 설명에 제한되지 않으며, 본 실시예의 일부, 및 이어지는 청구항의 범위 내에 있는 다른 실시예들의 요소들의 결합을 포함하는 실시예의 수정된 형태를 포함하는 것이 명확하게 의도된다.

Claims (19)

  1. 모바일 장치를 제1 운영 환경으로부터 제2 운영 환경으로 전환하는 방법으로서,
    코어 커널에 결합된 적어도 두 개의 공존하는 독립적 미들웨어 운영 환경을 초기화하는 단계 - 상기 미들웨어 운영 환경들 각각은 대응하는 어플리케이션 요소를 가지고, 상기 적어도 두 개의 공존하는 독립적 미들웨어 운영 환경은 가상화 또는 에뮬레이션 방식과는 독립적으로 동시에 상기 코어 커널 상에서 직접 동작함 -;
    상기 장치의 동작에 적어도 부분적으로 기초하여 모드 상태 초기화 변경 신호를 수신하는 단계;
    상기 장치의 제1 운영 환경 제어를 해제(releasing)하는 단계; 및
    상기 장치의 제2 운영 환경 제어를 개시하는 단계
    를 포함하는 운영 환경 전환 방법.
  2. 제1항에 있어서,
    자원 관리자 모듈 및 포털 액티비티 모듈은, 상기 장치의 운영 환경 제어를 전환시키는 일련의 신호들을 생성하도록 구성되는 운영 환경 전환 방법.
  3. 제1항에 있어서,
    상기 제2 운영 환경은 리눅스(Linux) 기반인 운영 환경 전환 방법.
  4. 제2항에 있어서,
    상기 자원 관리자 모듈은 상기 운영 환경 전환을 개시시키는 신호를 상기 포털 액티비티 모듈로 전송하는 운영 환경 전환 방법.
  5. 제1항에 있어서,
    상기 제1 운영 환경은 모바일 컴퓨팅을 위해 구성된 내장형 운영 시스템인 운영 환경 전환 방법.
  6. 모바일 장치를 동작시키는 방법으로서,
    컴퓨터 프로세서에 결합된 메모리 저장 유닛을 갖는 모바일 장치를 초기화하는 단계 - 상기 메모리 저장 유닛은 공통 커널(common kernel)에서 적어도 두 개의 운영 시스템 환경을 운영할 수 있는 컴퓨터 실행 가능 명령어들을 가지고, 상기 적어도 두 개의 운영 시스템 환경은 가상화 또는 에뮬레이션 방식 없이 동시에 상기 공통 커널 상에서 직접 동작함 -;
    제1 운영 환경이 상기 장치를 1차 제어하는 동안 제2 운영 환경의 어플리케이션을 시작하는 단계; 및
    상기 제2 운영 환경으로부터 데이터 입력을 가능하게 하는 단계
    를 포함하는 모바일 장치 동작 방법.
  7. 제6항에 있어서,
    상기 제1 운영 환경은 리눅스(Linux) 기반 운영 시스템인 모바일 장치 동작 방법.
  8. 제6항에 있어서,
    상기 제2 운영 환경은 실시간 운영 시스템인 모바일 장치 동작 방법.
  9. 제8항에 있어서,
    상기 실시간 운영 시스템은 안드로이드(Android)인 모바일 장치 동작 방법.
  10. 제9항에 있어서,
    상기 제1 운영 환경은 우분투(Ubuntu)인 모바일 장치 동작 방법.
  11. 모바일 컴퓨팅 장치를 동작시키는 방법으로서,
    공통 커널(common kernel)에서 적어도 두 개의 독립적 운영 시스템을 갖는 모바일 장치의 동작을 개시하는 단계 - 상기 적어도 두 개의 독립적 운영 시스템은 가상화 또는 에뮬레이션 방식 없이 동시에 상기 공통 커널 상에서 직접 동작함 -;
    상기 적어도 두 개의 독립적 운영 시스템으로부터 1차 및 2차 운영 시스템을 식별하는 단계; 및
    상기 1차 운영 시스템이 상기 장치를 제어하는 동안 2차 운영 시스템 어플리케이션을 시작하는 단계
    를 포함하는 모바일 컴퓨팅 장치 동작 방법.
  12. 제11항에 있어서,
    상기 시작하는 단계는 비요청 이벤트(unsolicited event)에 의해 개시되는 모바일 컴퓨팅 장치 동작 방법.
  13. 제12항에 있어서,
    상기 비요청 이벤트는, 전화 통화, 인스턴트 메시지 및 알람 신호를 포함하는 그룹으로부터 선택되는 모바일 컴퓨팅 장치 동작 방법.
  14. 제12항에 있어서,
    상기 1차 운영 시스템은 상기 2차 운영 시스템 어플리케이션이 종료된 후 중점(focus)을 다시 획득하는 모바일 컴퓨팅 장치 동작 방법.
  15. 모바일 장치로서,
    공통 커널(common kernel)에 위치한 제1 독립적 운영 시스템 및 제2 독립적 운영 시스템 - 상기 제1 및 제2 독립적 운영 시스템은 가상화 또는 에뮬레이션 방식과는 독립적으로 동시에 상기 공통 커널 상에서 직접 동작함 - ; 및
    컴퓨터 실행 가능 명령어들에 적어도 부분적으로 기초하여, 제1 운영 환경 및 제2 운영 환경 사이에서 상기 장치의 1차 제어를 전환하도록 구성된 프로세서
    를 포함하는 모바일 장치.
  16. 제15항에 있어서,
    상기 제1 운영 시스템은 상기 장치를 1차 제어하는 모바일 장치.
  17. 제16항에 있어서,
    상기 프로세서는, 상기 제1 운영 시스템이 상기 장치의 제어를 유지하는 동안 제2 운영 시스템 어플리케이션을 시작하도록 구성되는 모바일 장치.
  18. 제16항에 있어서,
    상기 프로세서는 모드 상태 초기화 변경 신호에 적어도 부분적으로 기초하여 상기 장치의 제어를 상기 제2 운영 시스템으로 전환하는 모바일 장치.
  19. 제18항에 있어서,
    상기 장치는 이동 전화기이고 상기 제1 운영 시스템은 안드로이드(Android) 기반 시스템인 모바일 장치.
KR1020147007035A 2009-07-20 2010-07-20 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법 KR101702729B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US22695509P 2009-07-20 2009-07-20
US61/226,955 2009-07-20
US12/839,069 US8868899B2 (en) 2009-07-20 2010-07-19 System and method for switching between environments in a multi-environment operating system
US12/839,069 2010-07-19
PCT/US2010/042523 WO2011011362A2 (en) 2009-07-20 2010-07-20 System and method for switching between environments in a multi-environment operating system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020127001753A Division KR20120030559A (ko) 2009-07-20 2010-07-20 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20140043168A KR20140043168A (ko) 2014-04-08
KR101702729B1 true KR101702729B1 (ko) 2017-02-06

Family

ID=43499618

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147007035A KR101702729B1 (ko) 2009-07-20 2010-07-20 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법
KR1020127001753A KR20120030559A (ko) 2009-07-20 2010-07-20 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127001753A KR20120030559A (ko) 2009-07-20 2010-07-20 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법

Country Status (7)

Country Link
US (1) US8868899B2 (ko)
EP (1) EP2457161A2 (ko)
KR (2) KR101702729B1 (ko)
CN (2) CN102934085B (ko)
BR (1) BR112012001228B1 (ko)
MY (1) MY162244A (ko)
WO (1) WO2011011362A2 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US9098437B2 (en) * 2010-10-01 2015-08-04 Z124 Cross-environment communication framework
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US20130024812A1 (en) * 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US9372711B2 (en) * 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9348633B2 (en) * 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) * 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) * 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US8718611B2 (en) * 2009-09-30 2014-05-06 Avaya Inc. Method for the selection of an active software environment of a virtualized telecommunications terminal
US8995630B1 (en) 2010-08-01 2015-03-31 Tulsa Holdings, Llc Telephony and applications communication in a non-mobile telephone system
CN103282875B (zh) * 2010-10-01 2017-04-12 Flex Electronics ID Co.,Ltd. 多操作系统
US9046992B2 (en) 2010-10-01 2015-06-02 Z124 Gesture controls for multi-screen user interface
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US8983536B2 (en) 2010-10-22 2015-03-17 Google Technology Holdings LLC Resource management in a multi-operating environment
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
US10089093B1 (en) 2011-05-24 2018-10-02 BlueStack Systems, Inc. Apparatuses, systems and methods of switching operating systems
US8924958B1 (en) 2011-05-24 2014-12-30 BlueStack Systems, Inc. Application player
US10791538B1 (en) 2011-07-06 2020-09-29 BlueStack Systems, Inc. Cloud-based data synchronization
TWI496083B (zh) * 2011-08-30 2015-08-11 Compal Electronics Inc 雙作業系統的操作方法、可攜式電子裝置以及對接擴充系統
US9495012B2 (en) 2011-09-27 2016-11-15 Z124 Secondary single screen mode activation through user interface activation
US8966004B2 (en) 2011-09-29 2015-02-24 Comcast Cable Communications, LLC. Multiple virtual machines in a mobile virtualization platform
US9445392B1 (en) 2011-10-07 2016-09-13 BlueStack Systems, Inc. Method of providing non-native notifications and system thereof
US8949823B2 (en) 2011-11-16 2015-02-03 Flextronics Ap, Llc On board vehicle installation supervisor
DE112012004785T5 (de) 2011-11-16 2014-08-07 Flextronics Ap, Llc Merkmalerkennung zum Konfigurieren einer Fahrzeugkonsole und zugeordnete Vorrichtungen
US9173100B2 (en) 2011-11-16 2015-10-27 Autoconnect Holdings Llc On board vehicle network security
US9116786B2 (en) 2011-11-16 2015-08-25 Flextronics Ap, Llc On board vehicle networking module
US9396041B2 (en) * 2012-02-01 2016-07-19 Google Technology Holdings LLC Optimization of resource usage in a multi-environment computing system
WO2013159289A1 (en) * 2012-04-25 2013-10-31 Hewlett-Packard Development Company Switching of operating systems
US20130293573A1 (en) 2012-05-02 2013-11-07 Motorola Mobility, Inc. Method and Apparatus for Displaying Active Operating System Environment Data with a Plurality of Concurrent Operating System Environments
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
CN102970413B (zh) * 2012-10-26 2014-11-12 广东欧珀移动通信有限公司 一种智能手机运行方法
CN104123147A (zh) * 2013-04-25 2014-10-29 深圳市天方信安电子科技有限公司 一种双系统之间实现热切换的电子装置
CN103297614B (zh) * 2013-05-03 2015-07-08 广东欧珀移动通信有限公司 一种双系统智能终端运行方法及装置
CN104881381B (zh) * 2014-02-28 2018-01-26 神讯电脑(昆山)有限公司 电脑装置及其数据路径切换装置与方法
CN104427097B (zh) * 2013-08-26 2017-06-27 联想(北京)有限公司 终端设备以及切换方法
US9411601B2 (en) * 2013-10-29 2016-08-09 Intel Corporation Flexible bootstrap code architecture
KR102277258B1 (ko) 2014-02-27 2021-07-14 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 애플리케이션 처리 방법
WO2015130021A1 (ko) * 2014-02-27 2015-09-03 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 애플리케이션 처리 방법
EP4224315A1 (en) * 2014-03-19 2023-08-09 Huawei Device Co., Ltd. Application data synchronization method and apparatus
US9697010B2 (en) 2014-03-25 2017-07-04 Microsoft Technology Licensing, Llc User selectable operating systems
US9766944B2 (en) 2014-03-25 2017-09-19 Microsoft Technology Licensing, Llc Dynamic partition dual boot mobile phone device
CN103893013A (zh) * 2014-03-26 2014-07-02 上海武彬包装制品有限公司 三腔室输液袋及其生产方法
US9367332B2 (en) * 2014-04-18 2016-06-14 Getac Technology Corporation Sensing data reading device and method
CN104268017A (zh) * 2014-09-19 2015-01-07 福建升腾资讯有限公司 一种同时运行Android/Linux操作系统的方法
CN105554259B (zh) * 2015-12-11 2019-07-19 北京元心科技有限公司 基于多系统的防止电话冲突方法和智能终端
CN105677463B (zh) * 2015-12-31 2019-06-14 北京元心科技有限公司 一种实现系统间协同切换的方法和装置
CN108255683B (zh) * 2016-12-29 2021-06-22 华为技术有限公司 终端中消息提示的方法和终端
CN107341407B (zh) 2017-07-26 2021-03-23 惠州Tcl移动通信有限公司 基于终端的多安卓系统实现方法、存储介质及终端
KR102447434B1 (ko) * 2018-01-10 2022-09-27 삼성전자주식회사 전자 장치 및 그 제어 방법
CN108829483A (zh) * 2018-06-21 2018-11-16 肇庆高新区徒瓦科技有限公司 一种移动设备操作系统切换方法和装置
KR102631745B1 (ko) 2018-10-16 2024-02-01 삼성전자주식회사 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체
KR20200042793A (ko) 2018-10-16 2020-04-24 삼성전자주식회사 복수의 운영체제들을 실행하는 전자장치 및 그 제어 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050765A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Programming language abstractions for creating and controlling virtual computers, operating systems and networks

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19648422C2 (de) * 1996-11-22 2000-03-30 Hans Beckhoff Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm
US6178503B1 (en) * 1998-09-11 2001-01-23 Powerquest Corporation Managing multiple operating systems on a single computer
US6691146B1 (en) * 1999-05-19 2004-02-10 International Business Machines Corporation Logical partition manager and method
US6460136B1 (en) * 1999-07-12 2002-10-01 Hewlett-Packard Co., Method and apparatus for loading an operating system kernel from a shared disk memory
GB2369959A (en) 2000-12-08 2002-06-12 Ubinetics Ltd Holder for connecting a mobile communications device to a screen
US7461144B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with enhanced security
US7231531B2 (en) * 2001-03-16 2007-06-12 Dualcor Technologies, Inc. Personal electronics device with a dual core processor
US20020151334A1 (en) * 2001-04-11 2002-10-17 Motorola, Inc Communications device with call frequency analyzer
US9098437B2 (en) * 2010-10-01 2015-08-04 Z124 Cross-environment communication framework
US20030065738A1 (en) * 2001-10-01 2003-04-03 Thumb Logic, Inc. Wireless information systems and methods
JP2003196096A (ja) * 2001-12-07 2003-07-11 Internatl Business Mach Corp <Ibm> コンピュータシステム、その起動制御方法及びプログラム
EP1635255A3 (en) * 2002-03-20 2006-05-24 Seiko Epson Corporation Apparatus for processing instructions of different instruction set architectures
US7783665B1 (en) * 2002-03-27 2010-08-24 Parallels Holdings, Ltd. Effective file-sharing among virtual environments
US7424623B2 (en) * 2002-03-28 2008-09-09 O2 Micro International Limited Personal computer integrated with personal digital assistant
US20030204708A1 (en) * 2002-04-24 2003-10-30 Colin Hulme Portable computer having hierarchical operating systems
US20040095388A1 (en) * 2002-11-15 2004-05-20 Rocchetti Robert J. Method and apparatus for creating user interfaces for computing devices
US20040207508A1 (en) * 2003-04-16 2004-10-21 Jyh-Han Lin Method and apparatus for a dynamically customizable smart phonebook
US7634770B2 (en) * 2003-05-19 2009-12-15 Hewlett-Packard Development Company, L.P. Kernel module interface dependencies
CN1922576A (zh) * 2003-09-30 2007-02-28 扎鲁纳股份有限公司 操作系统
US7620667B2 (en) * 2003-11-17 2009-11-17 Microsoft Corporation Transfer of user profiles using portable storage devices
GB0407977D0 (en) * 2004-04-08 2004-05-12 Ibm Communication between browser windows
US7478204B2 (en) * 2004-04-29 2009-01-13 International Business Machines Corporation Efficient sharing of memory between applications running under different operating systems on a shared hardware system
US20060010446A1 (en) * 2004-07-06 2006-01-12 Desai Rajiv S Method and system for concurrent execution of multiple kernels
US7424601B2 (en) * 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US20060046706A1 (en) * 2004-08-26 2006-03-02 Jiansong Lin Monitoring and remote control of wireless communication device accessories and functionality
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
US8195624B2 (en) * 2005-06-30 2012-06-05 Phoenix Technologies Ltd. Shared file system management between independent operating systems
US7779280B2 (en) 2005-09-16 2010-08-17 Gary Stephen Shuster Low power mode for portable computer system
US7636586B2 (en) * 2005-10-12 2009-12-22 Nokia Corporation Mobile communication terminal
US9189291B2 (en) * 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US20070135043A1 (en) * 2005-12-12 2007-06-14 Motorola, Inc. Method and system for accessible contact information on a locked electronic device
US7950020B2 (en) * 2006-03-16 2011-05-24 Ntt Docomo, Inc. Secure operating system switching
US7536537B2 (en) * 2006-04-20 2009-05-19 Harris Corporation Simultaneous dual booting of platforms
US20070266231A1 (en) * 2006-05-15 2007-11-15 Huey-Tyug Chua Portable Electronic Device and Method for Loading Resource Data of the Portable Electronic Device
US20070283147A1 (en) * 2006-05-30 2007-12-06 Fried Eric P System and method to manage device access in a software partition
US9201703B2 (en) * 2006-06-07 2015-12-01 International Business Machines Corporation Sharing kernel services among kernels
US8146089B2 (en) * 2006-06-14 2012-03-27 Intel Corporation Sharing resources of a partitioned system
US7689820B2 (en) * 2006-09-27 2010-03-30 L3 Communications Corporation Rapid-boot computing device with dual operating systems
US20080100568A1 (en) * 2006-10-30 2008-05-01 Koch Paul B Electronic device providing tactile feedback
WO2008137432A2 (en) * 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
KR101415762B1 (ko) * 2007-07-25 2014-07-08 엘지전자 주식회사 보조 출력 장치 및 이를 구비한 휴대용 컴퓨터 그리고 이의os 전환 방법
TWI352909B (en) * 2007-09-05 2011-11-21 Htc Corp Method and system for supporting network sharing a
TWI362612B (en) * 2007-09-05 2012-04-21 Htc Corp System and electronic device using multiple operating systems and operating method thereof
US7840186B2 (en) * 2007-09-25 2010-11-23 Motorola Mobility, Inc. Wireless SATA/SAS data transfer system
US9003173B2 (en) * 2007-09-28 2015-04-07 Microsoft Technology Licensing, Llc Multi-OS (operating system) boot via mobile device
CN101149685A (zh) 2007-11-07 2008-03-26 苏州壹世通科技有限公司 从移动存储设备启动多操作系统的组合装置及其方法
JP2009157802A (ja) 2007-12-27 2009-07-16 Kyocera Corp 携帯端末および情報処理装置
US20090287571A1 (en) * 2008-03-26 2009-11-19 Robb Fujioka Hypervisor and virtual machine ware
CN101615123A (zh) * 2008-06-26 2009-12-30 比亚迪股份有限公司 一种移动终端操作系统的引导方法及移动终端
US20100211769A1 (en) * 2009-02-19 2010-08-19 Subramonian Shankar Concurrent Execution of a Smartphone Operating System and a Desktop Operating System
US9372711B2 (en) * 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9348633B2 (en) * 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) * 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) * 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
CA2780765A1 (en) * 2009-11-13 2011-05-19 Google Inc. Live wallpaper
US8589952B2 (en) * 2010-06-30 2013-11-19 Palm, Inc. Dual operating system operation and configuration
EP2416546A1 (en) * 2010-08-03 2012-02-08 Research In Motion Limited Method for providing indication of communicatively coupled device
TWI520069B (zh) * 2010-08-11 2016-02-01 緯創資通股份有限公司 整合運用基於同一系統核心之異質作業系統之方法
SG189304A1 (en) * 2010-10-08 2013-05-31 Lumi Technologies Ltd Multi-phased and partitioned content preparation and delivery
US8983536B2 (en) * 2010-10-22 2015-03-17 Google Technology Holdings LLC Resource management in a multi-operating environment
US8874665B2 (en) * 2010-12-13 2014-10-28 At&T Mobility Ii Llc Systems, apparatus and methods for facilitating display and management of information for communication devices
US20120173986A1 (en) * 2011-01-04 2012-07-05 Motorola-Mobility, Inc. Background synchronization within a multi-environment operating system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050765A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Programming language abstractions for creating and controlling virtual computers, operating systems and networks

Also Published As

Publication number Publication date
KR20120030559A (ko) 2012-03-28
US8868899B2 (en) 2014-10-21
BR112012001228A2 (pt) 2016-03-01
WO2011011362A2 (en) 2011-01-27
KR20140043168A (ko) 2014-04-08
US20110126216A1 (en) 2011-05-26
EP2457161A2 (en) 2012-05-30
WO2011011362A3 (en) 2013-04-18
BR112012001228B1 (pt) 2020-11-03
CN102934085B (zh) 2016-06-22
MY162244A (en) 2017-05-31
CN106020829A (zh) 2016-10-12
CN102934085A (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
KR101702729B1 (ko) 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법
KR101702728B1 (ko) 멀티-환경 운영 체제
KR101399161B1 (ko) 멀티-환경 운영 체제를 개시하기 위한 시스템 및 방법
US9367331B2 (en) Multi-environment operating system
US9389877B2 (en) Multi-environment operating system
KR101565224B1 (ko) 단일 제스처 입력으로 복수의 오퍼레이팅 시스템 환경들을 록킹 및 언록킹하기 위한 방법 및 장치
US20120173986A1 (en) Background synchronization within a multi-environment operating system
KR101566093B1 (ko) 웹톱 애플리케이션 트레이에 안드로이드 애플리케이션 런처를 디스플레이하는 시스템 및 방법
CN109308241B (zh) 监听应用程序启动流程方法、装置、终端设备和存储介质
JP2010287205A (ja) 電子装置、コンピュータ実行システム及びその応用プログラムの表示制御方法
KR101776042B1 (ko) 단말의 다중 운영체제 구동장치 및 운영체제 전환방법
WO2011011368A2 (en) Multi-environment operating system
US20120252536A1 (en) Mobile terminal
RU2574205C2 (ru) Операционная система с множеством сред
WO2011011365A2 (en) Multi-environment operating system

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right