[go: up one dir, main page]

KR102760965B1 - 이종 운영체제를 실행하는 전자 장치 및 그 방법 - Google Patents

이종 운영체제를 실행하는 전자 장치 및 그 방법 Download PDF

Info

Publication number
KR102760965B1
KR102760965B1 KR1020190041198A KR20190041198A KR102760965B1 KR 102760965 B1 KR102760965 B1 KR 102760965B1 KR 1020190041198 A KR1020190041198 A KR 1020190041198A KR 20190041198 A KR20190041198 A KR 20190041198A KR 102760965 B1 KR102760965 B1 KR 102760965B1
Authority
KR
South Korea
Prior art keywords
operating system
electronic device
image
control application
system image
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020190041198A
Other languages
English (en)
Other versions
KR20200118980A (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 삼성전자주식회사
Priority to KR1020190041198A priority Critical patent/KR102760965B1/ko
Priority to US17/594,286 priority patent/US11836503B2/en
Priority to PCT/KR2020/004634 priority patent/WO2020209561A1/ko
Publication of KR20200118980A publication Critical patent/KR20200118980A/ko
Application granted granted Critical
Publication of KR102760965B1 publication Critical patent/KR102760965B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

컨트롤 어플리케이션 및 환경설정 파일을 저장하는 메모리 및 상기 메모리에 연결되고, 제1 운영체제에서 상기 컨트롤 어플리케이션을 실행하는 프로세서를 포함하는 전자 장치가 개시된다. 전자 장치는 환경설정 파일을 이용하여 제2 운영체제를 제1 운영체제와 함께 실행할 수 있도록 운영체제 이미지를 자동적으로 설정할 수 있다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.

Description

이종 운영체제를 실행하는 전자 장치 및 그 방법{AN ELECTRONIC DEVICE FOR EXECUTING DIFFERENT OPERATING SYSTEM AND METHOD THEREOF}
본 문서에서 개시되는 실시 예들은 서로 다른 운영체제를 실행하기 위한 기술과 관련된다.
모바일 기기를 비롯한 다양한 형태의 전자 장치들이 보급되고 있다. 전자 장치들이 널리 보급됨에 따라서 전자 장치들을 운용하기 위한 운영 체제(Operating System, OS)의 종류도 지속적으로 늘어나고 있다. 구글™의 안드로이드™나 애플™의 iOS™뿐만 아니라 삼성전자™와 인텔™의 타이젠™, 리눅스의 우분투(UBUNTU™), 모질라™의 FireFox OS™, 마이크로소프트™사의 윈도우 모바일™ 등 수 많은 운영체제들이 출시되었다.
또한, 네트워크의 발달로 온라인 상에서 운영체제의 배포자가 이미지 파일(예: .iso)의 형태로 운영체제 이미지를 배포하고, 전자 장치의 사용자는 운영체제 이미지를 전자 장치의 메모리에 설치할 수 있다. 이에 따라 다양한 운영체제를 전자 장치에서 실행하는 경우가 증가하고 있다.
전자 장치는 일반적으로 하나의 운영체제를 기반으로 동작하며 VNC(virtual network computing)를 이용하거나 리부팅을 통해서 다른 운영체제를 실행할 수 있다. 그러나, VNC와 같은 가상 머신(virtual machine)은 동일한 하드웨어를 복수의 운영체제들이 이용하는 환경을 구성할 수 있다. 예를 들어, 안드로이드 운영체제 및 리눅스는 가상 머신을 통해 그래픽 처리 장치(GPU)를 공유하여 사용할 수 있다.
따라서, 전자 장치의 사용자는 메인 운영체제를 기반으로 동작하는 전자 장치에 다양하게 배포되는 운영체제를 추가로 설치하여 메인 운영체제와 다른 운영체제 기반에서 실행 가능한 응용 프로그램을 이용할 수 있다.
그러나, 메인 운영체제를 기반으로 이종의 운영체제를 실행할 경우, 이종의 운영체제가 메인 운영체제를 기반으로 실행되고 메인 운영체제와 연동하기 위한 조건이 만족되어야 한다. 이종의 운영체제가 상기 조건을 만족하지 못하는 경우에는 사용자가 배포 받은 운영체제 이미지로 이종의 운영체제를 실행하기 어려운 문제가 있다.
본 문서에 개시되는 일 실시 예에 따른 전자 장치는, 컨트롤 어플리케이션 및 환경설정 파일을 저장하는 메모리 및 상기 메모리에 작동적으로 연결되고, 제1 운영체제에서 상기 컨트롤 어플리케이션을 실행하는 프로세서를 포함할 수 있다. 상기 메모리는 제2 운영체제를 실행하기 위한 운영체제 이미지를 더 저장할 수 있다. 상기 메모리는, 상기 프로세서가, 상기 운영체제 이미지의 환경설정이 상기 컨트롤 어플리케이션에서 정의된 조건을 만족하는지 여부를 결정하며, 상기 운영체제 이미지의 환경설정이 상기 정의된 조건을 만족하지 않는 경우, 상기 환경설정 파일을 이용하여 상기 운영체제 이미지의 환경 설정을 변경하고, 상기 컨트롤 어플리케이션이 상기 제2 운영체제의 동작을 제어하기 위한 패키지 파일을 상기 운영체제 이미지에 복사하도록 하는 인스트럭션들을 저장할 수 있다.
또한, 본 문서에 개시되는 일 실시 예에 따른 방법은, 전자 장치에 설치된 제1 운영체제를 기반으로 컨트롤 어플리케이션을 실행하는 동작, 제2 운영체제를 실행하기 위한 운영체제 이미지를 선택하는 사용자 입력을 수신하는 동작, 상기 운영체제 이미지의 환경설정이 상기 컨트롤 어플리케이션에서 정의된 조건을 만족하는지 결정하는 동작, 상기 운영체제 이미지의 환경설정이 상기 정의된 조건을 만족하지 않는 경우, 상기 환경설정 파일을 이용하여 상기 운영체제 이미지의 환경 설정을 변경하는 동작 및 상기 컨트롤 어플리케이션이 상기 제2 운영체제의 동작을 제어하기 위한 패키지 파일을 상기 운영체제 이미지에 복사하는 동작을 포함할 수 있다.
또한, 본 문서에 개시되는 일 실시 예에 따른 저장 매체는, 전자 장치에 설치된 제1 운영체제를 기반으로 컨트롤 어플리케이션을 실행하는 동작, 제2 운영체제를 실행하기 위한 운영체제 이미지를 선택하는 사용자 입력을 수신하는 동작, 상기 운영체제 이미지의 환경설정이 상기 컨트롤 어플리케이션에서 정의된 조건을 만족하는지 결정하는 동작, 상기 운영체제 이미지의 환경설정이 상기 정의된 조건을 만족하지 않는 경우, 상기 환경설정 파일을 이용하여 상기 운영체제 이미지의 환경 설정을 변경하는 동작 및 상기 컨트롤 어플리케이션이 상기 제2 운영체제의 동작을 제어하기 위한 패키지 파일을 상기 운영체제 이미지에 복사하는 동작을 포함하는 방법을 수행하도록 하는 컴퓨터 프로그램을 저장할 수 있다.
본 문서에 개시되는 실시 예들에 따르면, 이종의 운영체제를 설치하기 위한 운영체제 이미지가 전자 장치에 설치된 운영체제 상에서 운용될 수 없는 경우에, 전자 장치가 운영체제 이미지를 수정하여 사용자가 간단하게 이종의 운영체제를 실행할 수 있도록 할 수 있다.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 2는 일 실시 예에 따른, 본 발명의 다양한 실시 예에 따른 이종 운영체제의 실행을 제어하기 위한 전자 장치의 구성 요소들의 일 예를 나타낸 도면이다.
도 3은 다양한 실시 예에 따른 이종 운영체제의 실행을 제어하기 위한 전자 장치의 상세 구성 요소들의 일 예를 나타낸 도면이다.
도 4는 다양한 실시 예에 따른 이종 운영체제의 실행을 제어하기 위한 전자 장치의 내부 구조도이다.
도 5는 다양한 실시 예에 따른 전자 장치에서 이종 운영체제의 실행을 제어하기 위한 화면의 일 예를 나타낸 도면이다.
도 6은 다양한 실시 예에 따른 전자 장치의 동작 환경을 설명하기 위한 도면이다.
도 7은 다른 실시 예에 따른 전자 장치의 동작 환경을 설명하기 위한 도면이다.
도 8은 다양한 실시 예에 따른 전자 장치가 제2 운영체제를 실행하는 프로세스를 도시한 순서도이다.
도 9는 다양한 실시 예에 따른 컨트롤 어플리케이션이 운영체제 이미지가 사용 가능한 이미지인지 확인하고, 운영체제 이미지를 구성하는 프로세스를 도시한 순서도이다.
도 10은 다양한 실시 예에 따른 전자 장치가 사용자 인터페이스 모드에 따라서 운영체제 이미지를 구성하는 프로세스를 도시한 순서도이다.
도 11은 다양한 실시 예에 따른 전자 장치가 제2 운영체제를 구동하도록 하기 위한 객체를 선택하기 위한 화면의 예시를 나타낸다.
도 12는 다양한 실시 예에 따른 전자 장치가 명령줄 인터페이스 모드로 제2 운영체제를 구동하는 경우에 출력되는 화면의 예시를 나타낸다.
도 13은 다양한 실시 예에 따라 전자 장치가 그래픽 사용자 인터페이스 모드로 제2 운영체제를 구동하는 경우에 출력되는 화면의 예시를 나타낸다.
도면의 설명과 관련하여, 동일 또는 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)는, 예를 들면, 마이크, 마우스, 키보드, 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)는, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102))(예: 스피커 또는 헤드폰)를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일실시예에 따르면, 연결 단자(178)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일실시예에 따르면, 전력 관리 모듈(188)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성요소에 전력을 공급할 수 있다. 일실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제 1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 하나의 안테나를 포함할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들을 포함할 수 있다. 이런 경우, 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC)이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))을 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일실시예에 따르면, 명령 또는 데이터는 제 2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 외부 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, 또는 108) 중 하나 이상의 외부 전자 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 일 실시 예에 따른, 본 발명의 다양한 실시 예에 따른 이종 운영체제의 실행을 제어하기 위한 전자 장치의 구성 요소들의 일 예를 나타낸 도면(200)이다.
전자 장치(예: 도 1의 전자 장치(101))는 운영체제(operating system: OS)(210)를 포함하며, 복수의 운영체제들을 동시에 실행할 수 있다. 운영체제(210)는 제1 운영체제(230) 및 제2 운영체제(220)를 포함할 수 있다. 예를 들어, 제1 운영체제(230)는 전자 장치에서 사용하도록 의도된 임베디드 환경 예를 들어, 안드로이드 운영체제이며, 제2 운영체제(220)는 리눅스 운영체제일 수 있다. 제2 운영체제(220)는 리눅스 기반 운영체제를 위한 우분투(Ubuntu®)를 포함할 수 있다. 본 명세서에서, 제1 운영체제(230)는 호스트(host) 운영체제라고 칭할 수 있으며, 제2 운영체제(220)는 게스트(guest) 운영체제라고 칭할 수 있다.
제1 운영체제(230) 및 제2 운영체제(220)는 서로 독립적으로 동작 및 공존할 수 있으며, 리눅스 기반으로 동작하는 경우 상호 의존적일 수 있다. 운영체제(210)의 제1 운영체제(230) 및 제2 운영체제(220)는 커널(240)과 통신할 수 있으며, 화살표에 의해 표현된 바와 같이 서로 통신할 수 있다. 본 발명의 실시 예에서는 운영체제(210)에 포함될 수 있는 운영체제의 예로 안드로이드, 리눅스를 예시하고 있으나, 안드로이드, 리눅스를 포함하는 다양한 다른 타입의 운영체제들이 추가 또는 대체될 수 있다. 이에 따라 운영체제(210)는 다양한 종류의 둘 이상의 운영체제들을 포함할 수 있으며, 복수의 운영체제들은 동일한 커널(240)(또는 다른 코어/커널)에 독립적으로 존재할 수 있다.
제2 운영체제(220)는 제2 운영체제(220)의 배포자로부터 배포된 운영체제 이미지를 이용하여 구동될 수 있다. 운영체제 이미지는, 예를 들어, ISO 이미지 파일과 같은 형태로 메모리(예: 도 1의 메모리(130)) 제2 운영체제(220)를 구동시킬 수 있도록 구성된 객체를 의미할 수 있다. 다만, 제2 운영체제(220)를 구동시키기 위한 객체의 형태는 이미지 파일의 형태로 한정되는 것은 아니다. 본 명세서에서, 설명의 편의를 위하여, 제2 운영체제(220)를 구동시킬 수 있도록 구성된 객체를 운영체제 이미지라고 칭할 수 있다.
커널(240)은 디바이스 하드웨어(250)의 물리적 구성요소들과 운영체제(210)의 제1 운영체제(230) 및 제2 운영체제(220)들의 개별 미들웨어 사이의 상호 작용을 연결 및 관리함으로써 전자 장치의 리소스들을 각각 할당할 수 있다.
디바이스 하드웨어(250)는 다양한 하드웨어 디바이스를 포함할 수 있다. 디바이스 하드웨어(250)는 다양한 함수와 연산을 수행하도록 구성되는 프로세서(예: 도 1의 프로세서(120))에 결합된 디바이스들일 수 있다. 예를 들어, 디바이스 하드웨어(250)는 프로세서(예: 도 1의 프로세서(120))와 결합된 메모리를 포함할 수 있는데, 메모리(예: 도 1의 메모리(130))는 이종 운영체제의 실행을 제어하기 위한 다양한 기능 및 동작들을 수행하도록 구성된 컴퓨터 실행 가능한 인스트럭션들을 저장할 수 있다. 다양한 실시 예에 따르면, 전자 장치는 메모리(예: 도 1의 메모리(130))에 저장된 운영체제 이미지를 이용하여 제2 운영체제를 실행할 수 있다. 프로세서는 메모리에 저장된 인스트럭션들을 실행하여 전자 장치의 동작이 수행되도록 데이터를 처리하거나, 전자 장치의 구성요소를 제어할 수 있다.
도 3은 다양한 실시 예에 따른 이종 운영체제의 실행을 제어하기 위한 전자 장치의 상세 구성 요소들의 일 예를 나타낸 도면(300)이다. 다만, 도 3은 일 예시를 설명하기 위한 것이며, 전자 장치는 다른 기능이나 구성요소를 더 포함할 수도 있으며, 일부 구성요소는 생략될 수도 있다.
전자 장치(예: 도 1의 전자 장치(101))는 복수의 운영체제를 포함하는 운영체제(210), 커널(240) 및 디바이스 하드웨어(250)를 포함할 수 있다. 상기 운영체제(210)는 복수의 이종 운영체제를 포함할 수 있으며, 예를 들어, 도 2에서와 같이 제1 운영체제(230) 및 제2 운영체제(220)를 포함할 수 있다.
다양한 실시 예에 따르면, 제1 운영체제(230)는 안드로이드 기반의 운영체제일 수 있으며, 컨트롤 어플리케이션(231) 및 제1 어플리케이션(232)을 포함할 수 있다. 여기서, 제1 어플리케이션(232)은 안드로이드 운영체제에서 동작 가능한 적어도 하나의 어플리케이션으로, 어플리케이션 프로그램으로 지칭될 수 있다. 예를 들어, 제1 어플리케이션(232)은 동영상 재생 어플리케이션, 웹 브라우저 어플리케이션과 같은 안드로이드 운영체제를 기반으로 동작 가능한 다양한 어플리케이션들이 해당될 수 있다.
본 명세서에서, 제1 운영체제(230)는 전자 장치가 부팅되면 동작하는 메인 운영체제로, 호스트 운영체제 또는 메인 운영체제라고 칭할 수 있다. 제1 운영체제(230)는 시스템 리소스의 관리와 하나 이상의 다른 운영체제인 게스트 운영체제와의 상호 작용을 위한 컨트롤 어플리케이션(231)을 실행할 수 있다.
다양한 실시 예에 따르면, 제1 운영체제(230)는 제1 운영체제(230) 기반의 데이터 및 제1 운영체제(230)와는 다른 운영체제(예: 도 2의 제2 운영체제(220)) 기반의 데이터에 대한 처리 및 제어를 위한 컨트롤 어플리케이션(231)을 포함할 수 있다.
다양한 실시 예에 따르면, 제1 운영체제(230)는 제1 운영체제(230) 기반의 데이터 및 제1 운영체제(230)와는 다른 운영체제(예: 도 2의 제2 운영체제(220)) 기반의 데이터에 대한 처리 및 제어를 위한 컨트롤 어플리케이션(231)을 포함할 수 있다. 예를 들어, 제1 운영체제(230)가 안드로이드 운영체제이며, 제2 운영체제(220)가 리눅스 운영체제일 경우 컨트롤 어플리케이션(231)은 안드로이드 운영체제 기반의 데이터 및 리눅스 기반의 데이터에 대한 처리 및 제어를 수행할 수 있다.
다양한 실시 예에 따르면, 컨트롤 어플리케이션(231)은, 제1 운영체제(230)의 커널(240)을 사용하는 컨테이너(container)(315)를 통해, 실행 중인 게스트 운영체제(예: 도 2의 제2 운영체제(220))의 프로세스와 통신할 수 있다. 컨트롤 어플리케이션(231)은 게스트 운영체제의 프로세스에서 발생한 이벤트를 제1 운영체제(230)(예: 안드로이드 운영체제)의 프로세스로 전달하거나 제1 운영체제(230)의 프로세스에서 발생한 이벤트를 게스트 운영체제로 전달하여 프로세스를 실행하거나 제어할 수 있다. 일 실시 예에 따르면, 컨트롤 어플리케이션(231)은 LoD(linux on dex) 어플리케이션이라고 칭할 수 있다.
다양한 실시 예에 따르면, 게스트 운영체제(예: 도 2의 제2 운영체제(220))는 컨테이너(315)를 통해 실행되며, 게스트 운영체제에서 동작 가능한 복수의 어플리케이션(예: 제2 어플리케이션(221))을 포함할 수 있다. 또한 컨테이너(315)를 통해 실행되는 게스트 운영체제는 적어도 하나의 통신 프로그램(222)을 포함할 수 있다. 통신 프로그램(222)은 제1 운영체제(230)와의 통신을 위한 구성부로서, 컨트롤 어플리케이션(231)과의 통신을 수행할 수 있다. 예를 들어, 통신 프로그램(222)은 컨테이너(315)에서 실행되는 게스트 운영체제와 관련된 데이터를 컨테이너의 외부(예: 제1 운영체제(230)의 컨트롤 어플리케이션(231))로 소켓 통신을 이용하여 송신할 수 있다. 이에 따라 제1 운영체제(230)는 컨테이너(315)를 이용하여 격리되어 운영되는 게스트 운영체제와 관련된 데이터를 상기 통신 프로그램(222)으로부터 획득할 수 있으며, 획득된 게스트 운영체제와 관련된 데이터를 기반으로 게스트 운영체제와 관련된 프로세스를 처리할 수 있다.
다양한 실시 예에 따르면, 운영체제(210) 또는 제1 운영체제(230)는 멀티태스킹 운영체제에서의 데몬(daemon)(233)을 포함할 수 있다. 일 실시 예에 따른 데몬(233)은 NST(namespace tool) 데몬이라고 칭할 수 있다. 데몬(233)은 컨트롤 어플리케이션(231)을 위해 전자 장치의 백그라운에서 동작하는 프로그램일 수 있다. 데몬(233)은 컨트롤 어플리케이션(231)과 통신할 수 있으며, 게스트 운영체제를 실행시키기 위한 컨테이너(315) 생성뿐만 아니라 예를 들어, 네임스페이스(321), Cgroups(324)와 같은 커널(240)의 다양한 기능들에 대한 제어, 파일 시스템(325)의 마운트 제어와 같은 동작 프로세스를 지원할 수 있다. 또한, 데몬(233)은 호스트 운영체제의 프로세스를 종료하지 않은 채 게스트 운영체제의 동작 프로세스를 지원할 수 있다.
도 3에서는 게스트 운영체제인 제2 운영체제와 관련한 컨테이너(315) 및 제1 운영체제(230)와는 독립적이면서도 운영체제(210)에 데몬(233)이 포함되어 있는 경우를 예시하고 있으나, 이는 단지 예시일 뿐, 이에 한정되지 않을 수 있다. 예를 들어, 데몬(233)은 제1 운영체제(230)의 커널(240)을 이용하므로 소프트웨어 계층적 구조로 봤을 때 커널(240) 상단에 위치할 수 있으며, 그 위치는 이에 한정되지 않을 수 있다.
제1 운영체제(230)가 운영체제 이미지를 이용하여 제2 운영체제(220)를 실행하고자 할 경우, 전자 장치의 프로세서는 데몬(233)에 운영체제 이미지를 마운트(mount)하도록 요청하는 메시지를 전달할 수 있다. 일 실시 예에 따르면, 상기 메시지는 운영체제 이미지가 컨트롤 어플리케이션(231)에 의해 사용될 수 있는 이미지인지 확인하도록 하는 메시지를 포함할 수 있다. 프로세서는 메시지에 대한 응답으로 운영체제 이미지의 사용 가능 여부를 반환 받을 수 있다. 일 실시 예에 따르면, 데몬(233)은 운영체제 이미지가 마운트될 수 있는 포맷으로 구성되어 있는 경우, 마운트 동작이 성공적으로 완료되었음을 나타내는 결과를 운영체제 이미지의 사용 가능 여부로서 반환할 수 있다. 데몬(233)에 의해 운영체제 이미지가 마운트되면, 컨테이너(315)를 이용하여 가상의 운영체제로서 제2 운영체제(220)를 구동할 수 있다. 그러나, 제2 운영체제(220)가 컨테이너(315)를 이용하여 제1 운영체제(230)와 함께 실행되기 위해서는 운영체제 이미지에 의해 설치되는 제2 운영체제(220)에 컨트롤 어플리케이션(231)이 접근할 수 있어야 한다. 예를 들어, 제1 운영체제(230)로서 안드로이드 운영체제가 동작 중인 상태에서, 리눅스 기반의 제2 운영체제(220)를 구동하기 위해서는, 제1 운영체제(230)를 기반으로 동작하는 컨트롤 어플리케이션(231)이 제2 운영체제(220) 기반의 파일시스템에 접근할 수 있어야 하며, 제2 운영체제(220) 기반의 입출력 등의 동작을 처리할 수 있어야 한다.
그러나, 다양한 배포자에 의해 배포되는 운영체제 이미지들은 환경설정이 다양하게 구성되어 있으며, 운영체제에 설치되는 패키지(예를 들어, 운영체제의 입/출력을 제어하기 위한 패키지)도 각기 다르게 구성될 수 있다. 따라서, 컨테이너(315)를 이용하여 제2 운영체제(220)를 정상적으로 실행시키지 못할 수도 있다.
따라서, 일 실시 예에 따르면, 전자 장치는 제2 운영체제(220)를 실행하기 위한 운영체제 이미지의 환경설정이 컨트롤 어플리케이션(231)에서 정의된 조건을 만족하는지 여부를 결정할 수 있다. 예를 들어, 전자 장치는 데몬(233)에 의해 운영체제 이미지가 마운트되면, 운영체제 이미지의 루트(root) 경로의 권한 중 사용자 ID(UID) 및 그룹 ID(GID)가 컨트롤 어플리케이션(231)에서 정의한 영역에 포함되는지 여부를 확인할 수 있다. 전자 장치는 지정된 조건을 만족하는 경우 컨트롤 어플리케이션(231)에서 정의한 영역에 포함되는 것으로 판단할 수 있다. 보다 구체적인 예를 들면, 지정된 조건은 UID 및 GID 중 적어도 하나가 65536의 배수이고, 10진수의 마지막 다섯 자리가 0인 것일 수 있다.
운영체제 이미지의 환경설정이 컨트롤 어플리케이션(231)에서 정의된 조건을 만족하지 않는 경우, 전자 장치는 메모리(예: 도 1의 메모리(130))에 저장된 환경설정 파일에 기초하여 운영체제 이미지의 환경설정을 변경할 수 있다. 환경설정 파일은 운영체제 이미지가 실행되기 위하여 구성되어야 할 운영체제 이미지의 환경설정 값을 포함하는 파일일 수 있다. 예를 들어, 전자 장치는 운영체제 이미지에 대한 루트 경로를 포함하여 하위 폴더와 파일들에 대한 UID 및 GID를 지정된 조건을 만족하도록 변경할 수 있다. 제1 운영체제가 안드로이드 운영체제이고, 제2 운영체제가 리눅스 기반의 운영체제인 경우, 루트 경로의 UID 및 GID의 마지막 다섯 자리를 0으로 설명하면, 안드로이드 운영체제의 ID들과 리눅스 기반 운영체제의 ID들을 시각적으로 쉽게 일치시킬 수 있다. 컨트롤 어플리케이션(231)은 1638400000을 기초 UID로 정의하고 사용할 수 있다.
일 실시 예에 따르면, 환경설정 파일은 컨테이너(예: 도 3의 컨테이너(315)) 내에 루트(root) 권한 제어를 위한 사용자 ID의 범위를 할당하도록 하는 정보를 포함할 수 있다. 또한, 일 실시 예에 따르면, 환경설정 파일은 전자 장치가 컨테이너(예: 도 3의 컨테이너(315)) 내에 접근 권한 제어를 위한 SE 안드로이드™ 도메인을 할당하도록 할 수 있다. 또한, 환경설정 파일은 전자 장치가 제2 운영체제(예: 도 2의 제2 운영체제(220))가 입출력 장치와 연결하기 위한 장치 가상 터미널을 설정하도록 할 수 있다. 또한, 환경설정 파일은 전자 장치가 컨테이너(예: 도 3의 컨테이너(315)) 내에서 제2 운영체제를 실행하기 위한 스크립트 파일(script file)을 설정하도록 할 수 있다. 사용자 ID의 범위 할당, 도메인 할당, 장치 가상 터미널 설정 및 스크립트 파일의 설정이 완료되면, 전자 장치는 명령줄 모드로 제2 운영체제를 실행할 수 있다.
여기서, 그래픽 사용자 인터페이스로 제2 운영체제를 실행하기 위해서는 그래픽 사용자 인터페이스의 환경설정을 위한 패키지의 설치가 더 요구된다. 따라서, 이 경우 환경설정 파일은 전자 장치가 패키지 설치를 위한 소프트웨어 저장소를 설정하고 그래픽 사용자 인터페이스의 환경설정을 위한 패키지를 운영체제 이미지에 대해 업데이트할 수 있다.
또한, 전자 장치는 운영체제 이미지 내에 컨트롤 어플리케이션(231)이 제2 운영체제(220)를 동작하도록 하기 위한 패키지 파일을 복사할 수 있다. 예를 들어, 전자 장치는, 제2 운영체제(220)에서 동작하는 프로그램 패키지의 설치 파일, 제2 운영체제(220)가 컨트롤 어플리케이션(231)과의 통신을 하기 위한 실행 파일, 제2 운영체제(220)가 컨트롤 어플리케이션(231)을 통해서 화면의 제어를 수행하는 프로그램의 설치를 위한 패키지 파일, 제2 운영체제(220)가 지정된 동작을 수행하는 쉘 스크립트(shell script) 파일, 또는 제2 운영체제(220)가 컨트롤 어플리케이션(231)을 통해서 음향을 출력하기 위한 패키지 파일 중 적어도 하나를 운영체제 이미지 내에 복사할 수 있다. 운영체제 이미지에 복사되는 파일은 전자 장치의 지정된 위치에 저장되어 있거나, 외부 서버로부터 다운로드될 수 있다.
다양한 실시 예에 따르면, 전자 장치는 마운트된 운영체제 이미지에 기초하여 제2 운영체제(220)를 제1 운영체제(230)와 동시에 실행하기 위해 컨테이너(315)를 사용할 수 있다. 일 실시 예이 따르면, 컨테이너(315)는 컨트롤 어플리케이션(231)에 의해 생성될 수 있다. 또한, 전자 장치의 프로세서(예: 도 1의 프로세서(120))는 컨테이너(315)를 생성하도록 제1 운영체제(230)를 제어할 수 있다. 프로세서는 제1 운영체제(230)에 설치된 컨트롤 어플리케이션(315)을 이용하여 게스트 운영체제인 제2 운영체제(220)의 실행을 위한 컨테이너(315)가 생성되도록 할 수 있다. 일 실시 예에 따르면, 제2 운영체제(220)의 실행이 요구되는 사용자 명령이 입력되면, 프로세서는 컨테이너(315)를 생성할 수 있다. 예를 들어, 사용자가 제2 운영체제(230)를 기반으로 실행될 수 있는 어플리케이션을 실행하기 위한 아이콘을 선택한(예: 더블 클릭) 경우, 프로세서는 제2 운영체제(220)의 실행을 위한 컨테이너(315)를 생성할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 호스트 운영체제에 기반하여 이종의 운영체제를 실행하도록 하기 위해 생성되어 있는 컨테이너를 제2 운영체제(220)의 실행을 위한 컨테이너(315)로 할당할 수도 있다.
다양한 실시 예에 따르면, 컨트롤 어플리케이션(231)은 컨테이너(315)(또는 상기 특정 컨테이너)를 통해 제2 운영체제(220)를 실행할 수 있다. 이에 따라, 전자 장치는 제2 운영체제(220)의 구동을 위한 데이터들뿐만 아니라 제2 운영체제(220)를 기반으로 동작하는 어플리케이션에 대해 필요한 모든 데이터를 미리 할당해놓거나 저장해놓은 후 이를 관리하는 것이 아니라, 제2 운영체제(220)를 구동하기 위한 사용자 입력을 수신하는 것에 대응하여 컨테이너(315)를 생성한 후, 생성된 컨테이너(315)에 제2 운영체제(220)에서 필요한 데이터를 할당함으로써, 이종 운영체제의 동시 실행이 가능할 수 있다.
다양한 실시 예에 따르면, 컨트롤 어플리케이션(231)은 컨테이너(315)를 통해 제2 운영체제(220) 기반의 어플리케이션(예: 제2 어플리케이션(221))을 실행하는 데 필요한 데이터를 할당하여 제공할 수 있다.
다양한 실시 예에 따르면, 컨테이너(315)는 가상화가 아닌 격리 기술을 이용하여 생성되는 것으로, 예를 들어, 제1 운영체제(230)가 구동 중이라면 제2 운영체제(220)를 실행하기 위한 부팅 과정 없이 격리된 제2 운영체제(220)의 프로세스만을 처리할 수 있다. 이에 따라 제1 운영체제(230)의 컨트롤 어플리케이션(231)에서 컨테이너(315)를 통해 이미지를 파일 단위로 관리하고 배포할 수 있기 때문에 최소한의 용량으로 현재 구동 중인 운영체제와는 다른 운영체제를 동시에 실행하는 것이 가능할 수 있다. 게다가 본 발명의 다양한 실시 예에 따른 컨테이너(315)는 호스트 운영체제인 제1 운영체제(230)의 커널(240)을 이용하며 제2 운영체제(220)를 기반으로 실행되는 어플리케이션에 필요한 메모리만을 할당할 수 있어, 가상 머신이 가지는 가상화의 한계를 극복하여 호스트 운영체제의 성능에 대한 오버헤드 없이 이종 운영체제에 대한 제어가 가능할 수 있다.
다양한 실시 예에 따르면, 커널(240)은 제1 운영체제(230)(예: 안드로이드 운영체제)의 리눅스 커널로 실행되며, 컨트롤 어플리케이션(231)에 의해 게스트 운영체제(예: 리눅스 운영체제)를 구동하기 위해 리눅스 컨테이너 기능으로 컨테이너(315)를 생성할 수 있다. 커널(240)은 운영체제를 실행하기 위한 각종 기능들을 제공하는 프로그램일 수 있다. 예를 들어, 커널(240)은 제1 운영체제(230)에 관련된 게스트 운영체제를 실행하기 위한 프로세스를 네임스페이스에 할당하는 네임스페이스 기능(321), 보안 기능(322), 전자 장치의 디바이스 하드웨어(250)의 구성 요소들에 접근하기 위한 드라이버 기능(323), 게스트 운영체제가 사용할 수 있는 CPU의 코어나 메모리 용량을 할당하는 리소스 할당을 위한 Cgroups(control groups) 기능(324), 또는 파일 저장 및 파일을 관리하는 파일 시스템(file system) 기능 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따르면, 컨테이너(315)는 제1 운영체제(230)와 독립적으로 가상의 운영체제를 구동하기 위한 환경이며, 컨테이너(315)에서 실행되는 리눅스 운영체제는 리눅스 컨테이너를 지원하는 커널 기반으로 만들어진 우분투(Ubuntu™), 데비앙(Debian)과 같은 리눅스 배포판이 될 수 있다. 한편, 컨테이너(315)의 생성은 도 3에 도시된 구성부들에 국한되지 않고, 리눅스 네임스페이스(namespace) 컨테이너를 활용하여 생성될 수 있다.
다양한 실시 예에 따르면, 디바이스 하드웨어(250)는 적어도 하나의 하드웨어 구성 요소를 포함하며, 프로세서(예: CPU(331)), 메모리(예: RAM(332))를 포함할 수 있다. 디바이스 하드웨어(250)는 추가적으로 키보드, 마우스 및/또는 터치 스크린과 같은 다른 입력 디바이스(335), 오디오 디바이스(333), 스피커 및/또는 디스플레이(334)와 같은 출력 디바이스 또는 외부 저장 장치(336)와 같이 다양한 다른 컴포넌트들 및 리소스들을 포함할 수 있다.
도 4는 다양한 실시 예에 따른 이종 운영체제의 실행을 제어하기 위한 전자 장치의 내부 구조도(400)이다.
도 4를 참조하면, 다양한 실시 예에 따른 전자 장치(401)(예: 도 1의 전자 장치(101))는 이종 운영체제의 실행을 제어하는 장치(예: 스마트 폰, 또는 태블릿 컴퓨터)로서, 프로세서(420)(예: 도 1의 프로세서(120)), 메모리(430)(예: 도 1의 메모리(130)) 및 디스플레이(460)(예: 도 1의 표시 장치(160))를 포함할 수 있다. 여기서, 도 4에 도시된 모든 구성 요소가 전자 장치(401)의 필수 구성 요소인 것은 아니며, 도 4에 도시된 구성 요소보다 많거나 적은 구성 요소에 의해 전자 장치(401)가 구현될 수도 있다. 예를 들어, 일 실시 예에 따르면, 디스플레이(460)는 생략될 수도 있다.
메모리(430)는, 실행 시에, 프로세서(420)가 각종 동작들을 수행하도록 제어하는 인스트럭션들을 저장할 수 있다.
다양한 실시 예에 따르면, 상기 메모리(430)는, 상기 디스플레이(460) 및 상기 프로세서(420)에 작동적으로 연결되고, 제1 운영체제 기반에서 동작하는 제1 어플리케이션 및 제2 운영체제 기반에서 동작하는 제2 어플리케이션을 포함하는 복수의 어플리케이션들을 저장할 수 있다.
다양한 실시 예에 따르면, 프로세서(420)는 디스플레이(460)를 통해서 제1 운영체제에 의해 제공되는 사용자 인터페이스를 표시하는 화면을 출력할 수 있다. 제1 운영체제에 의해 제공되는 사용자 인터페이스는 제1 어플리케이션의 실행과 연관된 제1 객체 및 제2 어플리케이션의 실행과 연관된 제2 객체를 출력할 수 있다. 제2 객체를 선택하는 사용자 입력이 수신되면, 프로세서(420)는 제2 운영체제를 실행하기 위한 운영체제 이미지가 백그라운드 프로그램에 의해 마운트되도록 할 수 있다. 마운트된 운영체제 이미지의 환경설정이 컨트롤 어플리케이션에서 정의된 조건을 만족하지 않는 경우, 프로세서(420)는 메모리(430)에 저장된 환경설정 파일을 이용하여 운영체제 이미지의 환경설정을 변경할 수 있다. 마운트된 운영체제 이미지에 제1 운영체제를 기반으로 동작하는 컨트롤 어플리케이션이 제2 운영체제의 동작을 제어하기 위한 패키지가 설치되어 있지 않은 경우, 프로세서는 마운트된 운영체제 이미지 내로 패키지 파일을 복사할 수 있다.
도 5는 다양한 실시 예에 따른 전자 장치에서 이종 운영체제의 실행을 제어하기 위한 화면의 일 예를 나타낸 도면이다.
전자 장치(501)(예: 도 1의 전자 장치(101))는 제1 운영제체에 의해 제공되는 제1 사용자 인터페이스를 표시하는 화면을 출력할 수 있다. 제1 사용자 인터페이스를 표시하는 화면은 제1 운영체제로부터 제공된 그래픽 데이터를 기반으로 구성될 수 있다. 예를 들어, 전자 장치(501)는 도 5에 도시된 메인 홈 화면(560)을 제1 운영체제로부터 제공된 그래픽 데이터를 기반으로 렌더링할 수 있다. 또한, 전자 장치(501)는 제1 운영체제를 기반으로 제1 어플리케이션이 실행되면, 제1 사용자 인터페이스 내에 제1 어플리케이션을 실행한 결과로 출력되는 실행 화면을 표시할 수 있다. 메인 홈 화면(560)은 전자 장치(501)가 제1 운영체제를 기반으로 부팅되었을 때 디스플레이(예: 도 1의 표시 장치(160), 도 4의 디스플레이(460)) 상에 표시되는 첫 화면일 수 있다. 또한, 메인 홈 화면(560)은 제1 운영체제를 기반으로 동작 가능한 제1 어플리케이션과 연관된 객체들(예: 아이콘)뿐만 아니라 구동 중인 제1 운영체제와는 다른 제2 운영체제의 구동을 위한 객체(570) 및 제2 운영체제를 기반으로 동작 가능한 적어도 하나의 제2 어플리케이션과 연관된 객체(590)를 포함하여 구성될 수 있다.
제2 운영체제의 구동을 위한 객체(570)에 대한 사용자 선택에 대응하여, 전자 장치(501)는 제2 운영체제를 구동할 수 있다. 전자 장치(501)는 제2 운영체제를 구동하기 위해, 운영체제 이미지의 환경설정을 변경할 수 있다. 또한, 전자 장치(501)는 제2 운영체제를 구동하기 위한 파일을 운영체제 이미지 내로 복사할 수 있다. 제2 운영체제가 구동되면, 전자 장치(501)는 컨트롤 어플리케이션을 이용하여 제2 운영체제로부터 출력되는 데이터를 이용하여 제2 사용자 인터페이스를 구성할 수 있다. 전자 장치(501)는 제1 사용자 인터페이스 내에 제2 사용자 인터페이스를 표시할 수 있다. 또는, 전자 장치(501)는 제1 사용자 인터페이스를 대신하여 제2 사용자 인터페이스를 표시할 수도 있다.
도 6 및 도 7은 다양한 실시 예에 따른 전자 장치의 동작 환경을 설명하기 위한 도면이다.
전자 장치(601)는 외부 전자 장치(예: 디스플레이 장치)(602)와 연결될 수 있다. 전자 장치(601)는 스마트 폰과 같은 모바일 장치이므로, 터치 스크린 디스플레이의 크기도 제한될 수 있다.
전자 장치(601)는, 예를 들어, USB 커넥터, USB-C 커넥터와 같은 입출력 인터페이스를 통해 외부 전자 장치(602)와 연결될 수 있다. 도 6은 전자 장치(601)가 입출력 인터페이스(630)를 통해 외부 전자 장치(602)와 연결된 예시를 나타내고 있으나, 이에 제한되지 아니한다. 전자 장치(601)는, 예를 들면, 도킹 스테이션과 같은 중개 장치를 통해 외부 전자 장치(602)와 연결될 수 있다. 다른 예를 들면, 전자 장치는 도 7에 도시된 바와 같이 무선으로 외부 전자 장치(602)에 연결될 수도 있다.
전자 장치(601)가 외부 전자 장치(602)와 연결되면, 전자 장치(601)는 외부 전자 장치(602)를 통해 화면을 출력할 수 있다. 전자 장치(601)는 전자 장치(601)의 디스플레이에 표시되는 화면을 재구성할 수 있고, 재구성된 화면을 외부 전자 장치(602)를 통해 출력할 수 있다. 전자 장치(601)는 데스크 탑을 이용하는 것과 유사한 사용자 인터페이스(user interface) 또는 사용자 경험(user experience)을 외부 전자 장치(602)를 통해 사용자에게 제공할 수 있다.
다양한 실시 예에 따르면, 전자 장치(601)는 복수의 운영체제들을 동시에 실행할 수 있으며, 복수의 운영체제들의 화면을 동시에 표시할 수 있다. 예를 들어, 전자 장치(601)는 안드로이드 운영체제 및 리눅스 운영체제를 동시에 실행할 수 있다. 전자 장치(601)는 어플리케이션의 실행 화면을 표시하기 위해 외부 전자 장치(602)를 통해 출력되는 화면의 일부 영역 또는 전체를 차지하는 제1 윈도우(610) 및/또는 제2 윈도우(620)를 표시할 수 있다.
또한, 전자 장치(601)는 키보드, 마우스와 같은 외부 입력 장치와 유선 또는 무선으로 연결될 수 있으며, 외부 입력 장치를 통해 사용자 입력을 수신할 수도 있으나, 전자 장치(601)의 터치 스크린 방식의 디스플레이를 통해 사용자 입력을 수신할 수도 있다.
다양한 실시 예에 따르면, 외부 전자 장치(602)는 전자 장치(601)에 접속할 수 있는 다양한 외부의 장치일 수 있다. 예를 들면, 외부 전자 장치(602)는 데스크톱, 외부 모니터, TV, 랩톱, 또는 태블릿 PC를 포함할 수 있다.
도 8은 다양한 실시 예에 따른 전자 장치(예: 도 1의 전자 장치(101), 도 5의 전자 장치(501), 도 6의 전자 장치(601), 도 7의 전자 장치(601))가 제2 운영체제를 실행하는 프로세스를 도시한 순서도(800)이다.
일 실시 예에 따르면, 동작 810에서, 제1 운영체제를 기반으로 컨트롤 어플리케이션을 실행할 수 있다. 예를 들어, 전자 장치는 제1 운영체제를 기반으로 동작 중인 상태에서, 제1 운영체제와 이종의 운영체제인 제2 운영체제의 실행이 요구되는 이벤트가 발생하는 경우, 컨트롤 어플리케이션을 실행할 수 있다. 보다 구체적인 예를 들면, 전자 장치는 제2 운영체제를 기반으로 실행되는 제2 어플리케이션을 실행하도록 하는 명령이 입력되면 컨트롤 어플리케이션을 실행할 수 있다. 다른 예를 들면, 전자 장치는 제1 운영체제에 의해 제공되는 사용자 인터페이스를 통해서 컨트롤 어플리케이션을 실행시키기 위한 객체(예를 들어, 아이콘 또는 메뉴 항목)를 선택하는 사용자 입력을 수신하면 컨트롤 어플리케이션을 실행할 수 있다.
동작 820에서, 전자 장치는 운영체제 이미지를 선택하는 사용자 입력을 수신할 수 있다. 예를 들어, 전자 장치는 전자 장치는 제2 운영체제를 기반으로 실행되는 제2 어플리케이션을 실행하도록 하는 사용자 입력을 수신할 수 있다. 다른 예를 들면, 전자 장치는 컨트롤 어플리케이션의 실행 화면으로 운영체제 이미지를 선택하기 위한 운영체제 선택 사용자 인터페이스를 제공할 수도 있다. 전자 장치는 운영체제 선택 사용자 인터페이스를 이용하여 운영체제 이미지를 선택하는 사용자 입력을 수신할 수 있다.
동작 830에서, 전자 장치는 파일시스템의 마운트 제어를 지원하는 백그라운드 프로그램(예: 도 3의 데몬(233))을 이용하여 선택된 운영체제 이미지를 마운트하고, 운영체제 이미지가 컨트롤 어플리케이션에서 정의된 조건을 만족하는지 판단할 수 있다. 운영체제 이미지가 컨트롤 어플리케이션에 정의된 조건을 만족하는 경우, 동작 860에서 전자 장치는 운영체제 이미지를 이용하여 제2 운영체제를 구동시킬 수 있다.
운영체제 이미지가 컨트롤 어플리케이션에 정의된 조건을 만족하지 않는 경우, 전자 장치는 운영체제 이미지를 마운트하고, 동작 840에서 운영체제 이미지의 환경 설정을 변경할 수 있다. 예를 들어, 전자 장치는 데몬(233)에 의해 운영체제 이미지가 마운트되면, 운영체제 이미지의 루트(root) 경로의 권한 중 사용자 ID(UID) 및 그룹 ID(GID)가 컨트롤 어플리케이션(231)에서 정의한 영역에 포함되는지 여부를 확인할 수 있다. 전자 장치는 지정된 조건을 만족하는 경우 컨트롤 어플리케이션(231)에서 정의한 영역에 포함되는 것으로 판단할 수 있다. 보다 구체적인 예를 들면, 지정된 조건은 UID 및 GID 중 적어도 하나가 65536의 배수이고, 10진수의 마지막 다섯 자리가 0인 것일 수 있다.
동작 850에서, 전자 장치는 컨트롤 어플리케이션이 제2 운영체제의 동작을 제어하기 위해 필요한 패키지 파일을 운영체제 이미지에 복사할 수 있다. 예를 들면 전자 장치는 제2 운영체제에서 동작하는 패키지의 설치 파일, 컨트롤 어플리케이션과 통신을 수행하기 위한 실행 파일, 및 제2 운영체제에서 지정된 동작을 수행하는 쉘 스크립트 파일을 운영체제 이미지에 복사할 수 있다. 동작 860에서, 전자 장치는 환경 설정이 변경되고 요구되는 패키지가 설치된 운영체제 이미지를 이용하여 제2 운영체제를 실행할 수 있다.
도 9는 다양한 실시 예에 따른 컨트롤 어플리케이션이 운영체제 이미지가 사용 가능한 이미지인지 확인하고, 운영체제 이미지를 재구성하는 프로세스를 도시한 순서도(900)이다.
일 실시 예에 따르면, 동작 910에서, 컨트롤 어플리케이션(901)(예: 도 3의 컨트롤 어플리케이션(231))은 전자 장치(예: 도 1의 전자 장치(101), 도 4의 전자 장치(401), 도 5의 전자 장치(501), 도 6의 전자 장치(601), 또는 도 7의 전자 장치(601))에 저장된 운영체제 이미지를 선택할 수 있다. 예를 들어, 컨트롤 어플리케이션(901)은 디스플레이를 통해서 전자 장치에 저장된 운영체제 이미지들의 목록을 표시하고, 표시된 목록에 포함된 운영체제 이미지를 선택하는 사용자 입력을 수신할 수 있다.
동작 920에서, 컨트롤 어플리케이션(901)은 데몬(902)(예: 도 3의 데몬(233))에 선택된 운영체제 이미지에 대한 메시지를 전달할 수 있다. 여기서, 선택된 운영체제 이미지에 대한 메시지는, 운영체제 이미지가 마운트될 수 있는 이미지인지 확인하고, 운영체제 이미지가 마운트될 수 있는 경우 운영체제 이미지를 마운트할 것을 요청하는 메시지일 수 있다.
동작 930에서, 메시지를 수신한 데몬(902)은 수신된 메시지에 의해 지정된 운영체제 이미지가 마운트 가능한 포맷(예를 들어, .iso 포맷)인지 확인할 수 있다. 데몬(902)은 운영체제 이미지가 마운트 가능한 경우, 운영체제 이미지를 마운트할 수 있다. 동작 930에서, 데몬(902)은 컨트롤 어플리케이션(901)으로 마운트 동작에 대한 결과 메시지를 반환할 수 있다. 컨트롤 어플리케이션(902)은 마운트 동작에 대한 결과 메시지를 운영체제 이미지의 사용 가능 여부로서 반환 받을 수 있다.
동작 950에서, 컨트롤 어플리케이션(901)은 마운트된 운영체제 이미지의 루트 경로의 권한이 지정된 조건을 만족하는지 확인할 수 있다. 동작 950에서, 컨트롤 어플리케이션(901)은 운영체제 이미지의 루트 경로의 권한이 지정된 조건을 만족하지 않는 경우, 루트 경로, 루트 경로의 하위 폴더들 및 파일들의 권한이 지정된 조건을 만족하도록 변경할 수 있다. 일 실시 예에 따르면, 지정된 조건은 전자 장치의 메모리에 저장된 환경설정 파일에 기초하여 정의될 수 있다.
동작 960에서, 컨트롤 어플리케이션(901)은 컨트롤 어플리케이션(901)이 제2 운영체제의 동작을 제어하기 위한 패키지 파일이 운영체제 이미지에 포함되어 있는지 판단할 수 있다. 컨트롤 어플리케이션(901)은 운영체제 이미지에 포함되어 있지 않은 패키지 파일을 운영체제 이미지 내로 복사할 수 있다.
도 10은 다양한 실시 예에 따른 전자 장치가 사용자 인터페이스 모드에 따라서 운영체제 이미지를 구성하는 프로세스를 도시한 순서도(1000)이다.
동작 1010에서, 전자 장치(예: 도 1의 전자 장치(101), 도 4의 전자 장치(401), 도 5의 전자 장치(501), 도 6의 전자 장치(601), 또는 도 7의 전자 장치(601))는 컨트롤 어플리케이션을 실행할 수 있다. 예를 들어, 전자 장치는 제1 운영체제를 기반으로 동작하는 동안에 제2 운영체제를 기반으로 실행되는 프로그램의 실행 명령이 입력된 경우 컨트롤 어플리케이션을 실행할 수 있다. 다른 예를 들면, 전자 장치는 컨트롤 어플리케이션을 실행하도록 하는 객체(예: 아이콘)가 선택된 경우 컨트롤 어플리케이션을 실행할 수 있다.
동작 1020에서, 전자 장치는 사용자 인터페이스 모드를 선택하는 사용자 입력을 수신할 수 있다. 일 실시 예에 따르면, 전자 장치는 제2 운영체제에 대해 사용할 수 있는 사용자 인터페이스 모드의 목록을 디스플레이를 통해서 표시할 수 있다. 전자 장치는 표시된 사용자 인터페이스 모드의 목록으로부터 사용자 인터페이스 모드를 선택하는 사용자 입력을 수신할 수 있다. 사용자 인터페이스 모드는 제2 운영체제와 사용자가 인터랙션하기 위해 사용자에게 제공되는 사용자 인터페이스의 형태를 의미할 수 있다. 예를 들어, 사용자 인터페이스 모드는 명령줄 인터페이스(Command Line Interface, CLI) 모드 또는 그래픽 사용자 인터페이스(Graphic User Interface, GUI) 모드일 수 있다.
동작 1030에서, 전자 장치는 제2 운영체제를 구동하기 위한 운영체제 이미지에 명령줄 인터페이스 패키지를 설치할 수 있다. 예를 들어, 전자 장치는 운영체제 이미지에 Teletype writer (TTY) 및 Pseudo-Terminal Slave(PTS) 중 적어도 하나가 설치되어 있지 않은 경우, 설치되어 있지 않은 프로그램을 설치할 수 있다. 도 10에서, 동작 1030은 동작 1020 이후에 수행되는 것으로 도시되어 있으나, 도면에 도시된 순서에 한정되지 아니한다. 예를 들어 동작 1030은 동작 1020보다 먼저 수행되거나, 동작 1030과 병렬적으로 수행될 수도 있다.
동작 1040에서, 전자 장치는 운영체제 이미지의 환경설정을 확인할 수 있다. 일 실시 예에 따르면, 전자 장치는 전자 장치에 저장된 환경설정 파일에 의해 정의된 범위에 운영체제 이미지의 환경설정이 포함되지 않는 경우, 운영체제 이미지의 환경설정을 환경설정 파일에 기초하여 변경할 수 있다.
동작 1050에서, 전자 장치는 사용자 입력에 의해 선택된 사용자 인터페이스 모드에 따라서 제2 운영체제를 구동할 수 있다. 선택된 사용자 인터페이스 모드가 GUI 모드인 경우, 전자 장치는 동작 1060에서 운영체제 이미지에 그래픽 사용자 인터페이스 패키지를 더 설치할 수 있다. 예를 들어, 전자 장치는 제2 운영체제에서 발생하는 사운드 데이터를 제1 운영체제가 전달 받아서 재생하기 위한 PulseAudio 및 원격으로 제2 운영체제를 제어하기 위한 Virtual Network Computing(VNC)의 설치를 위한 실행 파일 중 적어도 하나가 운영체제 이미지에 포함되어 있지 않은 경우, 포함되어 있지 않은 대상을 운영체제 이미지에 복사할 수 있다. 일 실시 예에 따르면, 동작 1030 및 동작 1060 중 적어도 하나에서, 전자 장치는 전자 장치에 저장된 파일을 운영체제 이미지에 복사할 수 있다. 또는, 다른 실시 예에 따르면, 동작 1030 및 동작 1060 중 적어도 하나에서, 전자 장치는 패키지 관리 도구를 이용하여 네트워크로부터 필요한 파일을 다운로드하고 운영체제 이미지에 설치할 수 있다.
동작 1070에서, 전자 장치는 컨트롤 어플리케이션이 제2 운영체제에 설치된 그래픽 사용자 인터페이스 패키지를 이용하여 제2 운영체제와 통신을 수행하도록 할 수 있다. 전자 장치는 그래픽 사용자 인터페이스 패키지를 이용하여 그래픽 사용자 인터페이스를 사용자에게 제공할 수 있다. 예를 들어, 전자 장치는 도 13에 도시된 그래픽 사용자 인터페이스를 포함하는 윈도우(1310)를 출력할 수 있다.
선택된 사용자 인터페이스 모드가 CLI 모드인 경우, 동작 1075에서, 전자 장치는 컨트롤 어플리케이션이 명령줄 인터페이스 패키지를 이용하여 제2 운영체제와 통신하도록 할 수 있다. 전자 장치는 명령줄 인터페이스 패키지를 이용하여 명령줄 인터페이스를 사용자에게 제공할 수 있다. 예를 들어, 잔자 장치는 도 12에 도시된 명령줄 인터페이스를 포함하는 윈도우(1210)를 출력할 수 있다.
도 11은 다양한 실시 예에 따른 전자 장치가 제2 운영체제를 구동하도록 하기 위한 객체를 선택하기 위한 화면을 나타낸 예시도(1100)이다.
도 11은 전자 장치(예: 도 1의 전자 장치(101), 도 4의 전자 장치(401), 도 5의 전자 장치(501), 도 6의 전자 장치(601), 또는 도 7의 전자 장치(601))가 외부 전자 장치(예: 도 6 및 도 7의 외부 전자 장치(602))에 연결된 경우 외부 전자 장치를 통해서 출력되는 화면(1010)을 나타낸다.
외부 전자 장치(예: 모니터)와의 연결이 검출되면, 전자 장치는 일반 모드에서 확장 모드로 동작 모드를 변경할 수 있다. 예를 들면, 전자 장치는 동작 모드가 확장 모드인 경우 덱스(DEX) 프로그램을 실행하고, 덱스 프로그램을 이용하여 외부 전자 장치의 디스플레이에 화면을 표시할 수 있다. 일 실시 예에 따르면, 동작 모드가 일반 모드일 경우 전자 장치는 전자 장치의 표시 장치(예: 도 1의 표시 장치(160))에만 화면을 디스플레이할 수 있다.
일 실시 예에 따르면, 전자 장치는 데스크톱의 윈도우와 유사한 형태의 레이아웃을 가지는 메인 화면(1110)을 외부 전자 장치에 표시할 수 있다. 전자 장치는 어플리케이션의 실행 화면을 외부 디스플레이 장치를 통해서 더 표시할 수 있다. 예를 들면, 웹 브라우징 어플리케이션의 실행을 명령하는 사용자 입력이 수신된 경우, 전자 장치는 메인 화면(1110) 내에 웹 브라우징 윈도우(1160)를 표시할 수 있다. 사용자가 메인 화면(1110) 상에 표시되는 어플리케이션을 나타내는 객체를 선택하면, 전자 장치는 전자 장치에 설치된 어플리케이션을 실행할 수 있다. 도 12는 다양한 실시 예에 따른 전자 장치가 명령줄 인터페이스 모드로 제2 운영체제를 구동하는 경우에 출력되는 화면의 예시를 나타낸다.
다양한 실시 예에 따르면, 메인 화면(1110)은 제2 운영체제를 실행하도록 하기 위한 시각적 객체(1130)가 배치되는 영역을 포함할 수 있다. 일 실시 예에 따르면, 시각적 객체(1130)는 리눅스 운영체제를 구동하도록 하는 명령을 입력하기 위한 아이콘일 수 있다.
일 실시 예에 따르면, 시각적 객체(1130)는 제2 운영체제를 기반으로 동작하는 어플리케이션에 상응할 수 있다. 시각적 객체(1130)를 선택하는 사용자 입력이 수신되면, 전자 장치는 제2 운영체제를 구동하고, 제2 운영체제를 기반으로 시각적 객체(1130)에 상응하는 어플리케이션을 실행할 수 있다. 전자 장치는 제2 운영체제를 구동하는 프로세스에서, 제2 운영체제의 환경설정을 변경하고, 제1 운영체제를 기반으로 동작하는 컨트롤 어플리케이션이 제2 운영체제의 동작을 제어하기 위한 패키지 파일을 제2 운영체제에 대해 설치할 수 있다.
일 실시 예에 따르면, 전자 장치는 사용자 인터페이스 모드에 따라서 제2 운영체제의 사용자 인터페이스를 구성할 수 있다. 예를 들어, 사용자 인터페이스 모드가 명령줄 인터페이스 모드인 경우, 전자 장치는 도 12에 도시된 명령줄 인터페이스로 구성된 윈도우(1210)를 표시할 수 있다. 사용자 인터페이스 모드가 그래픽 사용자 인터페이스 모드인 경우, 전자 장치는 도 13에 도시된 그래픽 사용자 인터페이스로 구성된 윈도우(1310)를 표시할 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나",“A 또는 B 중 적어도 하나”, "A, B 또는 C", "A, B 및 C 중 적어도 하나” 및 “A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에, “기능적으로” 또는 “통신적으로”라는 용어와 함께 또는 이런 용어 없이, “커플드” 또는 “커넥티드”라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory(CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어™)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (20)

  1. 전자 장치에 있어서,
    컨트롤 어플리케이션 및 환경설정 파일을 저장하는 메모리; 및
    상기 메모리에 작동적으로 연결되고, 제1 운영체제에서 상기 컨트롤 어플리케이션을 실행하는 프로세서를 포함하고,
    상기 메모리는 제2 운영체제를 실행하기 위한 운영체제 이미지를 더 저장하며,
    상기 메모리는, 상기 프로세서에 의해 실행 시에, 상기 전자 장치가,
    파일 시스템의 마운트 제어를 지원하는 백그라운드 프로그램에 상기 운영체제 이미지가 상기 컨트롤 어플리케이션에 의해 사용될 수 있는 이미지인지 확인하도록 하는 메시지를 전달하고,
    상기 메시지에 대한 응답으로 상기 운영체제 이미지의 사용 가능 여부를 반환 받고,
    상기 운영체제 이미지의 환경설정이 상기 컨트롤 어플리케이션에서 정의된 조건을 만족하는지 여부를 결정하며,
    상기 운영체제 이미지의 환경설정이 상기 정의된 조건을 만족하지 않는 경우, 상기 환경설정 파일을 이용하여 상기 운영체제 이미지의 환경 설정을 변경하고,
    상기 컨트롤 어플리케이션이 상기 제2 운영체제의 동작을 제어하기 위한 패키지 파일을 상기 운영체제 이미지에 복사하도록 하는 인스트럭션들을 저장하는,
    전자 장치.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 인스트럭션들은, 상기 프로세서에 의해 실행 시에, 상기 전자 장치가,
    상기 운영체제 이미지가 상기 컨트롤 어플리케이션에 의해 사용될 수 있는 이미지인 경우, 상기 백그라운드 프로그램을 이용하여 상기 운영체제 이미지를 마운트하고,
    상기 마운트된 운영체제 이미지의 루트(root) 경로의 권한이 지정된 조건을 만족하지 않는 경우, 상기 지정된 조건을 만족하도록 상기 권한을 변경하도록 하는, 전자 장치.
  4. 청구항 3에 있어서,
    상기 정의된 조건을 만족하지 않는 경우는, 상기 루트 경로의 권한 중 사용자 ID 및 그룹 ID 중 적어도 하나가 상기 컨트롤 어플리케이션에서 정의한 영역에 포함되지 않는 경우인, 전자 장치.
  5. 청구항 4에 있어서,
    상기 영역은,
    상기 사용자 ID 및 그룹 ID의 값이 65536의 배수이고, 10진수의 마지막 다섯 자리가 0인, 전자 장치.
  6. 청구항 1에 있어서,
    상기 패키지 파일은,
    상기 제2 운영체제에서 동작하는 패키지의 설치 파일, 상기 컨트롤 어플리케이션과 통신을 수행하기 위한 실행 파일, 및 상기 제2 운영체제에서 지정된 동작을 수행하는 쉘 스크립트(shell script) 파일을 포함하는, 전자 장치.
  7. 청구항 1에 있어서,
    상기 인스트럭션들은, 상기 프로세서에 의해 실행 시에, 상기 전자 장치가,
    상기 제2 운영체제에 대한 사용자 인터페이스 모드를 선택하고,
    상기 선택된 사용자 인터페이스 모드에 기초하여 상기 패키지 파일을 설치하도록 하고,
    상기 사용자 인터페이스 모드는,
    명령줄 인터페이스 모드 또는 그래픽 사용자 인터페이스 모드 중 어느 하나인, 전자 장치.
  8. 삭제
  9. 청구항 7에 있어서,
    상기 인스트럭션들은, 상기 프로세서에 의해 실행 시에, 상기 전자 장치가,
    상기 선택된 사용자 인터페이스 모드가 그래픽 사용자 인터페이스 모드인 경우, 상기 제2 운영체제에서 발생하는 사운드를 상기 제1 운영체제가 전달 받아서 재생하기 위한 프로그램 패키지 또는 상기 제2 운영체제의 그래픽 데스크톱 시스템을 원격으로 제어하기 위한 프로그램 패키지 중 적어도 하나를 상기 운영체제 이미지에 대해 더 설치하도록 하는, 전자 장치.
  10. 삭제
  11. 청구항 1에 있어서,
    상기 인스트럭션들은, 상기 프로세서에 의해 실행 시에, 상기 전자 장치가,
    상기 운영체제 이미지를 선택하는 사용자 입력에 응답하여, 상기 운영체제 이미지가 상기 컨트롤 어플리케이션에 의해 사용될 수 있는 이미지인지 확인하며,
    상기 운영체제 이미지의 환경설정이 상기 정의된 조건을 만족하지 않는 경우, 상기 운영체제 이미지의 환경 설정을 변경하고 상기 패키지 파일을 상기 이미지에 복사한 이후에 상기 제1 운영체제의 실행을 위해 상기 제1 운영체제의 커널을 기초로 하는 컨테이너에서 상기 제2 운영체제를 실행하고,
    상기 제2 운영체제에서 실행되는 프로그램에 관한 데이터를 상기 패키지 파일에 의해 설치된 프로그램을 이용한 소켓 통신을 통해서 상기 제1 운영체제가 획득하며,
    상기 컨트롤 어플리케이션을 이용하여 상기 제1 운영체제를 기반으로, 상기 획득된 데이터를 처리하도록 상기 전자 장치에 포함된 하드웨어를 제어하도록 하는, 전자 장치.
  12. 전자 장치를 제어하는 방법에 있어서,
    상기 전자 장치에 설치된 제1 운영체제를 기반으로 컨트롤 어플리케이션을 실행하는 동작;
    제2 운영체제를 실행하기 위한 운영체제 이미지를 선택하는 사용자 입력을 수신하는 동작;
    파일 시스템의 마운트 제어를 지원하는 백그라운드 프로그램에 상기 운영체제 이미지가 상기 컨트롤 어플리케이션에 의해 사용될 수 있는 이미지인지 확인하도록 하는 메시지를 전달하는 동작;
    상기 메시지에 대한 응답으로 상기 운영체제 이미지의 사용 가능 여부를 반환 받는 동작;
    상기 운영체제 이미지의 환경설정이 상기 컨트롤 어플리케이션에서 정의된 조건을 만족하는지 결정하는 동작;
    상기 운영체제 이미지의 환경설정이 상기 정의된 조건을 만족하지 않는 경우, 환경설정 파일을 이용하여 상기 운영체제 이미지의 환경 설정을 변경하는 동작; 및
    상기 컨트롤 어플리케이션이 상기 제2 운영체제의 동작을 제어하기 위한 패키지 파일을 상기 운영체제 이미지에 복사하는 동작을 포함하는,
    방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020190041198A 2019-04-09 2019-04-09 이종 운영체제를 실행하는 전자 장치 및 그 방법 Active KR102760965B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190041198A KR102760965B1 (ko) 2019-04-09 2019-04-09 이종 운영체제를 실행하는 전자 장치 및 그 방법
US17/594,286 US11836503B2 (en) 2019-04-09 2020-04-06 Electronic device for executing heterogeneous operating systems and method therefor
PCT/KR2020/004634 WO2020209561A1 (ko) 2019-04-09 2020-04-06 이종 운영체제를 실행하는 전자 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190041198A KR102760965B1 (ko) 2019-04-09 2019-04-09 이종 운영체제를 실행하는 전자 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20200118980A KR20200118980A (ko) 2020-10-19
KR102760965B1 true KR102760965B1 (ko) 2025-02-03

Family

ID=72751727

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190041198A Active KR102760965B1 (ko) 2019-04-09 2019-04-09 이종 운영체제를 실행하는 전자 장치 및 그 방법

Country Status (3)

Country Link
US (1) US11836503B2 (ko)
KR (1) KR102760965B1 (ko)
WO (1) WO2020209561A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11971993B2 (en) * 2021-06-01 2024-04-30 Microsoft Technology Licensing, Llc Firmware-based secure tenancy transfer
US11995420B2 (en) 2021-08-19 2024-05-28 Red Hat, Inc. Generating a build process for building software in a target environment
CN113407086B (zh) * 2021-08-20 2021-11-30 北京鲸鲮信息系统技术有限公司 对象拖拽方法、设备和存储介质
CN114281555A (zh) * 2021-11-08 2022-04-05 北京鲸鲮信息系统技术有限公司 应用状态同步方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070118654A1 (en) 2005-11-23 2007-05-24 Sun Microsystems, Inc. Method and apparatus for provisioning heterogeneous operating systems onto heterogeneous hardware systems
US20120309464A1 (en) 2011-06-01 2012-12-06 Lg Electronics Inc. Mobile terminal

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6066182A (en) * 1998-11-05 2000-05-23 Platinum Technology Ip, Inc. Method and apparatus for operating system personalization during installation
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
TWI520069B (zh) * 2010-08-11 2016-02-01 緯創資通股份有限公司 整合運用基於同一系統核心之異質作業系統之方法
KR101776042B1 (ko) * 2011-04-13 2017-09-07 주식회사 케이티 단말의 다중 운영체제 구동장치 및 운영체제 전환방법
US20140033188A1 (en) * 2012-07-26 2014-01-30 Microsoft Corporation System updates from cloud blob storage using vhd differentials
KR102303417B1 (ko) * 2015-06-19 2021-09-23 삼성전자주식회사 복수의 운영 체제를 지원하는 전자 장치 제어 방법
CN109542524B (zh) * 2018-11-22 2022-08-05 一铭软件股份有限公司 一种Linux与安卓相互快速切换方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070118654A1 (en) 2005-11-23 2007-05-24 Sun Microsystems, Inc. Method and apparatus for provisioning heterogeneous operating systems onto heterogeneous hardware systems
US20120309464A1 (en) 2011-06-01 2012-12-06 Lg Electronics Inc. Mobile terminal

Also Published As

Publication number Publication date
US11836503B2 (en) 2023-12-05
WO2020209561A1 (ko) 2020-10-15
KR20200118980A (ko) 2020-10-19
US20220164193A1 (en) 2022-05-26

Similar Documents

Publication Publication Date Title
CN112771489B (zh) 控制异构操作系统和电子设备的执行的方法及其存储介质
US11693707B2 (en) Electronic device for executing multiple operating systems and method of controlling same
US12061892B2 (en) Firmware updating method, and electronic apparatus and storage media for same
EP3654182B1 (en) Electronic device and method for providing in-vehicle infotainment service
KR102760965B1 (ko) 이종 운영체제를 실행하는 전자 장치 및 그 방법
US11435985B2 (en) Electronic device and operation method thereof
KR102720005B1 (ko) 어플리케이션의 최적화 방법 및 이를 지원하는 전자 장치
EP3772681B1 (en) Electronic device and method for sharing data thereof
KR20200014003A (ko) 복수의 출력 화면 환경에서 가상 입력 인터페이스의 표시를 제어하기 위한 전자 장치 및 그의 동작 방법
CN114096946B (zh) 用于管理应用的方法和装置
TWI628938B (zh) 使用透過網際網路協定之通用序列匯流排(UoIP)以與其他裝置共用非USB感應器的技術
US11086538B2 (en) Method and electronic device for initializing storage
KR20210101075A (ko) 전자 장치 및 전자 장치의 클립 보드 운용 방법
KR102771882B1 (ko) 전자 장치 및 이를 이용한 메모리 관리 방법
KR102666045B1 (ko) 클라우드 서비스를 제공하는 전자 장치 및 그 동작 방법
EP4538863A1 (en) Electronic device for compiling files on basis of designated events, and method therefor
KR20240022948A (ko) 지정된 이벤트에 기반하여 파일을 컴파일하기 위한 전자 장치 및 그 방법
KR20220077694A (ko) 하이퍼바이저를 이용한 가상 머신 모니터링 방법 및 이를 지원하는 전자 장치

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20190409

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20220406

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20190409

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240221

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20241029

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20250122

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20250123

End annual number: 3

Start annual number: 1

PG1601 Publication of registration