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

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

Info

Publication number
WO2020209561A1
WO2020209561A1 PCT/KR2020/004634 KR2020004634W WO2020209561A1 WO 2020209561 A1 WO2020209561 A1 WO 2020209561A1 KR 2020004634 W KR2020004634 W KR 2020004634W WO 2020209561 A1 WO2020209561 A1 WO 2020209561A1
Authority
WO
WIPO (PCT)
Prior art keywords
operating system
electronic device
image
control application
system image
Prior art date
Application number
PCT/KR2020/004634
Other languages
English (en)
French (fr)
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 US17/594,286 priority Critical patent/US11836503B2/en
Publication of WO2020209561A1 publication Critical patent/WO2020209561A1/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/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/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; CALCULATING OR 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; 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Definitions

  • OS operating systems
  • GoogleTM's AndroidTM and AppleTM's iOSTM Samsung ElectronicsTM and IntelTM's TizenTM
  • Linux's UBUNTUTM Linux's UBUNTUTM
  • MozillaTM's FireFox OSTM and MicrosoftTM's Windows MobileTM Were released.
  • an operating system distributor distributes an operating system image online in the form of an image file (eg, .iso), and a user of an electronic device can install the operating system image in the memory of the electronic device. Accordingly, cases of executing various operating systems in electronic devices are increasing.
  • VNC virtual network computing
  • a virtual machine such as VNC may configure an environment in which a plurality of operating systems use the same hardware.
  • the Android operating system and Linux can share and use a graphics processing unit (GPU) through a virtual machine.
  • GPU graphics processing unit
  • a user of the electronic device may additionally install an operating system that is variously distributed to the electronic device operating based on the main operating system and use an application program that can be executed based on an operating system different from the main operating system.
  • An electronic device may include a memory storing a control application and an environment setting file, and a processor operatively connected to the memory and executing the control application in a first operating system. .
  • the memory may further store an operating system image for executing the second operating system.
  • the memory, the processor determines whether the environment setting of the operating system image satisfies a condition defined in the control application, and when the environment setting of the operating system image does not satisfy the defined condition, the environment setting Instructions for changing an environment setting of the operating system image by using a file and causing the control application to copy a package file for controlling the operation of the second operating system to the operating system image may be stored.
  • a method includes an operation of executing a control application based on a first operating system installed in an electronic device, and an operation of receiving a user input for selecting an operating system image for executing a second operating system. , Determining whether the environment setting of the operating system image satisfies the condition defined in the control application, and when the environment setting of the operating system image does not satisfy the defined condition, the operating system image is An operation of changing an environment setting and an operation of copying a package file for controlling the operation of the second operating system by the control application to the operating system image.
  • the storage medium includes an operation of executing a control application based on a first operating system installed in an electronic device, and receiving a user input for selecting an operating system image for executing a second operating system. Operation, an operation of determining whether the environment setting of the operating system image satisfies a condition defined in the control application, and when the environment setting of the operating system image does not satisfy the defined condition, the operating system image using the environment setting file.
  • a computer program for performing a method including an operation of changing an environment setting of and an operation of copying a package file for controlling the operation of the second operating system to the operating system image by the control application may be stored.
  • the electronic device modifies the operating system image so that a user can simply execute a heterogeneous operating system. You can do it.
  • FIG. 1 illustrates an electronic device in a network environment according to various embodiments of the present disclosure.
  • FIG. 2 is a diagram illustrating an example of components of an electronic device for controlling execution of a heterogeneous operating system according to various embodiments of the present disclosure, according to an exemplary embodiment.
  • FIG. 3 is a diagram illustrating an example of detailed components of an electronic device for controlling execution of a heterogeneous operating system according to various embodiments of the present disclosure.
  • FIG. 4 is a diagram illustrating an internal structure of an electronic device for controlling execution of a heterogeneous operating system according to various embodiments of the present disclosure.
  • FIG. 5 is a diagram illustrating an example of a screen for controlling execution of a heterogeneous operating system in an electronic device according to various embodiments of the present disclosure.
  • FIG. 6 is a diagram illustrating an operating environment of an electronic device according to various embodiments of the present disclosure.
  • FIG. 7 is a diagram illustrating an operating environment of an electronic device according to another exemplary embodiment.
  • FIG. 8 is a flowchart illustrating a process in which an electronic device executes a second operating system according to various embodiments of the present disclosure.
  • FIG. 9 is a flowchart illustrating a process of a control application checking whether an operating system image is an available image and configuring an operating system image according to various embodiments of the present disclosure.
  • FIG. 10 is a flowchart illustrating a process of configuring an operating system image according to a user interface mode by an electronic device according to various embodiments of the present disclosure.
  • FIG. 11 illustrates an example of a screen for selecting an object for causing an electronic device to drive a second operating system according to various embodiments of the present disclosure.
  • FIG. 12 illustrates an example of a screen displayed when an electronic device drives a second operating system in a command line interface mode according to various embodiments of the present disclosure.
  • FIG. 13 illustrates an example of a screen output when an electronic device drives a second operating system in a graphic user interface mode, according to various embodiments of the present disclosure.
  • FIG. 1 is a block diagram of an electronic device 101 in a network environment 100 according to various embodiments.
  • the electronic device 101 communicates with the electronic device 102 through a first network 198 (for example, a short-range wireless communication network), or a second network 199 It is possible to communicate with the electronic device 104 or the server 108 through (eg, a long-distance wireless communication network).
  • the electronic device 101 may communicate with the electronic device 104 through the server 108.
  • the electronic device 101 includes a processor 120, a memory 130, an input device 150, an audio output device 155, a display device 160, an audio module 170, and a sensor module ( 176, interface 177, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196, or antenna module 197 ) Can be included.
  • a sensor module 176, interface 177, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196, or antenna module 197
  • at least one of these components may be omitted or one or more other components may be added to the electronic device 101.
  • some of these components may be implemented as one integrated circuit.
  • the sensor module 176 eg, a fingerprint sensor, an iris sensor, or an illuminance sensor
  • the display device 160 eg, a display.
  • the processor 120 for example, executes software (eg, a program 140) to implement at least one other component (eg, a hardware or software component) of the electronic device 101 connected to the processor 120. It can be controlled and can perform various data processing or operations. According to an embodiment, as at least part of data processing or operation, the processor 120 may store commands or data received from other components (eg, the sensor module 176 or the communication module 190) to the volatile memory 132. The command or data stored in the volatile memory 132 may be processed, and result data may be stored in the nonvolatile memory 134.
  • software eg, a program 140
  • the processor 120 may store commands or data received from other components (eg, the sensor module 176 or the communication module 190) to the volatile memory 132.
  • the command or data stored in the volatile memory 132 may be processed, and result data may be stored in the nonvolatile memory 134.
  • the processor 120 includes a main processor 121 (eg, a central processing unit or an application processor), and a secondary processor 123 (eg, a graphic processing unit, an image signal processor) that can be operated independently or together , A sensor hub processor, or a communication processor). Additionally or alternatively, the coprocessor 123 may be set to use lower power than the main processor 121 or to be specialized for a designated function. The secondary processor 123 may be implemented separately from the main processor 121 or as a part thereof.
  • the coprocessor 123 is, for example, on behalf of the main processor 121 while the main processor 121 is in an inactive (eg, sleep) state, or the main processor 121 is active (eg, an application is executed). ) While in the state, together with the main processor 121, at least one of the components of the electronic device 101 (for example, the display device 160, the sensor module 176, or the communication module 190) It is possible to control at least some of the functions or states related to. According to an embodiment, the coprocessor 123 (eg, an image signal processor or a communication processor) may be implemented as part of another functionally related component (eg, the camera module 180 or the communication module 190). have.
  • an image signal processor or a communication processor may be implemented as part of another functionally related component (eg, the camera module 180 or the communication module 190). have.
  • the memory 130 may store various data used by at least one component of the electronic device 101 (eg, the processor 120 or the sensor module 176).
  • the data may include, for example, software (eg, the program 140) and input data or output data for commands related thereto.
  • the memory 130 may include a volatile memory 132 or a nonvolatile memory 134.
  • the program 140 may be stored as software in the memory 130, and may include, for example, an operating system 142, middleware 144, or an application 146.
  • the input device 150 may receive a command or data to be used for a component of the electronic device 101 (eg, the processor 120) from an outside (eg, a user) of the electronic device 101.
  • the input device 150 may include, for example, a microphone, a mouse, a keyboard, or a digital pen (eg, a stylus pen).
  • the sound output device 155 may output an sound signal to the outside of the electronic device 101.
  • the sound output device 155 may include, for example, a speaker or a receiver.
  • the speaker can be used for general purposes such as multimedia playback or recording playback, and the receiver can be used to receive incoming calls. According to one embodiment, the receiver may be implemented separately from the speaker or as part of it.
  • the display device 160 may visually provide information to the outside of the electronic device 101 (eg, a user).
  • the display device 160 may include, for example, a display, a hologram device, or a projector and a control circuit for controlling the device.
  • the display device 160 may include a touch circuitry set to sense a touch, or a sensor circuit (eg, a pressure sensor) set to measure the strength of a force generated by the touch. have.
  • the audio module 170 may convert sound into an electric signal or, conversely, convert an electric signal into sound. According to an embodiment, the audio module 170 acquires sound through the input device 150, the sound output device 155, or an external electronic device (for example, an external electronic device directly or wirelessly connected to the electronic device 101). Sound may be output through the electronic device 102 (for example, a speaker or headphones).
  • the sensor module 176 detects an operating state (eg, power or temperature) of the electronic device 101, or an external environmental state (eg, a user state), and generates an electrical signal or data value corresponding to the detected state. can do.
  • the sensor module 176 may include, for example, a gesture sensor, a gyro sensor, an atmospheric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, It may include a temperature sensor, a humidity sensor, or an illuminance sensor.
  • the interface 177 may support one or more designated protocols that may be used for the electronic device 101 to directly or wirelessly connect with an external electronic device (eg, the electronic device 102 ).
  • the interface 177 may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.
  • HDMI high definition multimedia interface
  • USB universal serial bus
  • SD card interface Secure Digital Card
  • the connection terminal 178 may include a connector through which the electronic device 101 can be physically connected to an external electronic device (eg, the electronic device 102 ).
  • the connection terminal 178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).
  • the haptic module 179 may convert an electrical signal into a mechanical stimulus (eg, vibration or movement) or an electrical stimulus that a user can perceive through a tactile or motor sense.
  • the haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
  • the camera module 180 may capture a still image and a video.
  • the camera module 180 may include one or more lenses, image sensors, image signal processors, or flashes.
  • the power management module 188 may manage power supplied to the electronic device 101.
  • the power management module 188 may be implemented as, for example, at least a part of a power management integrated circuit (PMIC).
  • PMIC power management integrated circuit
  • the battery 189 may supply power to at least one component of the electronic device 101.
  • the battery 189 may include, for example, a non-rechargeable primary cell, a rechargeable secondary cell, or a fuel cell.
  • the communication module 190 is a direct (eg, wired) communication channel or a wireless communication channel between the electronic device 101 and an external electronic device (eg, electronic device 102, electronic device 104, or server 108). It is possible to support establishment and communication through the established communication channel.
  • the communication module 190 operates independently of the processor 120 (eg, an application processor), and may include one or more communication processors that support direct (eg, wired) communication or wireless communication.
  • the communication module 190 is a wireless communication module 192 (eg, a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 194 (eg : A LAN (local area network) communication module, or a power line communication module) may be included.
  • a wireless communication module 192 eg, a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module
  • GNSS global navigation satellite system
  • wired communication module 194 eg : A LAN (local area network) communication module, or a power line communication module
  • a corresponding communication module is a first network 198 (for example, a short-range communication network such as Bluetooth, WiFi direct or IrDA (infrared data association)) or a second network 199 (for example, a cellular network, the Internet, or It may communicate with the external electronic device 104 through a computer network (for example, a telecommunication network such as a LAN or WAN).
  • a computer network for example, a telecommunication network such as a LAN or WAN.
  • These various types of communication modules may be integrated into one component (eg, a single chip), or may be implemented as a plurality of separate components (eg, multiple chips).
  • the wireless communication module 192 uses subscriber information (e.g., International Mobile Subscriber Identifier (IMSI)) stored in the subscriber identification module 196 in a communication network such as the first network 198 or the second network 199.
  • subscriber information e.g., International Mobile Subscriber Identifier (IMSI)
  • IMSI International Mobile Subscriber Identifier
  • the antenna module 197 may transmit a signal or power to the outside (eg, an external electronic device) or receive from the outside.
  • the antenna module 197 may include one antenna including a conductor formed on a substrate (eg, a PCB) or a radiator formed of a conductive pattern.
  • the antenna module 197 may include a plurality of antennas. In this case, at least one antenna suitable for a communication method used in a communication network such as the first network 198 or the second network 199 is, for example, provided by the communication module 190 from the plurality of antennas. Can be chosen.
  • the signal or power may be transmitted or received between the communication module 190 and an external electronic device through the at least one selected antenna.
  • other components eg, RFIC
  • other than the radiator may be additionally formed as part of the antenna module 197.
  • At least some of the components are connected to each other through a communication method (e.g., bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI))) between peripheral devices and signals ( E.g. commands or data) can be exchanged with each other.
  • a communication method e.g., bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)
  • GPIO general purpose input and output
  • SPI serial peripheral interface
  • MIPI mobile industry processor interface
  • commands or data may be transmitted or received between the electronic device 101 and the external electronic device 104 through the server 108 connected to the second network 199.
  • Each of the external electronic devices 102 and 104 may be a device of the same or different type as the electronic device 101.
  • all or part of the operations executed by the electronic device 101 may be executed by one or more of the external electronic devices 102, 104, or 108.
  • the electronic device 101 needs to perform a function or service automatically or in response to a request from a user or another device, the electronic device 101 does not execute the function or service by itself.
  • One or more external electronic devices receiving the request may execute at least a part of the requested function or service, or an additional function or service related to the request, and transmit the execution result to the electronic device 101.
  • the electronic device 101 may process the result as it is or additionally and provide it as at least a part of a response to the request.
  • cloud computing, distributed computing, or client-server computing technology may be used.
  • FIG. 2 is a diagram 200 illustrating an example of components of an electronic device for controlling execution of heterogeneous operating systems according to various embodiments of the present disclosure, according to an embodiment.
  • the electronic device (eg, the electronic device 101 of FIG. 1) includes an operating system (OS) 210 and may simultaneously execute a plurality of operating systems.
  • the operating system 210 may include a first operating system 230 and a second operating system 220.
  • the first operating system 230 may be an embedded environment intended to be used in an electronic device, for example, an Android operating system
  • the second operating system 220 may be a Linux operating system.
  • the second operating system 220 may include Ubuntu® for a Linux-based operating system.
  • the first operating system 230 may be referred to as a host operating system
  • the second operating system 220 may be referred to as a guest operating system.
  • the first operating system 230 and the second operating system 220 may operate independently and coexist with each other, and may be mutually dependent when operating based on Linux.
  • the first operating system 230 and the second operating system 220 of the operating system 210 can communicate with the kernel 240 and can communicate with each other as indicated by arrows.
  • examples of operating systems that can be included in the operating system 210 are Android and Linux, but various other types of operating systems including Android and Linux may be added or replaced.
  • the operating system 210 may include two or more operating systems of various types, and a plurality of operating systems can independently communicate with the same kernel 240 (or other cores/kernels).
  • the second operating system 220 may be driven using an operating system image distributed from a distributor of the second operating system 220.
  • the operating system image may be stored in a memory (for example, the memory 130 of FIG. 1) in the form of an ISO image file, for example, and may mean an object configured to drive the second operating system 220. have.
  • the shape of the object for driving the second operating system 220 is not limited to the shape of an image file.
  • an object configured to drive the second operating system 220 may be referred to as an operating system image.
  • the kernel 240 connects and manages interactions between physical components of the device hardware 250 and individual middleware of the first operating system 230 and the second operating system 220 of the operating system 210, thereby Can be assigned to each of them.
  • Device hardware 250 may include various hardware devices.
  • the device hardware 250 may be devices coupled to a processor (eg, the processor 120 of FIG. 1) configured to perform various functions and operations.
  • the device hardware 250 may include a memory combined with a processor (eg, the processor 120 of FIG. 1), and the memory (eg, the memory 130 of FIG. 1) performs execution of a heterogeneous operating system. It may store instructions executable on a computer configured to perform various functions and operations for controlling.
  • the electronic device may execute the second operating system using an operating system image stored in a memory (eg, the memory 130 of FIG. 1 ).
  • the processor may execute instructions stored in the memory to process data or control components of the electronic device to perform an operation of the electronic device.
  • FIG. 3 is a diagram 300 illustrating an example of detailed components of an electronic device for controlling execution of a heterogeneous operating system according to various embodiments of the present disclosure.
  • FIG. 3 is for explaining an example, and the electronic device may further include other functions or components, and some components may be omitted.
  • the electronic device may include an operating system 210 including a plurality of operating systems, a kernel 240, and device hardware 250.
  • the operating system 210 may include a plurality of heterogeneous operating systems, for example, as shown in FIG. 2, including a first operating system 230 and a second operating system (eg, the second operating system 220 of FIG. 2 ). can do.
  • the first operating system 230 may be an Android-based operating system, and may include a control application 231 and a first application 232.
  • the first application 232 is at least one application operable in the Android operating system, and may be referred to as an application program.
  • the first application 232 may correspond to various applications operable based on the Android operating system such as a video playback application and a web browser application.
  • the first operating system 230 is a main operating system that operates when the electronic device is booted, and may be referred to as a host operating system or a main operating system.
  • the first operating system 230 may execute a control application 231 for managing system resources and interacting with a guest operating system, which is one or more other operating systems.
  • the first operating system 230 includes data based on the first operating system 230 and an operating system different from the first operating system 230 (a second operating system (eg, the second operating system 220 of FIG. 2 )). It may include a control application 231 for processing and controlling the base data.
  • a control application 231 for processing and controlling the base data.
  • the control application 231 may process and control Android operating system-based data and Linux-based data.
  • the control application 231 communicates with the running guest operating system (second operating system) process through the container 315 using the kernel 240 of the first operating system 230 can do.
  • the control application 231 transfers an event occurring in the process of the guest operating system to the process of the first operating system 230 (for example, an Android operating system) or transmits an event occurring in the process of the first operating system 230 to the guest operating system.
  • the control application 231 may be referred to as a LoD (linux on dex) application.
  • the guest operating system (second operating system) is executed through the container 315, and may include a plurality of applications (eg, the second application 221) operable in the guest operating system.
  • the guest operating system executed through the container 315 may include at least one communication program 222.
  • the communication program 222 is a component for communication with the first operating system 230 and may perform communication with the control application 231.
  • the communication program 222 transmits data related to the guest operating system executed in the container 315 to the outside of the container (eg, the control application 231 of the first operating system 230) using socket communication.
  • the first operating system 230 may obtain data related to a guest operating system isolated and operated using the container 315 from the communication program 222, and based on the obtained guest operating system data, the guest operating system It can handle processes related to.
  • the operating system 210 or the first operating system 230 may include a daemon 233 in a multitasking operating system.
  • the daemon 233 may be referred to as a namespace tool (NST) daemon.
  • the daemon 233 may be a program running in the background of the electronic device for the control application 231.
  • the daemon 233 may communicate with the control application 231 and create a container 315 for executing a guest operating system, as well as, for example, of the kernel 240 such as the namespace 321 and Cgroups 324. Operation processes such as control for various functions and mount control of the file system 325 may be supported.
  • the daemon 233 may support the operation process of the guest operating system without terminating the process of the host operating system.
  • the daemon 233 is included in the operating system 210 while being independent from the container 315 and the first operating system 230 related to the second operating system, which is a guest operating system, but this is only an example, It may not be limited thereto.
  • the daemon 233 since the daemon 233 uses the kernel 240 of the first operating system 230, it may be located above the kernel 240 when viewed in a software hierarchical structure, and its location is not limited thereto.
  • the processor of the electronic device mounts the operating system image on the daemon 233.
  • the message may include a message for checking whether the operating system image is an image that can be used by the control application 231.
  • the processor may return whether the operating system image is available or not in response to the message.
  • the daemon 233 may return a result indicating that the mount operation has been successfully completed as whether or not the operating system image can be used.
  • the second operating system may be driven as a virtual operating system using the container 315.
  • the control application 231 in order for the second operating system to run together with the first operating system 230 using the container 315, the control application 231 must be able to access the second operating system installed by the operating system image.
  • the control application 231 operating based on the first operating system 230 is used as the second operating system. It must be able to access the base file system, and must be able to handle operations such as input/output based on the second operating system.
  • operating system images distributed by various distributors have various configurations, and packages installed in the operating system (eg, packages for controlling input/output of the operating system) may be configured differently. Therefore, it may not be possible to normally execute the second operating system using the container 315.
  • the electronic device may determine whether the environment setting of an operating system image for executing the second operating system satisfies a condition defined in the control application 231. For example, in the electronic device, when an operating system image is mounted by the daemon 233, the user ID (UID) and group ID (GID) of the authority of the root path of the operating system image are areas defined by the control application 231 You can check whether it is included in. If the specified condition is satisfied, the electronic device may determine that it is included in the area defined by the control application 231. For a more specific example, the specified condition may be that at least one of the UID and GID is a multiple of 65536, and the last five digits of the decimal number are 0.
  • the electronic device configures the environment setting of the operating system image based on the environment setting file stored in the memory (for example, the memory 130 of FIG. 1). You can change it.
  • the environment setting file may be a file including environment setting values of an operating system image to be configured in order to execute the operating system image.
  • the electronic device may change UIDs and GIDs for subfolders and files, including a root path for an operating system image, to satisfy a specified condition.
  • the control application 231 may define and use 1638400000 as a base UID.
  • the environment setting file may include information for allocating a range of a user ID for controlling root authority in the container 315.
  • the configuration file may allow the electronic device to allocate the SE AndroidTM domain for access right control in the container 315.
  • the environment setting file may cause the electronic device to set a device virtual terminal for connecting the second operating system to the input/output device.
  • the environment setting file may cause the electronic device to set a script file for executing the second operating system in the container 315.
  • the electronic device may execute the second operating system in a command line (CLI) mode.
  • CLI command line
  • the environment setting file may set up a software storage for package installation by the electronic device and update the package for environment setting of the graphic user interface with respect to the operating system image.
  • the electronic device may copy a package file for allowing the control application 231 to operate the second operating system 220 in the operating system image.
  • a package file for allowing the control application 231 to operate the second operating system 220 in the operating system image For example, in the electronic device, an installation file of a program package operating in the second operating system 220, an executable file for communicating with the control application 231 by the second operating system, and the control application 231 in the second operating system
  • At least one of the package files can be copied into the operating system image.
  • the file copied to the operating system image may be stored in a designated location of the electronic device or may be downloaded from an external server.
  • the electronic device may use the container 315 to simultaneously execute the second operating system and the first operating system 230 based on the mounted operating system image.
  • the container 315 may be created by the control application 231.
  • the processor of the electronic device eg, the processor 120 of FIG. 1
  • the processor may control the first operating system 230 to generate the container 315.
  • the processor may create a container 315 for execution of a second operating system, which is a guest operating system, using the control application 315 installed in the first operating system 230.
  • the processor may create the container 315 when a user command requesting execution of the second operating system is input. For example, when a user selects (eg, double-clicks) an icon for executing an application that can be executed based on the second operating system, the processor may create a container 315 for execution of the second operating system.
  • the electronic device may allocate a container created to execute a heterogeneous operating system based on a host operating system as the container 315 for executing the second operating system.
  • control application 231 may execute a second operating system through the container 315 (or the specific container). Accordingly, the electronic device does not pre-allocate or store all data necessary for an application operating based on the second operating system as well as data for driving the second operating system. After generating the container 315 in response to receiving a user input for driving, the second operating system allocates necessary data to the created container 315, thereby enabling simultaneous execution of heterogeneous operating systems.
  • control application 231 may allocate and provide data necessary to execute an application based on a second operating system (eg, the second application 221) through the container 315.
  • a second operating system eg, the second application 221
  • the container 315 is created using isolation technology rather than virtualization. For example, if the first operating system 230 is running, an isolated first operating system without a booting process for executing the second operating system 2 Can only handle operating system processes. Accordingly, since the control application 231 of the first operating system 230 can manage and distribute images in file units through the container 315, it is possible to simultaneously run an operating system different from the currently running operating system with the minimum capacity. It can be possible.
  • the container 315 uses the kernel 240 of the first operating system 230, which is a host operating system, and can allocate only memory necessary for an application running based on the second operating system. By overcoming the limitations of virtualization of a machine, it is possible to control heterogeneous operating systems without overhead on the performance of the host operating system.
  • the kernel 240 is executed as a Linux kernel of the first operating system 230 (for example, an Android operating system), and the control application 231 operates a guest operating system (for example, a Linux operating system).
  • a container 315 may be created with a container function.
  • the kernel 240 may be a program that provides various functions for executing an operating system. For example, the kernel 240 allocates a process for executing a guest operating system related to the first operating system 230 to a namespace, the namespace function 321, the security function 322, and the device hardware 250 of the electronic device.
  • a driver function 323 for accessing the components of the guest operating system
  • a Cgroups (control groups) function 324 for allocating a resource that allocates a CPU core or memory capacity that can be used by the guest operating system
  • a file storage and file It may include at least one of the managed file system functions 325.
  • the container 315 is an environment for running a virtual operating system independently from the first operating system 230, and the Linux operating system running in the container 315 is Ubuntu made based on a kernel supporting Linux containers. It could be a Linux distribution like (UbuntuTM) or Debian. Meanwhile, the creation of the container 315 is not limited to the configurations illustrated in FIG. 3, and may be generated using a Linux namespace container.
  • the device hardware 250 includes at least one hardware component, and may include a processor (eg, CPU 331), and memory (eg, RAM 332).
  • Device hardware 250 may additionally include other input devices such as a keyboard, mouse, and/or touch screen (eg, touch device 335), an audio device 333, an output device such as a speaker and/or display 334, or an external device. It may include various other components and resources, such as storage device 336.
  • FIG 4 is an internal structure diagram 400 of an electronic device for controlling execution of heterogeneous operating systems according to various embodiments of the present disclosure.
  • an electronic device 401 (eg, the electronic device 101 of FIG. 1) according to various embodiments is a device (eg, a smart phone or a tablet computer) that controls execution of a heterogeneous operating system, and includes a processor 420 (eg, the processor 120 of FIG. 1), a memory 430 (eg, the memory 130 of FIG. 1) and a display 460 (eg, the display device 160 of FIG. 1). I can.
  • a processor 420 eg, the processor 120 of FIG. 1
  • a memory 430 eg, the memory 130 of FIG. 1
  • a display 460 eg, the display device 160 of FIG. 1).
  • the display 460 may be omitted.
  • the memory 430 may store instructions for controlling the processor 420 to perform various operations when executed.
  • the memory 430 is operatively connected to the display 460 and the processor 420, a first application operating based on a first operating system and a second operating system operating based on a second operating system.
  • a plurality of applications including 2 applications can be stored.
  • the processor 420 may output a screen displaying a user interface provided by the first operating system through the display 460.
  • the user interface provided by the first operating system may output a first object related to execution of the first application and a second object related to execution of the second application.
  • the processor 420 may cause an operating system image for executing the second operating system to be mounted by a background program.
  • the processor 420 may change the environment setting of the operating system image using the environment setting file stored in the memory 430.
  • the processor may copy the package file into the mounted operating system image.
  • FIG. 5 is a diagram illustrating an example of a screen for controlling execution of a heterogeneous operating system in an electronic device according to various embodiments of the present disclosure.
  • the electronic device 501 may output a screen displaying a first user interface provided by the first operating system.
  • the screen displaying the first user interface may be configured based on graphic data provided from the first operating system.
  • the electronic device 501 may render the main home screen 560 shown in FIG. 5 based on graphic data provided from the first operating system.
  • the electronic device 501 may display an execution screen output as a result of executing the first application in the first user interface.
  • the main home screen 560 is the first screen displayed on a display (eg, the display device 160 of FIG. 1, the display 460 of FIG. 4) when the electronic device 501 is booted based on the first operating system. I can.
  • the main home screen 560 includes not only objects (eg, icons) associated with a first application operable based on the first operating system, but also an object 570 for driving a second operating system different from the running first operating system. And an object 590 associated with at least one second application operable based on the second operating system.
  • objects eg, icons
  • the electronic device 501 may drive the second operating system.
  • the electronic device 501 may change an environment setting of an operating system image in order to drive the second operating system.
  • the electronic device 501 may copy a file for driving the second operating system into the operating system image.
  • the electronic device 501 may configure a second user interface by using data output from the second operating system using a control application.
  • the electronic device 501 may display a second user interface in the first user interface.
  • the electronic device 501 may display the second user interface instead of the first user interface.
  • 6 and 7 are diagrams for describing an operating environment of an electronic device according to various embodiments of the present disclosure.
  • the electronic device 601 may be connected to an external electronic device (eg, a display device) 602. Since the electronic device 601 is a mobile device such as a smart phone, the size of the touch screen display may be limited.
  • an external electronic device eg, a display device 602. Since the electronic device 601 is a mobile device such as a smart phone, the size of the touch screen display may be limited.
  • the electronic device 601 may be connected to the external electronic device 602 through an input/output interface such as a USB connector or a USB-C connector.
  • 6 illustrates an example in which the electronic device 601 is connected to the external electronic device 602 through the input/output interface 630, but is not limited thereto.
  • the electronic device 601 may be connected to the external electronic device 602 through an intermediary device such as, for example, a docking station.
  • the electronic device may be wirelessly connected to the external electronic device 602 as shown in FIG. 7.
  • the electronic device 601 When the electronic device 601 is connected to the external electronic device 602, the electronic device 601 may output a screen through the external electronic device 602.
  • the electronic device 601 may reconstruct a screen displayed on the display of the electronic device 601 and may output the reconstructed screen through the external electronic device 602.
  • the electronic device 601 may provide a user interface or user experience similar to that of using a desktop to a user through the external electronic device 602.
  • the electronic device 601 may simultaneously execute a plurality of operating systems and simultaneously display screens of a plurality of operating systems.
  • the electronic device 601 may simultaneously execute an Android operating system and a Linux operating system.
  • the electronic device 601 may display the first window 610 and/or the second window 620 occupying a partial area or the entire screen output through the external electronic device 602 in order to display the execution screen of the application. I can.
  • the electronic device 601 may be wired or wirelessly connected to an external input device such as a keyboard and a mouse, and may receive a user input through an external input device.
  • the electronic device 601 may display a touch screen type display of the electronic device 601. User input can also be received through.
  • the external electronic device 602 may be various external devices that can access the electronic device 601.
  • the external electronic device 602 may include a desktop, an external monitor, a TV, a laptop, or a tablet PC.
  • FIG. 8 illustrates an electronic device (eg, the electronic device 101 of FIG. 1, the electronic device 501 of FIG. 5, the electronic device 601 of FIG. 6, and the electronic device 601 of FIG. 7) according to various embodiments.
  • a flow chart 800 illustrating a process of executing a second operating system.
  • a control application may be executed based on the first operating system. For example, in a state in which the electronic device is operating based on the first operating system, when an event requiring execution of a second operating system that is different from the first operating system occurs, the control application may be executed. For a more specific example, the electronic device may execute the control application when a command to execute a second application executed based on the second operating system is input. As another example, the electronic device may execute the control application upon receiving a user input for selecting an object (eg, icon or menu item) for executing the control application through a user interface provided by the first operating system. .
  • an object eg, icon or menu item
  • the electronic device may receive a user input for selecting an operating system image.
  • the electronic device may receive a user input for causing the electronic device to execute a second application executed based on the second operating system.
  • the electronic device may provide an operating system selection user interface for selecting an operating system image as an execution screen of the control application.
  • the electronic device may receive a user input for selecting an operating system image using an operating system selection user interface.
  • the electronic device mounts the selected operating system image using a background program (eg, the daemon 233 of FIG. 3) that supports mount control of the file system, and whether the operating system image satisfies a condition defined in the control application. I can judge.
  • the electronic device may drive the second operating system using the operating system image.
  • the electronic device may change the environment setting of the operating system image in operation 840.
  • the electronic device may determine that it is included in the area defined by the control application.
  • the specified condition may be that at least one of the UID and GID is a multiple of 65536, and the last five digits of the decimal number are 0.
  • the electronic device when the operating system image does not satisfy the conditions defined in the control application, the electronic device configures the environment of the operating system image so that the UID and GID of the authority of the root path of the operating system image are included in the area defined in the control application. You can change it. According to an embodiment, the electronic device may change UIDs and GIDs for subfolders and files, including a root path for an operating system image, to satisfy a specified condition.
  • the electronic device may copy a package file necessary for the control application to control the operation of the second operating system to the operating system image.
  • the electronic device may copy an installation file of a package operating in the second operating system, an execution file for performing communication with a control application, and a shell script file performing a specified operation in the second operating system to the operating system image.
  • the electronic device may execute the second operating system by using the operating system image in which the environment setting is changed and the required package is installed.
  • FIG. 9 is a flowchart 900 illustrating a process of a control application checking whether an operating system image is a usable image and reconstructing an operating system image according to various embodiments of the present disclosure.
  • the control application 901 (eg, the control application 231 of FIG. 3) is an electronic device (eg, the electronic device 101 of FIG. 1, the electronic device 401 of FIG. 4 ).
  • An operating system image stored in the electronic device 501 of FIG. 5, the electronic device 601 of FIG. 6, or the electronic device 601 of FIG. 7 may be selected.
  • the control application 901 may display a list of operating system images stored in the electronic device through the display and receive a user input for selecting an operating system image included in the displayed list.
  • the control application 901 may transmit a message about the selected operating system image to the daemon 902 (eg, the daemon 233 of FIG. 3).
  • the message for the selected operating system image may be a message for checking whether the operating system image is an image that can be mounted, and requesting to mount the operating system image if the operating system image can be mounted.
  • the daemon 902 receiving the message may check whether the operating system image designated by the received message is in a mountable format (eg, .iso format). When the operating system image is mountable, the daemon 902 may mount the operating system image. In operation 930, the daemon 902 may return a result message for the mount operation to the control application 901. The control application 902 may receive a message as a result of the mount operation as whether or not the operating system image can be used.
  • a mountable format eg, .iso format
  • the control application 901 may check whether the authority of the root path of the mounted operating system image satisfies a specified condition. In operation 950, when the permission of the root path of the operating system image does not satisfy the specified condition, the control application 901 may change the permission of the root path, subfolders of the root path, and files to satisfy the specified condition.
  • the specified condition may be defined based on an environment setting file stored in a memory of the electronic device.
  • control application 901 may determine whether a package file for the control application 901 to control the operation of the second operating system is included in the operating system image.
  • the control application 901 may copy a package file that is not included in the operating system image into the operating system image.
  • FIG. 10 is a flowchart 1000 illustrating a process of configuring an operating system image according to a user interface mode by an electronic device according to various embodiments of the present disclosure.
  • an electronic device for example, the electronic device 101 of FIG. 1, the electronic device 401 of FIG. 4, the electronic device 501 of FIG. 5, the electronic device 601 of FIG. 6, or the electronic device of FIG. 7
  • the device 601 may execute a control application. For example, while the electronic device is operating based on the first operating system, when an execution command of a program executed based on the second operating system is input, the electronic device may execute the control application. For another example, the electronic device may execute the control application when an object (eg, an icon) for executing the control application is selected.
  • an object eg, an icon
  • the electronic device may receive a user input for selecting a user interface mode.
  • the electronic device may display a list of user interface modes that can be used for the second operating system through the display.
  • the electronic device may receive a user input for selecting a user interface mode from a list of displayed user interface modes.
  • the user interface mode may refer to a form of a user interface provided to a user in order for the user to interact with the second operating system.
  • the user interface mode may be a command line interface (CLI) mode or a graphic user interface (GUI) mode.
  • the electronic device may install a command line interface package on an operating system image for driving the second operating system. For example, if at least one of Teletype writer (TTY) and Pseudo-Terminal Slave (PTS) is not installed in the operating system image, the electronic device may install a program that is not installed.
  • TTY Teletype writer
  • Pseudo-Terminal Slave Pseudo-Terminal Slave
  • operation 1030 is shown to be performed after operation 1020, but is not limited to the order shown in the drawing. For example, operation 1030 may be performed prior to operation 1020 or may be performed in parallel with operation 1030.
  • the electronic device may check the environment setting of the operating system image. According to an embodiment, when the environment setting of the operating system image is not included in the range defined by the environment setting file stored in the electronic device, the electronic device may change the environment setting of the operating system image based on the environment setting file.
  • the electronic device may drive the second operating system according to the user interface mode selected by the user input.
  • the electronic device may further install a graphic user interface package on the operating system image.
  • the electronic device includes at least an executable file for installation of PulseAudio for receiving and playing back sound data generated in the second operating system by the first operating system and Virtual Network Computing (VNC) for remotely controlling the second operating system. If one is not included in the operating system image, you can copy the object not included in the operating system image.
  • the electronic device may copy a file stored in the electronic device to an operating system image.
  • the electronic device may download a necessary file from a network using a package management tool and install it in an operating system image.
  • the electronic device may cause the control application to communicate with the second operating system using a graphic user interface package installed in the second operating system.
  • the electronic device may provide a graphic user interface to a user using a graphic user interface package.
  • the electronic device may output a window 1310 including the graphic user interface illustrated in FIG. 13.
  • the electronic device may cause the control application to communicate with the second operating system using the command line interface package.
  • the electronic device may provide a command line interface to a user using a command line interface package.
  • the residual device may output a window 1210 including the command line interface shown in FIG. 12.
  • 11 is an exemplary diagram 1100 illustrating a screen for selecting an object for causing an electronic device to drive a second operating system according to various embodiments of the present disclosure.
  • FIG. 11 illustrates an electronic device (eg, the electronic device 101 of FIG. 1, the electronic device 401 of FIG. 4, the electronic device 501 of FIG. 5, the electronic device 601 of FIG. 6, or the electronic device of FIG. 7 ).
  • an electronic device eg, the external electronic device 602 of FIGS. 6 and 7
  • a screen 1110 output through the external electronic device is shown.
  • the electronic device may change the operation mode from the normal mode to the extended mode. For example, when the operation mode is the extended mode, the electronic device may execute a DEX program and display a screen on the display of the external electronic device by using the DEX program. According to an embodiment, when the operation mode is the normal mode, the electronic device may display the screen only on the display device of the electronic device (eg, the display device 160 of FIG. 1 ).
  • the electronic device may display a main screen 1110 having a layout similar to that of a desktop window on the external electronic device.
  • the electronic device may further display the execution screen of the application through the external display device. For example, when a user input commanding execution of a web browsing application is received, the electronic device may display the web browsing window 1060 in the main screen 1110.
  • the electronic device may execute an application installed in the electronic device.
  • the exemplary diagram 1100 of FIG. 12 and the exemplary diagram 1100 of FIG. 13 show that after a user selects an object for driving a second operating system on the main screen 1110 illustrated in FIG. It may be an exemplary diagram showing a screen of.
  • the main screen 1110 may include an area in which a visual object 1030 for executing a second operating system is disposed.
  • the visual object 1030 may be an icon for inputting a command for driving the Linux operating system.
  • the visual object 1030 may correspond to an application operating based on the second operating system.
  • the electronic device may drive the second operating system and execute an application corresponding to the visual object 1030 based on the second operating system.
  • the electronic device changes the environment setting of the second operating system, and the control application operating based on the first operating system writes a package file for controlling the operation of the second operating system to the second operating system. Can be installed.
  • the electronic device may configure the user interface of the second operating system according to the user interface mode. For example, when the user interface mode is the command line interface mode, the electronic device may display a window 1210 configured with the command line interface shown in FIG. 12. When the user interface mode is the graphic user interface mode, the electronic device may display a window 1310 configured with the graphic user interface shown in FIG. 13.
  • Electronic devices may be devices of various types.
  • the electronic device may include, for example, a portable communication device (eg, a smart phone), a computer device, a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance.
  • a portable communication device eg, a smart phone
  • a computer device e.g., a smart phone
  • a portable multimedia device e.g., a portable medical device
  • a camera e.g., a portable medical device
  • a camera e.g., a portable medical device
  • a camera e.g., a portable medical device
  • a wearable device e.g., a smart bracelet
  • phrases such as “at least one of B or C” may include any one of the items listed together in the corresponding one of the phrases, or all possible combinations thereof.
  • Terms such as “first”, “second”, or “first” or “second” may be used simply to distinguish the component from other corresponding components, and the components may be referred to in other aspects (eg, importance or Order) is not limited.
  • Some (eg, first) component is referred to as “coupled” or “connected” to another (eg, second) component, with or without the terms “functionally” or “communicatively”. When mentioned, it means that any of the above components can be connected to the other components directly (eg by wire), wirelessly, or via a third component.
  • module used in this document may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic blocks, parts, or circuits.
  • the module may be an integrally configured component or a minimum unit of the component or a part thereof that performs one or more functions.
  • the module may be implemented in the form of an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • Various embodiments of the present document include one or more instructions stored in a storage medium (eg, internal memory 136 or external memory 138) readable by a machine (eg, electronic device 101). It may be implemented as software (for example, the program 140) including them.
  • the processor eg, the processor 120 of the device (eg, the electronic device 101) may call and execute at least one command among one or more commands stored from a storage medium. This makes it possible for the device to be operated to perform at least one function according to the at least one command invoked.
  • the one or more instructions may include code generated by a compiler or code executable by an interpreter.
  • the device-readable storage medium may be provided in the form of a non-transitory storage medium.
  • non-transient only means that the storage medium is a tangible device and does not contain a signal (e.g., electromagnetic waves), and this term refers to the case where data is semi-permanently stored in the storage medium. It does not distinguish between temporary storage cases.
  • a signal e.g., electromagnetic waves
  • a method according to various embodiments disclosed in the present document may be provided by being included in a computer program product.
  • Computer program products can be traded between sellers and buyers as commodities.
  • the computer program product is distributed in the form of a device-readable storage medium (e.g. compact disc read only memory (CD-ROM)), or through an application store (e.g. Play StoreTM) or two user devices (e.g. It can be distributed (e.g., downloaded or uploaded) directly between, e.g. smartphones).
  • a device e.g. compact disc read only memory (CD-ROM)
  • an application store e.g. Play StoreTM
  • two user devices e.g. It can be distributed (e.g., downloaded or uploaded) directly between, e.g. smartphones).
  • at least a portion of the computer program product may be temporarily stored or temporarily generated in a storage medium that can be read by a device such as a server of a manufacturer, a server of an application store, or a memory of a relay server.
  • each component (eg, module or program) of the above-described components may include a singular number or a plurality of entities.
  • one or more components or operations among the above-described corresponding components may be omitted, or one or more other components or operations may be added.
  • a plurality of components eg, a module or a program
  • the integrated component may perform one or more functions of each component of the plurality of components in the same or similar to that performed by the corresponding component among the plurality of components prior to the integration. .
  • operations performed by a module, program, or other component are sequentially, parallel, repeatedly, or heuristically executed, or one or more of the above operations are executed in a different order or omitted. Or one or more other actions may be added.

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)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

이종 운영체제를 실행하는 전자 장치 및 그 방법
본 문서에서 개시되는 실시 예들은 서로 다른 운영체제를 실행하기 위한 기술과 관련된다.
모바일 기기를 비롯한 다양한 형태의 전자 장치들이 보급되고 있다. 전자 장치들이 널리 보급됨에 따라서 전자 장치들을 운용하기 위한 운영 체제(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 운영체제(예: 도 2의 제2 운영체제(220))를 포함할 수 있다.
다양한 실시 예에 따르면, 제1 운영체제(230)는 안드로이드 기반의 운영체제일 수 있으며, 컨트롤 어플리케이션(231) 및 제1 어플리케이션(232)을 포함할 수 있다. 여기서, 제1 어플리케이션(232)은 안드로이드 운영체제에서 동작 가능한 적어도 하나의 어플리케이션으로, 어플리케이션 프로그램으로 지칭될 수 있다. 예를 들어, 제1 어플리케이션(232)은 동영상 재생 어플리케이션, 웹 브라우저 어플리케이션과 같은 안드로이드 운영체제를 기반으로 동작 가능한 다양한 어플리케이션들이 해당될 수 있다.
본 명세서에서, 제1 운영체제(230)는 전자 장치가 부팅되면 동작하는 메인 운영체제로, 호스트 운영체제 또는 메인 운영체제라고 칭할 수 있다. 제1 운영체제(230)는 시스템 리소스의 관리와 하나 이상의 다른 운영체제인 게스트 운영체제와의 상호 작용을 위한 컨트롤 어플리케이션(231)을 실행할 수 있다.
다양한 실시 예에 따르면, 제1 운영체제(230)는 제1 운영체제(230) 기반의 데이터 및 제1 운영체제(230)와는 다른 운영체제(제2 운영체제(예: 도 2의 제2 운영체제(220))) 기반의 데이터에 대한 처리 및 제어를 위한 컨트롤 어플리케이션(231)을 포함할 수 있다. 예를 들어, 제1 운영체제(230)가 안드로이드 운영체제이며, 제2 운영체제가 리눅스 운영체제일 경우 컨트롤 어플리케이션(231)은 안드로이드 운영체제 기반의 데이터 및 리눅스 기반의 데이터에 대한 처리 및 제어를 수행할 수 있다.
다양한 실시 예에 따르면, 컨트롤 어플리케이션(231)은, 제1 운영체제(230)의 커널(240)을 사용하는 컨테이너(container)(315)를 통해, 실행 중인 게스트 운영체제(제2 운영체제)의 프로세스와 통신할 수 있다. 컨트롤 어플리케이션(231)은 게스트 운영체제의 프로세스에서 발생한 이벤트를 제1 운영체제(230)(예: 안드로이드 운영체제)의 프로세스로 전달하거나 제1 운영체제(230)의 프로세스에서 발생한 이벤트를 게스트 운영체제로 전달하여 프로세스를 실행하거나 제어할 수 있다. 일 실시 예에 따르면, 컨트롤 어플리케이션(231)은 LoD(linux on dex) 어플리케이션이라고 칭할 수 있다.
다양한 실시 예에 따르면, 게스트 운영체제(제2 운영체제)는 컨테이너(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 운영체제(예: 도 2의 제2 운영체제(220))를 실행하고자 할 경우, 전자 장치의 프로세서는 데몬(233)에 운영체제 이미지를 마운트(mount)하도록 요청하는 메시지를 전달할 수 있다. 일 실시 예에 따르면, 상기 메시지는 운영체제 이미지가 컨트롤 어플리케이션(231)에 의해 사용될 수 있는 이미지인지 확인하도록 하는 메시지를 포함할 수 있다. 프로세서는 메시지에 대한 응답으로 운영체제 이미지의 사용 가능 여부를 반환 받을 수 있다. 일 실시 예에 따르면, 데몬(233)은 운영체제 이미지가 마운트될 수 있는 포맷으로 구성되어 있는 경우, 마운트 동작이 성공적으로 완료되었음을 나타내는 결과를 운영체제 이미지의 사용 가능 여부로서 반환할 수 있다. 데몬(233)에 의해 운영체제 이미지가 마운트되면, 컨테이너(315)를 이용하여 가상의 운영체제로서 제2 운영체제를 구동할 수 있다. 그러나, 제2 운영체제가 컨테이너(315)를 이용하여 제1 운영체제(230)와 함께 실행되기 위해서는 운영체제 이미지에 의해 설치되는 제2 운영체제에 컨트롤 어플리케이션(231)이 접근할 수 있어야 한다. 예를 들어, 제1 운영체제(230)로서 안드로이드 운영체제가 동작 중인 상태에서, 리눅스 기반의 제2 운영체제를 구동하기 위해서는, 제1 운영체제(230)를 기반으로 동작하는 컨트롤 어플리케이션(231)이 제2 운영체제 기반의 파일시스템에 접근할 수 있어야 하며, 제2 운영체제 기반의 입출력 등의 동작을 처리할 수 있어야 한다.
그러나, 다양한 배포자에 의해 배포되는 운영체제 이미지들은 환경설정이 다양하게 구성되어 있으며, 운영체제에 설치되는 패키지(예를 들어, 운영체제의 입/출력을 제어하기 위한 패키지)도 각기 다르게 구성될 수 있다. 따라서, 컨테이너(315)를 이용하여 제2 운영체제를 정상적으로 실행시키지 못할 수도 있다.
따라서, 일 실시 예에 따르면, 전자 장치는 제2 운영체제를 실행하기 위한 운영체제 이미지의 환경설정이 컨트롤 어플리케이션(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로 정의하고 사용할 수 있다.
일 실시 예에 따르면, 환경설정 파일은 컨테이너(315) 내에 루트(root) 권한 제어를 위한 사용자 ID의 범위를 할당하도록 하는 정보를 포함할 수 있다. 또한, 일 실시 예에 따르면, 환경설정 파일은 전자 장치가 컨테이너(315) 내에 접근 권한 제어를 위한 SE 안드로이드™ 도메인을 할당하도록 할 수 있다. 또한, 환경설정 파일은 전자 장치가 제2 운영체제가 입출력 장치와 연결하기 위한 장치 가상 터미널을 설정하도록 할 수 있다. 또한, 환경설정 파일은 전자 장치가 컨테이너(315) 내에서 제2 운영체제를 실행하기 위한 스크립트 파일(script file)을 설정하도록 할 수 있다. 사용자 ID의 범위 할당, 도메인 할당, 장치 가상 터미널 설정 및 스크립트 파일의 설정이 완료되면, 전자 장치는 명령줄(Command Line Interface, CLI) 모드로 제2 운영체제를 실행할 수 있다.
여기서, 그래픽 사용자 인터페이스(Graphic User Interface, GUI)로 제2 운영체제를 실행하기 위해서는 그래픽 사용자 인터페이스의 환경설정을 위한 패키지의 설치가 더 요구된다. 따라서, 이 경우 환경설정 파일은 전자 장치가 패키지 설치를 위한 소프트웨어 저장소를 설정하고 그래픽 사용자 인터페이스의 환경설정을 위한 패키지를 운영체제 이미지에 대해 업데이트할 수 있다.
또한, 전자 장치는 운영체제 이미지 내에 컨트롤 어플리케이션(231)이 제2 운영체제(220)를 동작하도록 하기 위한 패키지 파일을 복사할 수 있다. 예를 들어, 전자 장치는, 제2 운영체제(220)에서 동작하는 프로그램 패키지의 설치 파일, 제2 운영체제가 컨트롤 어플리케이션(231)과의 통신을 하기 위한 실행 파일, 제2 운영체제가 컨트롤 어플리케이션(231)을 통해서 화면의 제어를 수행하는 프로그램의 설치를 위한 패키지 파일, 제2 운영체제가 지정된 동작을 수행하는 쉘 스크립트(shell script) 파일, 또는 제2 운영체제가 컨트롤 어플리케이션(231)을 통해서 음향을 출력하기 위한 패키지 파일 중 적어도 하나를 운영체제 이미지 내에 복사할 수 있다. 운영체제 이미지에 복사되는 파일은 전자 장치의 지정된 위치에 저장되어 있거나, 외부 서버로부터 다운로드될 수 있다.
다양한 실시 예에 따르면, 전자 장치는 마운트된 운영체제 이미지에 기초하여 제2 운영체제를 제1 운영체제(230)와 동시에 실행하기 위해 컨테이너(315)를 사용할 수 있다. 일 실시 예에 따르면, 컨테이너(315)는 컨트롤 어플리케이션(231)에 의해 생성될 수 있다. 또한, 전자 장치의 프로세서(예: 도 1의 프로세서(120))는 컨테이너(315)를 생성하도록 제1 운영체제(230)를 제어할 수 있다. 프로세서는 제1 운영체제(230)에 설치된 컨트롤 어플리케이션(315)을 이용하여 게스트 운영체제인 제2 운영체제의 실행을 위한 컨테이너(315)가 생성되도록 할 수 있다. 일 실시 예에 따르면, 제2 운영체제의 실행이 요구되는 사용자 명령이 입력되면, 프로세서는 컨테이너(315)를 생성할 수 있다. 예를 들어, 사용자가 제2 운영체제를 기반으로 실행될 수 있는 어플리케이션을 실행하기 위한 아이콘을 선택한(예: 더블 클릭) 경우, 프로세서는 제2 운영체제의 실행을 위한 컨테이너(315)를 생성할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 호스트 운영체제에 기반하여 이종의 운영체제를 실행하도록 하기 위해 생성되어 있는 컨테이너를 제2 운영체제의 실행을 위한 컨테이너(315)로 할당할 수도 있다.
다양한 실시 예에 따르면, 컨트롤 어플리케이션(231)은 컨테이너(315)(또는 상기 특정 컨테이너)를 통해 제2 운영체제를 실행할 수 있다. 이에 따라, 전자 장치는 제2 운영체제)의 구동을 위한 데이터들뿐만 아니라 제2 운영체제를 기반으로 동작하는 어플리케이션에 대해 필요한 모든 데이터를 미리 할당해놓거나 저장해놓은 후 이를 관리하는 것이 아니라, 제2 운영체제를 구동하기 위한 사용자 입력을 수신하는 것에 대응하여 컨테이너(315)를 생성한 후, 생성된 컨테이너(315)에 제2 운영체제에서 필요한 데이터를 할당함으로써, 이종 운영체제의 동시 실행이 가능할 수 있다.
다양한 실시 예에 따르면, 컨트롤 어플리케이션(231)은 컨테이너(315)를 통해 제2 운영체제 기반의 어플리케이션(예: 제2 어플리케이션(221))을 실행하는 데 필요한 데이터를 할당하여 제공할 수 있다.
다양한 실시 예에 따르면, 컨테이너(315)는 가상화가 아닌 격리 기술을 이용하여 생성되는 것으로, 예를 들어, 제1 운영체제(230)가 구동 중이라면 제2 운영체제를 실행하기 위한 부팅 과정 없이 격리된 제2 운영체제의 프로세스만을 처리할 수 있다. 이에 따라 제1 운영체제(230)의 컨트롤 어플리케이션(231)에서 컨테이너(315)를 통해 이미지를 파일 단위로 관리하고 배포할 수 있기 때문에 최소한의 용량으로 현재 구동 중인 운영체제와는 다른 운영체제를 동시에 실행하는 것이 가능할 수 있다. 게다가 본 발명의 다양한 실시 예에 따른 컨테이너(315)는 호스트 운영체제인 제1 운영체제(230)의 커널(240)을 이용하며 제2 운영체제를 기반으로 실행되는 어플리케이션에 필요한 메모리만을 할당할 수 있어, 가상 머신이 가지는 가상화의 한계를 극복하여 호스트 운영체제의 성능에 대한 오버헤드 없이 이종 운영체제에 대한 제어가 가능할 수 있다.
다양한 실시 예에 따르면, 커널(240)은 제1 운영체제(230)(예: 안드로이드 운영체제)의 리눅스 커널로 실행되며, 컨트롤 어플리케이션(231)에 의해 게스트 운영체제(예: 리눅스 운영체제)를 구동하기 위해 리눅스 컨테이너 기능으로 컨테이너(315)를 생성할 수 있다. 커널(240)은 운영체제를 실행하기 위한 각종 기능들을 제공하는 프로그램일 수 있다. 예를 들어, 커널(240)은 제1 운영체제(230)에 관련된 게스트 운영체제를 실행하기 위한 프로세스를 네임스페이스에 할당하는 네임스페이스 기능(321), 보안 기능(322), 전자 장치의 디바이스 하드웨어(250)의 구성 요소들에 접근하기 위한 드라이버 기능(323), 게스트 운영체제가 사용할 수 있는 CPU의 코어나 메모리 용량을 할당하는 리소스 할당을 위한 Cgroups(control groups) 기능(324), 또는 파일 저장 및 파일을 관리하는 파일 시스템(file system) 기능(325) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따르면, 컨테이너(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에서 운영체제 이미지의 환경 설정을 변경할 수 있다.
예를 들어, 전자 장치는 데몬(예: 도 3의 데몬(233))에 의해 운영체제 이미지가 마운트되면, 운영체제 이미지의 루트(root) 경로의 권한 중 사용자 ID(UID) 및 그룹 ID(GID)가 컨트롤 어플리케이션에서 정의한 영역에 포함되는지 여부를 확인할 수 있다. 전자 장치는 지정된 조건을 만족하는 경우 컨트롤 어플리케이션에서 정의한 영역에 포함되는 것으로 판단할 수 있다. 보다 구체적인 예를 들면, 지정된 조건은 UID 및 GID 중 적어도 하나가 65536의 배수이고, 10진수의 마지막 다섯 자리가 0인 것일 수 있다. 일 실시예에 따르면, 운영체제 이미지가 컨트롤 어플리케이션에 정의된 조건을 만족하지 않는 경우, 전자 장치는 운영체제 이미지의 루트 경로의 권한 중 UID 및 GID가 컨트롤 어플리케이션에서 정의한 영역에 포함되도록 운영체제 이미지의 환경 설정을 변경할 수 있다. 일 실시예에 따라, 전자 장치는 운영체제 이미지에 대한 루트 경로를 포함하여 하위 폴더와 파일들에 대한 UID 및 GID를 지정된 조건을 만족하도록 변경할 수 있다.
동작 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 운영체제와 사용자가 인터랙션(interaction)하기 위해 사용자에게 제공되는 사용자 인터페이스의 형태를 의미할 수 있다. 예를 들어, 사용자 인터페이스 모드는 명령줄 인터페이스(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))에 연결된 경우 외부 전자 장치를 통해서 출력되는 화면(1110)을 나타낸다.
외부 전자 장치(예: 모니터)와의 연결이 검출되면, 전자 장치는 일반 모드에서 확장 모드로 동작 모드를 변경할 수 있다. 예를 들면, 전자 장치는 동작 모드가 확장 모드인 경우 덱스(DEX) 프로그램을 실행하고, 덱스 프로그램을 이용하여 외부 전자 장치의 디스플레이에 화면을 표시할 수 있다. 일 실시 예에 따르면, 동작 모드가 일반 모드일 경우 전자 장치는 전자 장치의 표시 장치(예: 도 1의 표시 장치(160))에만 화면을 디스플레이할 수 있다.
일 실시 예에 따르면, 전자 장치는 데스크톱의 윈도우와 유사한 형태의 레이아웃을 가지는 메인 화면(1110)을 외부 전자 장치에 표시할 수 있다. 전자 장치는 어플리케이션의 실행 화면을 외부 디스플레이 장치를 통해서 더 표시할 수 있다. 예를 들면, 웹 브라우징 어플리케이션의 실행을 명령하는 사용자 입력이 수신된 경우, 전자 장치는 메인 화면(1110) 내에 웹 브라우징 윈도우(1060)를 표시할 수 있다. 사용자가 메인 화면(1110) 상에 표시되는 어플리케이션을 나타내는 객체를 선택하면, 전자 장치는 전자 장치에 설치된 어플리케이션을 실행할 수 있다.
도 12는 다양한 실시 예에 따른 전자 장치가 명령줄 인터페이스 모드로 제2 운영체제를 구동하는 경우에 출력되는 화면의 예시를 나타낸다. 도 13은 다양한 실시 예에 따라 전자 장치가 그래픽 사용자 인터페이스 모드로 제2 운영체제를 구동하는 경우에 출력되는 화면의 예시를 나타낸다. 일 실시 예에 따르면, 도 12의 예시도(1100) 및 도 13의 예시도(1100)는, 사용자가 도 11에 도시된 메인 화면(1110)에서 제2 운영체제를 구동하도록 하기 위한 객체를 선택한 이후의 화면을 나타낸 예시도일 수 있다. 다양한 실시 예에 따르면, 메인 화면(1110)은 제2 운영체제를 실행하도록 하기 위한 시각적 객체(1030)가 배치되는 영역을 포함할 수 있다. 일 실시 예에 따르면, 시각적 객체(1030)는 리눅스 운영체제를 구동하도록 하는 명령을 입력하기 위한 아이콘일 수 있다.
일 실시 예에 따르면, 시각적 객체(1030)는 제2 운영체제를 기반으로 동작하는 어플리케이션에 상응할 수 있다. 시각적 객체(1030)를 선택하는 사용자 입력이 수신되면, 전자 장치는 제2 운영체제를 구동하고, 제2 운영체제를 기반으로 시각적 객체(1030)에 상응하는 어플리케이션을 실행할 수 있다. 전자 장치는 제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 (15)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/594,286 US11836503B2 (en) 2019-04-09 2020-04-06 Electronic device for executing heterogeneous operating systems and method therefor

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2020209561A1 true WO2020209561A1 (ko) 2020-10-15

Family

ID=72751727

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/004634 WO2020209561A1 (ko) 2019-04-09 2020-04-06 이종 운영체제를 실행하는 전자 장치 및 그 방법

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995420B2 (en) 2021-08-19 2024-05-28 Red Hat, Inc. Generating a build process for building software in a target environment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010092447A (ko) * 1998-11-05 2001-10-25 엘그레시 도론 컴퓨터 설치 시 운영체제 개인화를 위한 방법 및 장치
US20070118654A1 (en) * 2005-11-23 2007-05-24 Sun Microsystems, Inc. Method and apparatus for provisioning heterogeneous operating systems onto heterogeneous hardware systems
KR20120116771A (ko) * 2011-04-13 2012-10-23 주식회사 케이티 단말의 다중 운영체제 구동장치 및 운영체제 전환방법
US20120309464A1 (en) * 2011-06-01 2012-12-06 Lg Electronics Inc. Mobile terminal
KR20160149922A (ko) * 2015-06-19 2016-12-28 삼성전자주식회사 복수의 운영 체제를 지원하는 전자 장치 제어 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
TWI520069B (zh) * 2010-08-11 2016-02-01 緯創資通股份有限公司 整合運用基於同一系統核心之異質作業系統之方法
US20140033188A1 (en) * 2012-07-26 2014-01-30 Microsoft Corporation System updates from cloud blob storage using vhd differentials
CN109542524B (zh) * 2018-11-22 2022-08-05 一铭软件股份有限公司 一种Linux与安卓相互快速切换方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010092447A (ko) * 1998-11-05 2001-10-25 엘그레시 도론 컴퓨터 설치 시 운영체제 개인화를 위한 방법 및 장치
US20070118654A1 (en) * 2005-11-23 2007-05-24 Sun Microsystems, Inc. Method and apparatus for provisioning heterogeneous operating systems onto heterogeneous hardware systems
KR20120116771A (ko) * 2011-04-13 2012-10-23 주식회사 케이티 단말의 다중 운영체제 구동장치 및 운영체제 전환방법
US20120309464A1 (en) * 2011-06-01 2012-12-06 Lg Electronics Inc. Mobile terminal
KR20160149922A (ko) * 2015-06-19 2016-12-28 삼성전자주식회사 복수의 운영 체제를 지원하는 전자 장치 제어 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995420B2 (en) 2021-08-19 2024-05-28 Red Hat, Inc. Generating a build process for building software in a target environment

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2015030529A1 (ko) 곡면 바닥을 가지는 전자 장치 및 그 동작 방법
WO2019103396A1 (en) Method for configuring input interface and electronic device using same
WO2017191889A1 (ko) 전자 장치 및 그 제어 방법
WO2020080767A1 (en) Method for controlling execution of heterogeneous operating systems and electronic device and storage medium therefor
WO2021187818A1 (ko) 전자 장치 및 전자 장치의 테마를 부분적으로 운용하는 방법
WO2019182335A1 (ko) 전자 장치 및 전자 장치의 업데이트 제어 방법
WO2019039740A1 (en) METHOD FOR PROVIDING SERVICE UPDATE AND ELECTRONIC DEVICE SUPPORTING SAID METHOD
KR20200042793A (ko) 복수의 운영체제들을 실행하는 전자장치 및 그 제어 방법
WO2020162715A1 (en) Electronic device, storage medium, and method for process scheduling
WO2020209561A1 (ko) 이종 운영체제를 실행하는 전자 장치 및 그 방법
WO2021006574A1 (en) Method and apparatus for managing application
WO2018128413A1 (en) Methods and systems for managing application installation
KR20200058157A (ko) Ivi 서비스를 제공하기 위한 전자 장치 및 방법
WO2019039741A1 (ko) 운영 체제의 운용 방법 및 이를 지원하는 전자 장치
WO2015108282A1 (ko) 전자 장치의 광고 방법 및 그 전자 장치
WO2020138909A1 (ko) 콘텐트 공유 방법 및 그 전자 장치
WO2019160323A1 (ko) 어플리케이션과 관련된 데이터를 관리하기 위한 방법 및 그 전자 장치
WO2019164204A1 (ko) 전자 장치 및 그의 동작 방법
WO2019172659A1 (ko) 부팅을 수행하는 전자 장치와 이의 동작 방법
KR20210046426A (ko) 어플리케이션의 최적화 방법 및 이를 지원하는 전자 장치
WO2022149771A1 (ko) 전자 장치 및 이를 이용한 메모리 관리 방법
WO2021158068A1 (ko) 전자 장치 및 전자 장치의 클립 보드 운용 방법
WO2019083283A1 (en) ELECTRONIC IMAGE DISPLAY DEVICE AND ITS CONTROL METHOD
WO2021162439A1 (en) Electronic device performing restoration on basis of comparison of constant value and control method thereof
WO2021101173A1 (ko) 전자 장치 및 이를 이용한 근거리 통신 장치의 사용자 식별 정보 획득 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20788509

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20788509

Country of ref document: EP

Kind code of ref document: A1