WO2023101295A1 - 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법 - Google Patents

복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법 Download PDF

Info

Publication number
WO2023101295A1
WO2023101295A1 PCT/KR2022/018568 KR2022018568W WO2023101295A1 WO 2023101295 A1 WO2023101295 A1 WO 2023101295A1 KR 2022018568 W KR2022018568 W KR 2022018568W WO 2023101295 A1 WO2023101295 A1 WO 2023101295A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
loader
dispatcher
electronic device
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/KR2022/018568
Other languages
English (en)
French (fr)
Inventor
김명재
이정웅
임영재
이수형
홍의석
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020210176692A external-priority patent/KR20230083186A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Priority to EP22901653.0A priority Critical patent/EP4400967A4/en
Priority to US17/994,958 priority patent/US12056498B2/en
Publication of WO2023101295A1 publication Critical patent/WO2023101295A1/ko
Anticipated expiration legal-status Critical
Priority to US18/748,989 priority patent/US20240338223A1/en
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Definitions

  • Embodiments disclosed in this document relate to an electronic device booting an operating system using a plurality of cores and an operating method thereof.
  • the modules of the Android operating system (OS) are sequentially executed in serialized form.
  • the reason for executing module loading in a serialized structure may be that dependencies exist between loaded modules. For example, if module a has a dependency on module b, it may be a structure that checks whether module b, which should precede it, is loaded, and loads module a in the same core after module b is loaded. there is. Therefore, the order of all module loading can proceed only in one core in an order without dependency problems.
  • serialized execution structure in an electronic device equipped with a multi-core CPU has a problem of not fully utilizing hardware resources having a multi-core, which is one of the factors that lead to a delay in booting time and thus deterioration of the performance of the electronic device. It can be.
  • An electronic device includes a processor including a plurality of cores, and a memory electrically connected to the processor and storing instructions, the instructions being executed by a dispatcher (The dispatcher determines whether the loading of a plurality of modules for booting of the operating system of the electronic device is completed, and determines that among the plurality of modules, a module whose loading is incomplete exists.
  • the dispatcher identifies at least one module whose dependencies are cleared based on the module information table stored in the memory, and as the at least one module is identified, the dispatcher, in the memory Based on the stored core information table, at least one of state information and priority information of a module loader assigned to two or more cores among the plurality of cores is identified, and the Based on the identified information, the dispatcher selects at least one module loader from among two or more module loaders to which the cores are respectively assigned and stores instructions to control the processor to distribute the at least one module.
  • a dispatcher performs booting of an operating system of the electronic device. Upon determining whether the loading of a plurality of modules for the electronic device has been completed and determining that there is a module whose loading has not been completed among the plurality of modules, the dispatcher determines the module information table stored in the memory of the electronic device. at least one module whose dependencies are cleared based on the identification, and as the at least one module is identified, the dispatcher selects two of the plurality of cores based on the core information table stored in the memory.
  • the dispatcher Identifying at least one of state information and priority information of a module loader assigned to each of the above cores, and based on the identified information, the dispatcher identifies the cores respectively assigned select at least one module loader from among two or more module loaders to distribute the at least one module; control the processor.
  • FIG. 1 is a block diagram of an electronic device in a network environment, according to various embodiments.
  • FIG. 2 is a diagram for explaining an operation of an electronic device according to an exemplary embodiment.
  • FIG. 3 is a flowchart illustrating an operation of an electronic device according to an exemplary embodiment.
  • FIG. 4 is a flowchart illustrating an operation of an electronic device according to an exemplary embodiment.
  • FIG. 5 is a diagram for explaining an operation of an electronic device according to an exemplary embodiment.
  • FIG. 6 is a flowchart illustrating an operation of an electronic device according to an exemplary embodiment.
  • FIG. 7 is a flowchart illustrating an operation of an electronic device according to an exemplary embodiment.
  • FIG. 8 is a diagram for explaining an operation of an electronic device according to an exemplary embodiment.
  • FIG. 1 is a block diagram of an electronic device 101 within a network environment 100 according to various embodiments.
  • an electronic device 101 communicates with an electronic device 102 through a first network 198 (eg, a short-range wireless communication network) or through 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). According to an embodiment, the electronic device 101 may communicate with the electronic device 104 through the server 108 .
  • a first network 198 eg, a short-range wireless communication network
  • the server 108 e.g, a long-distance wireless communication network
  • the electronic device 101 includes a processor 120, a memory 130, an input module 150, an audio output module 155, a display module 160, an audio module 170, a sensor module ( 176), interface 177, connection terminal 178, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196 , or the antenna module 197 may be included.
  • at least one of these components eg, the connection terminal 178) may be omitted or one or more other components may be added.
  • some of these components eg, sensor module 176, camera module 180, or antenna module 197) are integrated into one component (eg, display module 160). It can be.
  • the processor 120 for example, executes software (eg, the program 140) to cause at least one other component (eg, hardware or software component) of the electronic device 101 connected to the processor 120. It can control and perform various data processing or calculations. According to one embodiment, as at least part of data processing or operation, the processor 120 transfers commands or data received from other components (eg, sensor module 176 or communication module 190) to volatile memory 132. , processing commands or data stored in the volatile memory 132 , and storing resultant data in the non-volatile memory 134 .
  • software eg, the program 140
  • the processor 120 transfers commands or data received from other components (eg, sensor module 176 or communication module 190) to volatile memory 132. , processing commands or data stored in the volatile memory 132 , and storing resultant data in the non-volatile memory 134 .
  • the processor 120 may include a main processor 121 (eg, a central processing unit or an application processor) or a secondary processor 123 (eg, a graphic processing unit, a neural network processing unit ( NPU: neural processing unit (NPU), image signal processor, sensor hub processor, or communication processor).
  • a main processor 121 eg, a central processing unit or an application processor
  • a secondary processor 123 eg, a graphic processing unit, a neural network processing unit ( NPU: neural processing unit (NPU), image signal processor, sensor hub processor, or communication processor.
  • NPU neural network processing unit
  • the secondary processor 123 may be implemented separately from or as part of the main processor 121 .
  • the secondary processor 123 may, for example, take the place 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, running an application). ) state, together with the main processor 121, at least one of the components of the electronic device 101 (eg, the display module 160, the sensor module 176, or the communication module 190) It is possible to control at least some of the related functions or states.
  • the auxiliary processor 123 eg, an image signal processor or a communication processor
  • the auxiliary processor 123 may include a hardware structure specialized for processing an artificial intelligence model.
  • AI models can be created through machine learning. Such learning may be performed, for example, in the electronic device 101 itself where artificial intelligence is performed, or may be performed through a separate server (eg, the server 108).
  • the learning algorithm may include, for example, supervised learning, unsupervised learning, semi-supervised learning or reinforcement learning, but in the above example Not limited.
  • the artificial intelligence model may include a plurality of artificial neural network layers.
  • Artificial neural networks include deep neural networks (DNNs), convolutional neural networks (CNNs), recurrent neural networks (RNNs), restricted boltzmann machines (RBMs), deep belief networks (DBNs), bidirectional recurrent deep neural networks (BRDNNs), It may be one of deep Q-networks or a combination of two or more of the foregoing, but is not limited to the foregoing examples.
  • the artificial intelligence model may include, in addition or alternatively, software structures in addition to hardware structures.
  • the memory 130 may store various data used by at least one component (eg, the processor 120 or the sensor module 176) of the electronic device 101 .
  • the data may include, for example, input data or output data for software (eg, program 140) and commands related thereto.
  • the memory 130 may include volatile memory 132 or non-volatile 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 module 150 may receive a command or data to be used by a component (eg, the processor 120) of the electronic device 101 from the outside of the electronic device 101 (eg, a user).
  • the input module 150 may include, for example, a microphone, a mouse, a keyboard, a key (eg, a button), or a digital pen (eg, a stylus pen).
  • the sound output module 155 may output sound signals to the outside of the electronic device 101 .
  • the sound output module 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.
  • a receiver may be used to receive an incoming call. According to one embodiment, the receiver may be implemented separately from the speaker or as part of it.
  • the display module 160 may visually provide information to the outside of the electronic device 101 (eg, a user).
  • the display module 160 may include, for example, a display, a hologram device, or a projector and a control circuit for controlling the device.
  • the display module 160 may include a touch sensor configured to detect a touch or a pressure sensor configured to measure the intensity of force generated by the touch.
  • the audio module 170 may convert sound into an electrical signal or vice versa. According to an embodiment, the audio module 170 acquires sound through the input module 150, the sound output module 155, or an external electronic device connected directly or wirelessly to the electronic device 101 (eg: Sound may be output through the electronic device 102 (eg, a speaker or a headphone).
  • the audio module 170 acquires sound through the input module 150, the sound output module 155, or an external electronic device connected directly or wirelessly to the electronic device 101 (eg: Sound may be output through the electronic device 102 (eg, a speaker or a headphone).
  • 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 air pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a bio sensor, It may include a temperature sensor, humidity sensor, or light sensor.
  • the interface 177 may support one or more designated protocols that may be used to directly or wirelessly connect the electronic device 101 to 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 interface
  • audio interface audio interface
  • connection terminal 178 may include a connector through which the electronic device 101 may 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 electrical signals into mechanical stimuli (eg, vibration or motion) or electrical stimuli that a user may perceive through tactile or kinesthetic senses.
  • the haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
  • the camera module 180 may capture still images and moving images. According to one embodiment, 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 at least part of a power management integrated circuit (PMIC), for example.
  • 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 battery, a rechargeable secondary battery, 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, the electronic device 102, the electronic device 104, or the server 108). Establishment and communication through the established communication channel may be supported.
  • the communication module 190 may include one or more communication processors that operate independently of the processor 120 (eg, an application processor) and 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 local area network (LAN) communication module or a power line communication module).
  • 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 local area network (LAN) communication module or a power line communication module.
  • a corresponding communication module is a first network 198 (eg, a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network 199 (eg, legacy It may communicate with the external electronic device 104 through a cellular network, a 5G network, a next-generation communication network, the Internet, or a telecommunications network such as a computer network (eg, a LAN or a WAN).
  • a telecommunications network such as a computer network (eg, a LAN or a WAN).
  • These various types of communication modules may be integrated as one component (eg, a single chip) or implemented as a plurality of separate components (eg, multiple chips).
  • the wireless communication module 192 uses subscriber information (eg, International Mobile Subscriber Identifier (IMSI)) stored in the subscriber identification module 196 within a communication network such as the first network 198 or the second network 199.
  • subscriber information eg, International Mobile Subscriber Identifier (IMSI)
  • IMSI International Mobile Subscriber Identifier
  • the electronic device 101 may be identified or authenticated.
  • the wireless communication module 192 may support a 5G network after a 4G network and a next-generation communication technology, for example, NR access technology (new radio access technology).
  • NR access technologies include high-speed transmission of high-capacity data (enhanced mobile broadband (eMBB)), minimization of terminal power and access of multiple terminals (massive machine type communications (mMTC)), or high reliability and low latency (ultra-reliable and low latency (URLLC)).
  • eMBB enhanced mobile broadband
  • mMTC massive machine type communications
  • URLLC ultra-reliable and low latency
  • -latency communications can be supported.
  • the wireless communication module 192 may support a high frequency band (eg, mmWave band) to achieve a high data rate, for example.
  • the wireless communication module 192 uses various technologies for securing performance in a high frequency band, such as beamforming, massive multiple-input and multiple-output (MIMO), and full-dimensional multiplexing. Technologies such as input/output (FD-MIMO: full dimensional MIMO), array antenna, analog beam-forming, or large scale antenna may be supported.
  • the wireless communication module 192 may support various requirements defined for the electronic device 101, an external electronic device (eg, the electronic device 104), or a network system (eg, the second network 199).
  • the wireless communication module 192 is a peak data rate for eMBB realization (eg, 20 Gbps or more), a loss coverage for mMTC realization (eg, 164 dB or less), or a U-plane latency for URLLC realization (eg, Example: downlink (DL) and uplink (UL) each of 0.5 ms or less, or round trip 1 ms or less) may be supported.
  • eMBB peak data rate for eMBB realization
  • a loss coverage for mMTC realization eg, 164 dB or less
  • U-plane latency for URLLC realization eg, Example: downlink (DL) and uplink (UL) each of 0.5 ms or less, or round trip 1 ms or less
  • the antenna module 197 may transmit or receive signals or power to the outside (eg, an external electronic device).
  • the antenna module 197 may include an antenna including a radiator formed of a conductor or a conductive pattern formed on a substrate (eg, PCB).
  • the antenna module 197 may include a plurality of antennas (eg, an array antenna). 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 selected from the plurality of antennas by the communication module 190, for example. can be chosen A signal or power may be transmitted or received between the communication module 190 and an external electronic device through the selected at least one antenna.
  • other components eg, a radio frequency integrated circuit (RFIC) may be additionally formed as a part of the antenna module 197 in addition to the radiator.
  • RFIC radio frequency integrated circuit
  • the antenna module 197 may form a mmWave antenna module.
  • the mmWave antenna module includes a printed circuit board, an RFIC disposed on or adjacent to a first surface (eg, a lower surface) of the printed circuit board and capable of supporting a designated high frequency band (eg, mmWave band); and a plurality of antennas (eg, array antennas) disposed on or adjacent to a second surface (eg, a top surface or a side surface) of the printed circuit board and capable of transmitting or receiving signals of the designated high frequency band. can do.
  • peripheral devices eg, a bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)
  • signal e.g. commands or data
  • 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 or 104 may be the same as or different from the electronic device 101 .
  • all or part of operations executed in the electronic device 101 may be executed in one or more external electronic devices among the external electronic devices 102 , 104 , or the server 108 .
  • the electronic device 101 when the electronic device 101 needs to perform a certain function or service automatically or in response to a request from a user or another device, the electronic device 101 instead of executing the function or service by itself.
  • one or more external electronic devices may be requested to perform the function or at least part of the service.
  • 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 deliver the execution result to the electronic device 101 .
  • the electronic device 101 may provide the result as at least part of a response to the request as it is or additionally processed.
  • cloud computing distributed computing, mobile edge computing (MEC), or client-server computing technology may be used.
  • the electronic device 101 may provide an ultra-low latency service using, for example, distributed computing or mobile edge computing.
  • the external electronic device 104 may include an internet of things (IoT) device.
  • Server 108 may be an intelligent server using machine learning and/or neural networks. According to an embodiment, the external electronic device 104 or server 108 may be included in the second network 199 .
  • the electronic device 101 may be applied to intelligent services (eg, smart home, smart city, smart car, or health care) based on 5G communication technology and IoT-related technology.
  • 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 camera
  • a wearable device e.g., a smart bracelet
  • first, second, or first or secondary may simply be used to distinguish a given component from other corresponding components, and may be used to refer to a given component in another aspect (eg, importance or order) is not limited.
  • a (e.g., first) component is said to be “coupled” or “connected” to another (e.g., second) component, with or without the terms “functionally” or “communicatively.”
  • the certain component may be connected to the other component directly (eg by wire), wirelessly, or through a third component.
  • module used in various embodiments of this document may include a unit implemented in hardware, software, or firmware, and is interchangeably interchangeable with terms such as, for example, logic, logic blocks, components, or circuits.
  • a module may be an integrally constructed component or a minimal unit of components or a portion 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
  • a storage medium eg, internal memory 136 or external memory 138
  • a machine eg, electronic device 101
  • a processor eg, the processor 120
  • a device eg, the electronic device 101
  • 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.
  • the storage medium is a tangible device and does not contain a signal (e.g. electromagnetic wave), and this term refers to the case where data is stored semi-permanently in the storage medium. It does not discriminate when it is temporarily stored.
  • a signal e.g. electromagnetic wave
  • the method according to various embodiments disclosed in this document may be included and provided in a computer program product.
  • Computer program products may be traded between sellers and buyers as commodities.
  • a 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 on two user devices (e.g. It can be distributed (eg downloaded or uploaded) online, directly between smart phones.
  • a device-readable storage medium 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 (eg downloaded or uploaded) online, directly between smart phones.
  • at least part of the computer program product may be temporarily stored or temporarily created in a device-readable storage medium such as a manufacturer's server, an application store server, or a relay server's memory.
  • each component (eg, module or program) of the components described above may include a single object or a plurality of objects, and some of the multiple objects may be separately disposed in other components.
  • one or more components or operations among the aforementioned components may be omitted, or one or more other components or operations may be added.
  • a plurality of components eg modules or programs
  • the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by a corresponding component of the plurality of components prior to the integration. .
  • operations performed by modules, programs, or other components are executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations are executed in a different order, omitted, or , or one or more other operations may be added.
  • FIG. 2 is a diagram for explaining an operation of an electronic device according to an exemplary embodiment.
  • 3 is a flowchart 300 for describing an operation of an electronic device according to an exemplary embodiment.
  • 4 is a flowchart 400 for describing an operation of an electronic device according to an exemplary embodiment.
  • the operation of the electronic device may be performed by a processor of the electronic device.
  • a processor eg, the processor 120 of FIG. 1 of an electronic device (eg, the electronic device 101 of FIG. 1 ) is a multicore having two or more cores (hereinafter referred to as Multicore). , a plurality of cores).
  • a memory eg, the memory 130 of FIG. 1 ) of the electronic device may store a plurality of module loaders 210 , 220 , and 230 .
  • Each of the plurality of cores may correspond to one module loader 210 , 220 , or 230 .
  • the processor of the electronic device includes N+1 cores
  • the 0th core corresponds to module loader/0 (210)
  • the 1st core corresponds to module loader/1 (220)
  • the Nth core may correspond to the module loader/N 230.
  • the module loader may correspond only to cores determined to be used for module loading.
  • Each module loader may include a queue (211, 221, 231) capable of loading modules.
  • the memory of the electronic device may store the dispatcher 240 .
  • the dispatcher may include a queue 241 in which modules ready to be loaded may be loaded.
  • the dispatcher 240 may perform an operation of distributing modules to a plurality of module loaders 210 , 220 , and 230 using the queue 241 .
  • the dispatcher 240 may correspond to a separate core from the module loaders 210, 220, and 230, or may correspond to the same core as any one module loader. If any one module loader corresponds to the same core as the dispatcher 240, the dispatcher 240 may be in a sleep state while a module is being loaded by the corresponding module loader.
  • the dispatcher 240 determines whether all modules for booting of the operating system (eg, the operating system 142 of FIG. 1 ) of the electronic device are completely loaded. can do.
  • the operating system stored in the memory of the electronic device may be an Android operating system (OS), and the Android operating system uses a device driver built in the form of a module in a kernel booting stage. can be loaded.
  • OS Android operating system
  • the dispatcher 240 enqueues an end signal to the queues 211, 221, and 231 of the module loaders 210, 220, and 230 in operation 317.
  • the dispatcher 240 When it is not determined in operation 301 that loading of all modules is completed, the dispatcher 240 identifies modules whose dependencies are all cleared, and places them in the queue 241 of the dispatcher 240 in operation 303. can be enqueued The dispatcher 240 may determine modules that have no dependencies originally or whose dependencies are all resolved due to completion of execution of other modules as modules ready for loading execution. The dispatcher 240 may identify all modules ready to be loaded and enqueue them in the queue 241 of the dispatcher 240 .
  • the dispatcher 240 may determine whether the queue 241 of the dispatcher 240 is empty. If the module ready to be loaded is enqueued in the queue 241 of the dispatcher 240 in operation 303, the queue 241 of the dispatcher 240 may be in a non-empty state.
  • the dispatcher 240 may determine whether a module loader in an idle state exists as it is determined in operation 305 that the queue 241 of the dispatcher 240 is not empty.
  • the idle state may mean a state in which the module loader is not loading a module and a queue of the module loader is empty.
  • the dispatcher 240 determines that there is at least one module loader in an idle state in operation 307, the dispatcher 240 dequeues one module from the queue 241 to load at least one module loader in an idle state. Among the module loaders of , you can enqueue in the queue of the module loader with the highest priority. Dispatcher 240 may return to operation 305 after performing operation 309 .
  • the dispatcher 240 determines that the queue of the dispatcher 240 is empty in operation 305 or if the dispatcher 240 fails to identify a module loader in an idle state in operation 307, the dispatcher 240 in operation 311 returns the module loader ( 210, 220, 230) can wait for the loading completion event. While the dispatcher 240 is waiting for a loading completion event, it may be in a sleep state and may have little effect on the execution of other module loaders.
  • the dispatcher 240 may receive a module loading completion event from at least one module loader.
  • the dispatcher 240 may update the module information table stored in the memory.
  • the dispatcher 240 changes the status of the completed module to a loaded status, and clears the dependency on the loaded module from the dependency list of modules having dependencies on the loaded module.
  • the module information table can be updated.
  • a memory of an electronic device may store a module information table through a processor, and the module information table may have various forms and may include at least information about a loading state and dependency of a module.
  • dispatcher 240 may return to operation 301 again.
  • the dispatcher 240 determines whether all modules have been loaded, and if it is determined that all modules have been loaded, in operation 317, the queues 211 and 221 of the module loaders 210, 220, and 230 , 231) can enqueue the termination signal.
  • the flowchart 400 of FIG. 4 may be a flowchart 400 illustrating an operation of any one module loader among the plurality of module loaders 210 , 220 , and 230 of FIG. 2 .
  • the module loaders 210 , 220 , and 230 may wait for a module delivered from the dispatcher 240 to be enqueued in the queues 211 , 221 , and 231 . At this time, the module loaders 210, 220, and 230 may be in an idle state.
  • the module loaders 210, 220, and 230 may determine whether the loading end signal is enqueued as an enqueue occurs in the module loader queues 211, 221, and 231.
  • the loading end signal may be a signal transmitted from the dispatcher 240 to the module loaders 210, 220, and 230 when all modules are loaded.
  • the module loader 210, 220, 230 may terminate the process upon identifying that the loading end signal has been enqueued.
  • the module loader (210, 220, 230) identifies that the loading end signal is not enqueued, in operation 405, whether the queue (211, 221, 231) of the module loader (210, 220, 230) is empty can judge Upon determining that the queues 211, 221, and 231 are empty, the module loaders 210, 220, and 230 may return to operation 401 and wait for the module to be delivered.
  • the module loaders 210, 220, and 230 identify that the queues 211, 221, and 231 are not empty and that the module is loaded, the module may be loaded in operation 407.
  • the module loaders 210 , 220 , and 230 may transmit a loading completion event to the dispatcher 240 after completing loading of the module.
  • the module loaders 210, 220, and 230 that have delivered the loading completion event may return to operation 405 and determine whether the queues 211, 221, and 231 are empty.
  • the module loader (210, 220, 230) identifies that the queue is empty in operation 405, waits for an enqueue to occur in operation 401, and terminates the boot process in operation 403 as it identifies that a loading termination signal has been enqueued. there is.
  • 5 is a diagram for explaining an operation of an electronic device according to an exemplary embodiment.
  • 5 may be a diagram illustrating the operation of a module loader according to a timeline in a booting process of an electronic device.
  • the horizontal axis of the first table 510 and the second table 520 of FIG. 5 may mean the passage of time.
  • an electronic device eg, the electronic device 101 of FIG. 1
  • a processor eg, the processor 120 of FIG. 1
  • a module loader is assigned to each of the two cores.
  • the processor of the electronic device includes 8 cores numbered 0 to 7, module loader/0 is assigned to core 0, and module loader/1 is assigned to core 4.
  • the core information table may be as shown in Table 1 below.
  • module loader/0 assigned to core 0 and the module loader/1 assigned to core 4 have the same priority. Before starting the boot process, module loader/0 and module loader/1 may be idle.
  • the memory of the electronic device may store a module information table as shown in [Table 2] below.
  • the module information table may include at least state information and dependency information of all modules that need to be loaded in the booting stage. According to an embodiment, the module information table may further include at least one of a module name and a workload.
  • a state of a module in the module information table may be represented as one of T, N, and L.
  • T terminal
  • N not loaded
  • L loading
  • the initial state of each module in the module information table is N
  • the processor maintains the state of the module in the module information table as L until loading is completed after the module is loaded into the queue of the dispatcher.
  • the status of a completed module can be changed to T.
  • the boot process can end when all modules are in the T state.
  • a workload in the module information table may be information representing an amount of work required for loading a module as a relative concept number.
  • a dependency list in the module information table may be information indicating the names of modules on which the corresponding module depends. Depending on the module, there may be no dependency, or it may have a dependency on at least one other module. The fact that a module has a dependency on another module may mean that the corresponding module can be loaded only when another module precedes and completes loading. For example, module b in [Table 2] has a dependency on module a, and module b can be loaded only after module a is loaded first.
  • the dispatcher may identify a module whose status is N and all dependencies are cleared in the module information table. As the dispatcher identifies module a and module c, it can load them into the dispatcher's queue. The dispatcher can change the status of module a and module c to L in the module information table after loading module a and module c into the dispatcher's queue.
  • the dispatcher can distribute module a and module c loaded in the dispatcher queue to idle module loader/0 and module loader/1. Since module loader/0 and module loader/1 have the same priority, the dispatcher can distribute modules randomly or sequentially one by one. For example, the dispatcher could distribute module a to module loader/0 and module c to module loader/1. A dispatcher that has completed distribution of all modules loaded in the dispatcher's queue can wait for a module loading complete event.
  • module loader/0 and module loader/1 to which modules have been distributed can each start loading.
  • module loader/0 may transmit a module loading completion event to the dispatcher and change to an idle state.
  • the dispatcher may update the status of module a to T in the module information table and indicate that the dependency on module a is cleared in the dependency list. After the dependency on module a is resolved, the module information table may be as shown in [Table 3].
  • the mark “v” in [Table 3] may be a flag mark indicating that the dependency is cleared.
  • the dispatcher may determine whether loading of all modules has been completed. As the dispatcher identifies that the module whose loading is not completed remains, it can search for a module whose status is N (not loaded) and whose dependencies are all resolved. The dispatcher can identify module b, and module d, and enqueue them in the dispatcher's queue. After the dispatcher enqueues module b and module d into the dispatcher's queue, it can change the state of module b and module d to L.
  • the dispatcher can retrieve an idle module loader. As the dispatcher identifies that module loader/0 is idle, it can dequeue module b from the dispatcher's queue and pass it to module loader/0.
  • the dispatcher can stop module delivery and wait for a module loading completion event from the module loader.
  • Module d may be loaded in the dispatcher's queue.
  • module loader/0 may transmit a module loading completion event to the dispatcher and change to an idle state.
  • the dispatcher may update the status of module b to T in the module information table and indicate that the dependency on module b is cleared in the dependency list.
  • the module information table may be as shown in [Table 4].
  • the dispatcher may determine whether loading of all modules has been completed. As the dispatcher identifies that the module whose loading is not completed remains, it can search for a module whose status is N (not loaded) and whose dependencies are all resolved. As there is no search result, the module may not be loaded.
  • module d is loaded in the dispatcher's queue
  • the dispatcher can search for an idle module loader. As the dispatcher identifies that module loader/0 is idle, it can dequeue module d from the dispatcher's queue and pass it to module loader/0. Since the dispatcher's queue is empty, it can wait for a module load complete event from the module loader.
  • module loader/1 may transmit a module loading completion event to the dispatcher and change to an idle state.
  • the dispatcher may update the status of module c to T in the module information table and indicate that the dependency on module c is cleared in the dependency list.
  • the module information table may be as shown in [Table 5].
  • the dispatcher may determine whether loading of all modules has been completed. As the dispatcher identifies that the module whose loading is not completed remains, it can search for a module whose status is N (not loaded) and whose dependencies are all resolved. The dispatcher can identify module f and enqueue it in the dispatcher's queue. After the dispatcher enqueues module f into the dispatcher's queue, it can change the state of module f to L.
  • the dispatcher can retrieve an idle module loader. As the dispatcher identifies that module loader/1 is idle, it can dequeue module f from the dispatcher's queue and pass it to module loader/1.
  • the dispatcher can wait for a module load complete event from the module loader.
  • module loader/0 and The module loader/1 may transmit a module loading completion event to the dispatcher and change to an idle state.
  • the dispatcher may update the states of module c and module d to T in the module information table, and indicate that the dependencies on module c and module d are cleared in the dependency list.
  • the dispatcher can deliver a loading completion event to all module loaders and terminate the operation of the dispatcher.
  • Module loader/0 and module loader/1 may also end their operations upon receiving the loading completion event, and the booting process may end.
  • the core information table may be used.
  • an electronic device has a core information table as shown in Table 6 below.
  • the processor of the electronic device includes 8 cores numbered 0 to 7, module loader/0 is assigned to core 0, module loader/1 is assigned to core 1, It may be the case that module loader/2 is assigned to core 4 and module loader/3 is assigned to core 5.
  • 'Loader #' may indicate the number of the module loader
  • 'Core #' may indicate the number of the core where the module loader is placed.
  • 'Priority' in [Table 6] can indicate the priority of the module loader. A lower value of 'Priority' may represent a higher priority with excellent performance of the core. According to an embodiment, a higher value of 'Priority' may indicate a higher priority.
  • 'State' can indicate whether the module loader is currently loading, and '# of pending module' indicates that the module loader is still loading except for modules currently loading. The number of modules loaded in the module loader's queue can be displayed without failing to do so.
  • Dispatchers can distribute modules to module loaders so that both of the following conditions are satisfied: Two conditions may be 1) distributing modules so that there are as few idle module loaders as possible, and 2) distributing from module loaders with higher priority. In this case, condition 1) may have to be satisfied prior to condition 2). For example, if there are two total module loaders, one of which is loading, and the loading module loader has a higher priority than the other module loaders, the module newly delivered by the dispatcher is can be passed to other module loaders in an idle state, not to the module loader that is executing. If both module loaders are performing loading, a module newly delivered by the dispatcher may be delivered in the order of a module loader having a higher priority among the two module loaders.
  • the module loader that the dispatcher can select is an idle module loader/0 and module loader/2. At this time, since the priority of module loader/2 is higher than that of module loader/0, the dispatcher can distribute the modules loaded in the dispatcher's queue to module loader/0.
  • FIG. 6 is a flowchart 600 for describing an operation of an electronic device according to an exemplary embodiment.
  • 7 is a flowchart 700 for describing an operation of an electronic device according to an exemplary embodiment.
  • the operation of the electronic device may be performed by a processor of the electronic device.
  • the dispatcher 240 determines whether loading of all modules for booting of an operating system (eg, the operating system 142 of FIG. 1 ) of the electronic device is completed. can do.
  • An operating system stored in the memory of the electronic device may be an Android operating system, and the Android operating system may load a device driver built in a module form in a kernel booting step.
  • the dispatcher 240 may enqueue an end signal to the queues 211 , 221 , and 231 of the module loaders 210 , 220 , and 230 in operation 615 .
  • the dispatcher 240 When it is not determined in operation 601 that loading of all modules is completed, the dispatcher 240 identifies a module whose dependency items are all cleared and places the module in the queue 241 of the dispatcher 240 in operation 603. You can enqueue.
  • the dispatcher 240 may determine modules that have no dependencies originally or whose dependencies are all cleared as other modules complete execution, as modules ready for loading execution.
  • the dispatcher 240 may identify all modules ready for loading and enqueue them in the queue 241 of the dispatcher 240 .
  • the dispatcher 240 may determine whether the queue 241 of the dispatcher 240 is empty. If the module ready to be loaded is enqueued in the queue 241 of the dispatcher 240 in operation 603, the queue 241 of the dispatcher 240 may be in a non-empty state.
  • the dispatcher 240 determines that the queue 241 of the dispatcher 240 is not empty in operation 605, it distributes all modules loaded in the queue 241 of the dispatcher 240 to the module loader.
  • the dispatcher 240 may distribute the modules according to the following conditions.
  • the dispatcher 240 may distribute modules one by one in order of highest priority among the at least one module loader in an idle state.
  • the priority of the module loader may be described as the same as that of the embodiment described above with reference to [Table 6]. If the priorities of the at least one module loader in the idle state are the same, the dispatcher 240 may distribute the modules one by one in a random order. If there are no module loaders that have already been idle while module distribution is not completed, or if there is no module loader that has been idle since module distribution, the dispatcher 240 assigns the highest priority among all module loaders. Modules can be distributed in a round-robin manner in order of highest module loader.
  • the dispatcher 240 can complete distribution of all modules loaded in the queue 241 of the dispatcher 240 in the above manner even when there is no module loader in an idle state.
  • the dispatcher 240 may return to operation 605 after performing operation 607 .
  • the dispatcher 240 may wait for a loading completion event of the module loaders 210, 220, and 230. While the dispatcher 240 is waiting for a loading completion event, it may be in a sleep state and may have little effect on the execution of other module loaders.
  • the dispatcher 240 may receive a module loading completion event from at least one module loader.
  • the dispatcher 240 may update the module information table stored in the memory.
  • the dispatcher 240 changes the status of the completed module to a loaded status, and clears the dependency on the loaded module from the dependency list of modules having dependencies on the loaded module. By changing, the module information table can be updated.
  • the memory of the electronic device may store a module information table, and the module information table may have various shapes and may include at least information about a loading state and dependencies of modules.
  • dispatcher 240 may return to operation 601 again.
  • the dispatcher 240 determines whether all modules have been loaded, and if it is determined that all modules have been loaded, in operation 615, the queues 211 and 221 of the module loaders 210, 220, and 230 , 231) can enqueue the termination signal.
  • the flowchart 700 of FIG. 7 may be a flowchart 700 illustrating an operation of any one module loader among the plurality of module loaders 210 , 220 , and 230 of FIG. 2 .
  • the flowchart 700 of FIG. 7 is an operation of the first module loader (eg, module loader/0 210 of FIG. 2 ).
  • the first module loader may wait for a module to be delivered from dispatcher 240 and enqueued in a queue. At this time, the first module loader may be in an idle state.
  • the first module loader may determine whether the loading end signal is enqueued as an enqueue occurs in the queue of the module loader.
  • the loading end signal may be a signal transmitted by the dispatcher 240 to all module loaders when all modules are loaded.
  • the first module loader may terminate the process upon identifying that the loading end signal has been enqueued in operation 703 .
  • the first module loader may determine whether the first module loader's queue is empty in operation 705.
  • the first module loader may load the module in operation 707 .
  • the first module loader may transmit a loading completion event to the dispatcher 240 after completing loading of the module.
  • the first module loader that has delivered the loading completion event may return to operation 705 and determine whether the queue is empty.
  • the first module loader activates another module loader in a second active state (e.g., module loader/1 220 of FIG. 2 and/or module It may be determined whether there is a loader/N (230).
  • the status of the module loader can be classified as shown in [Table 7].
  • the first module loader may identify, as a module loader in a second active state, a second module loader having modules loaded in the queue of the module loader waiting to be loaded and other modules being loaded.
  • the first module loader performing operation 711 may be in a first idle state in which no module is loaded in the queue of the module loader and no module is being loaded.
  • Second Rest State X O The module is loaded in the module loader's queue, but the module is not yet loaded. State prior to entering the first active state or the second active state First activity state O X A state in which there are no loaded modules in the module loader queue, but only modules that are being loaded. Second active state O O Loaded in the queue of the module loader, there are modules waiting to be loaded, and there are also modules in the process of loading.
  • the first module loader pulls the module loaded in the second module loader's queue into its own queue.
  • the first module loader may bring all the modules loaded in the second module loader's queue to its own queue, or may bring only one module to its own queue.
  • the first module loader may bring a module of the module loader having the lowest priority among the plurality of module loaders in the second active state.
  • the first module loader may identify, as a module loader in the first active state, a module loader having only a module being loaded without a module loaded in the queue of the module loader.
  • the first module loader When it is determined in operation 715 that there is no module loader in the first active state, the first module loader returns to operation 701 and waits for the module to be delivered from the dispatcher and enqueued in the queue.
  • the first module loader identifies at least one module loader in the first active state in operation 715, in operation 717 the first module loader selects a third module loader having the lowest priority among the at least one module loader in the first active state. can identify.
  • the first module loader may determine whether the priority of the third module loader is lower than its own priority.
  • the first module loader determines in operation 719 that the priority of the third module loader is higher than or equal to its own priority, the first module loader returns to operation 701 to wait for the module to be delivered from the dispatcher and enqueued in the queue. there is.
  • the first module loader retrieves the module being loaded by the third module loader and performs loading by itself. can do.
  • the embodiment described above with reference to FIGS. 6 and 7 is different from the embodiment described with reference to FIGS. 3 and 4 in that the module loader directly imports (redistributes) modules of other module loaders based on the judgment of the module loader.
  • a module loader attempting redistribution may be in a first idle state, and the module loader in the first idle state targets a module loader in a second idle state in which a module is loaded in the module loader's queue but is not yet loaded. may not perform any action.
  • An electronic device distributes and redistributes modules in consideration of the performance (priority) and current state (idle state/active state) of module loaders, so that a plurality of modules having dependencies have problems with dependencies. It is possible to reduce the loading time by performing loading in parallel even without a module and maximize the performance of module loading by optimally utilizing hardware resources.
  • 8 is a diagram for explaining an operation of an electronic device according to an exemplary embodiment. 8 may be a diagram illustrating an operation of a module loader according to a timeline in a booting process of an electronic device.
  • the horizontal axis of the first table 810 and the second table 820 of FIG. 8 may mean the passage of time.
  • an electronic device eg, the electronic device 101 of FIG. 1
  • a processor eg, the processor 120 of FIG. 1
  • module loader /0 and module loader /1 are assigned to each of the two selected cores.
  • the memory of the electronic device may store a module information table as shown in [Table 8] below.
  • the workload in Table 8 below may be information measured and stored by the electronic device in advance, or may be information measured and stored while loading a previous module.
  • the dispatcher may load module a and module c, the dependencies of which are resolved, into the queue of the dispatcher.
  • the dispatcher may determine a combination having the least imbalance in the workloads of the module loaders and distribute the modules loaded in the queue of the dispatcher to the module loaders.
  • the priority when determining workload imbalance, when the priorities of module loaders are different, the priority may also be considered. In the following description, it is assumed that the priorities of module loaders are the same.
  • the dispatcher can distribute module a to module loader/0 and module c to module loader/1 in any order.
  • the cumulative workload of module loader/0 to which module a is distributed may be 3, and the cumulative workload of module loader/1 to which module c is distributed may be 7.
  • module loader/0 can complete loading of module a.
  • the dispatcher may update the status of module a to T in the module information table and indicate that the dependency on module a is cleared in the dependency list.
  • a description of the same configuration as the above-described embodiment will be omitted.
  • the dispatcher can load module b and module d, which have their dependencies on module a resolved, into the dispatcher's queue.
  • the workload of module b may be 3, and the workload of module d may be 5.
  • the dispatcher may determine the combination with the least imbalance in the workloads of the module loaders. Since the cumulative workload of module loader/0 is 3 and the cumulative workload of module loader/1 is 5, the dispatcher distributes module b with workload 3 to module loader/1, and module d with workload 5 to module You can distribute to loader/0.
  • the cumulative workload of module loader/0 to which module d is distributed may be 8, and the cumulative workload of module loader/1 to which module b is distributed may be 10.
  • the dispatcher may update the status of module c to T in the module information table, and indicate that the dependency on module c is resolved in the dependency list.
  • the dispatcher can load module f, which has all dependencies on module c, on the dispatcher's queue.
  • the workload of module f may be 4.
  • the dispatcher may determine the combination with the least imbalance in the workloads of the module loaders. Since module loader/0 has a cumulative workload of 8 and module loader/1 has a cumulative workload of 10, the dispatcher can distribute module f to module loader/0, which has a smaller cumulative workload.
  • the accumulated workload of module loader/0 to which module f is distributed becomes 12, and the accumulated workload of module loader/1 may be 10 as it is.
  • the dispatcher may deliver a loading completion event to all module loaders and terminate the operation of the dispatcher.
  • Module loader/0 and module loader/1 may also end their operations upon receiving the loading completion event, and the booting process may end.
  • An electronic device distributes modules in a combination that minimizes an imbalance of cumulative workloads of module loaders, thereby performing loading of a plurality of modules having dependencies in parallel without problems in dependencies, It is possible to maximize the performance of module loading by shortening the loading time and optimally utilizing hardware resources.
  • An electronic device includes a processor including a plurality of cores, and a memory electrically connected to the processor and storing instructions, the instructions being executed by a dispatcher ( dispatcher) determines whether or not loading of a plurality of modules for booting of the operating system of the electronic device is completed, and determines that there is a module whose loading is incomplete among the plurality of modules, the dispatcher A, identifies at least one module whose dependencies are cleared based on the module information table stored in the memory, and as the at least one module is identified, the dispatcher, the core stored in the memory Based on the information table, at least one of state information and priority information of a module loader allocated to two or more cores among the plurality of cores is identified, and the identified information is Based on this, the dispatcher selects at least one module loader from among two or more module loaders to which the cores are respectively allocated, and stores instructions for the processor to control the distribution of the at least one module.
  • a dispatcher dispatcher
  • the memory when executed, instructions for the processor to control the dispatcher to update the module information table upon receiving a loading completion event from the at least one module loader can be saved
  • the memory when executed, selects at least one module loader in an idle state among the module loaders and controls the processor to distribute the at least one module. can save them.
  • the memory stores the at least one of the module loaders in the order of highest priority among the module loaders when a plurality of module loaders in the idle state are identified during execution. It may store instructions that cause the processor to control to distribute the modules of .
  • the dispatcher when the memory is executed, the dispatcher first considers whether the module loaders are in an idle state based on the status information, and then prioritizes the dispatcher based on the priority information. It is possible to store instructions for the processor to control to distribute the at least one module in consideration of whether or not is high.
  • the memory is in a second active state in which, during execution, the first module loader in the idle state has modules loaded in the queue of the module loader waiting to be loaded and modules in the process of being loaded.
  • 2 may store instructions for the processor to control, to identify the module loader.
  • the memory upon execution, as the second module loader is identified, the first module loader assigns a module loaded in the queue of the second module loader to the first module loader. It can store instructions that cause the processor to control it, to be pulled into a queue.
  • the first module loader when the memory is executed, as the second module loader is not identified, the first module loader has only a module being loaded without a loaded module in the queue of the module loader. It may store instructions for causing the processor to control to identify a third module loader in a first active state.
  • the first module loader determines that the priority of the third module loader is higher than that of the first module loader. low, and as it is identified that the priority of the third module loader is lower than that of the first module loader, the first module loader transfers the module being loaded by the third module loader to the first module loader. It can store instructions that the processor takes control of for pulling into the module loader's queue.
  • the memory stores the at least one module such that, when executed, the dispatcher considers the cumulative workload of the module loaders and minimizes a difference between the cumulative workloads of each module loader. It may store instructions that allow the processor to control to distribute .
  • a dispatcher performs a plurality of operations for booting an operating system of the electronic device. As it is determined whether the loading of the modules of the module is completed, and it is determined that there is a module whose loading is incomplete among the plurality of modules, the dispatcher, based on the module information table stored in the memory of the electronic device At least one module whose dependencies are cleared is identified, and as the at least one module is identified, the dispatcher selects two or more cores from among the plurality of cores based on the core information table stored in the memory. identifying at least one of state information and priority information of a module loader respectively assigned to select at least one of the module loaders to distribute the at least one module; control the processor.
  • the dispatcher may control the processor to update the module information table upon receiving a loading completion event from the at least one module loader.
  • the processor may be controlled to distribute the at least one module by selecting at least one module loader in an idle state among the module loaders.
  • the at least one module when a plurality of module loaders in the idle state are identified among the module loaders, the at least one module is distributed in order of highest priority among the plurality of module loaders, can control.
  • the dispatcher first considers whether the module loaders are in an idle state based on the status information, and then considers whether the module loaders are in an idle state based on the priority information, and then considers whether the at least The processor may be controlled to distribute one module.
  • the first module loader in the idle state identifies a second module loader in the second active state, which has a module loaded in the queue of the module loader waiting to be loaded and also has a module in execution of loading. You can control the processor.
  • the first module loader pulls the module loaded in the queue of the second module loader into the queue of the first module loader, You can control the processor.
  • the processor may be controlled.
  • the first module loader determines whether the priority of the third module loader is lower than the priority of the first module loader, and When it is identified that the priority of the third module loader is lower than that of the first module loader, the first module loader pulls the module being loaded by the third module loader into the queue of the first module loader. ), it is possible to control the processor.
  • the dispatcher controls the processor to distribute the at least one module in consideration of the cumulative workload of the module loaders so that a difference between the cumulative workloads of each module loader is minimized can do.

Landscapes

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

Abstract

다양한 실시 예에 따른 전자 장치는, 복수의 코어들을 포함하는 프로세서 및 인스트럭션들을 저장하는 메모리를 포함하고, 상기 인스트럭션들은, 디스패처가 상기 전자 장치의 운영 체제의 부팅을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고, 상기 복수의 모듈들 중에서 로딩이 미완료된 모듈의 존재를 판단함에 따라, 상기 디스패처가, 기 저장되어 있는 모듈 정보 테이블을 기반으로 의존성이 해소된 적어도 하나의 모듈을 식별하며, 상기 식별에 따라, 상기 디스패처가, 기 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더의 상태 정보와 우선 순위 정보 중 적어도 하나를 식별하고, 상기 식별한 정보를 기반으로, 상기 디스패처가 상기 코어들이 각각 할당된 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장한다.

Description

복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법
본 문서에서 개시되는 실시 예들은, 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법에 관한 것이다.
커널(kernel) 부팅 단계에서 모듈(module) 형태로 빌드된 디바이스 드라이버(device driver)를 로딩(loading)할 경우, 안드로이드(Android) 운영체제(Operating System, OS)의 모듈은 직렬화된 형태로 순차적으로 실행하는 구조를 가질 수 있다. 안드로이드 운영체제(OS)가 멀티 코어(multicore) CPU(central processing unit)상에서 동작하고, 복수의 모듈을 로딩 해야 할 경우, init이라는 이름의 프로세스가 전체 모듈 로딩을 단독적으로 수행함에 따라 한 개의 코어(core)에서만 모듈 로딩이 순차적으로 실행될 수 있다.
직렬화된 구조로 모듈 로딩을 실행하는 이유는 로딩 되는 모듈 간에 의존성이 존재하기 때문일 수 있다. 예를 들어, 모듈 a가 모듈 b에 대해 의존성을 가지고 있는 경우, 선행해야 하는 모듈 b가 로딩되었는지 여부를 확인하고, 모듈 b가 로딩된 후에 동일 코어에서 모듈 a의 로딩을 진행할 수 있는 구조일 수 있다. 따라서 모든 모듈 로딩의 순서가 의존성에 문제가 없는 순서로서 하나의 코어에서만 진행될 수 있다.
그러나, 멀티 코어 CPU가 탑재된 전자 장치에서 직렬화된 실행 구조는 멀티 코어를 가진 하드웨어 자원을 충분히 활용하지 못하는 문제점이 있으며, 부팅 시간의 지연 등으로 이어져 전자 장치의 성능 저하를 가져오는 요인 중 하나가 될 수 있다.
본 개시의 다양한 실시 예는, 서로간 의존성을 가지고 있는 복수의 모듈들을 로딩함에 있어, 멀티 코어 CPU의 하드웨어 자원을 최적으로 활용하여, 병렬성의 이점을 극대하면서도 모듈 간 의존관계를 문제 없이 충족시켜서, 모듈 로딩의 성능을 최적화한 전자 장치 및 그의 동작 방법을 제공하고자 한다.
본 문서에 개시되는 일 실시 예에 따른 전자 장치는, 복수의 코어들을 포함하는 프로세서, 및 상기 프로세서와 전기적으로 연결되고, 인스트럭션들을 저장하는 메모리를 포함하고, 상기 인스트럭션들은, 실행 시에, 디스패처(dispatcher)가 상기 전자 장치의 운영 체제(operating system)의 부팅(booting)을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고, 상기 복수의 모듈들 중에서 로딩이 미완료된 모듈이 존재함을 판단함에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 모듈 정보 테이블을 기반으로 의존성이 해소(clear)된 적어도 하나의 모듈을 식별하며, 상기 적어도 하나의 모듈이 식별됨에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더(module loder)의 상태(state) 정보와 우선 순위(priority) 정보 중 적어도 하나를 식별하고, 상기 식별한 정보를 기반으로, 상기 디스패처가 상기 코어들이 각각 할당된 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장한다.
또한, 본 문서에 개시되는 일 실시 예에 따른 복수의 코어들을 포함하는 프로세서를 포함하는 전자 장치의 동작 방법은, 디스패처(dispatcher)가 상기 전자 장치의 운영 체제(operating system)의 부팅(booting)을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고, 상기 복수의 모듈들 중에서 로딩이 미완료된 모듈이 존재함을 판단함에 따라, 상기 디스패처가, 상기 전자 장치의 메모리에 저장되어 있는 모듈 정보 테이블을 기반으로 의존성이 해소(clear)된 적어도 하나의 모듈을 식별하며, 상기 적어도 하나의 모듈이 식별됨에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더(module loder)의 상태(state) 정보와 우선 순위(priority) 정보 중 적어도 하나를 식별하고, 상기 식별한 정보를 기반으로, 상기 디스패처가 상기 코어들이 각각 할당된 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록; 상기 프로세서를 제어한다.
본 개시의 다양한 실시 예에 따르면, 서로간 의존성을 가지고 있는 복수의 모듈들을 로딩함에 있어, 멀티 코어 CPU의 하드웨어 자원을 최적으로 활용하여, 병렬성의 이점을 극대하면서도 모듈 간 의존관계를 문제 없이 충족시켜서, 모듈 로딩의 성능을 최적화한 전자 장치 및 그의 동작 방법이 제공될 수 있다.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1은, 다양한 실시 예들에 따른, 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2는 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 3은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도이다.
도 4는 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도이다.
도 5는 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도이다.
도 7은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도이다.
도 8은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도면의 설명과 관련하여, 동일 또는 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(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), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시 예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시 예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시 예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.
메모리(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)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다.
오디오 모듈(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(wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO: full dimensional MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제 2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일 실시 예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시 예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
다양한 실시 예에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일 실시 예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제 1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제 2 면(예: 윗 면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, 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)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시 예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일 실시 예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제 2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
본 문서에 개시된 다양한 실시 예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시 예들로 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "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))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어™)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있으며, 복수의 개체 중 일부는 다른 구성요소에 분리 배치될 수도 있다. 다양한 실시 예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
이하, 도 2, 도 3, 및 도 4를 참고하여, 일 실시 예에 따른 전자 장치의 동작에 대하여 설명한다.
도 2는 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 도면이다. 도 3은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도(300)이다. 도 4는 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도(400)이다. 이하, 전자 장치의 동작은 전자 장치의 프로세서에 의해 수행될 수 있다.
도 2를 참조하면, 전자 장치(예: 도 1의 전자 장치(101))의 프로세서(예: 도 1의 프로세서(120))는 2개 이상의 코어(core)를 가진 멀티코어(Multicore)(이하, 복수의 코어들)를 포함할 수 있다. 전자 장치의 메모리(예: 도 1의 메모리(130))은 복수의 모듈 로더(module loder)들(210, 220, 230)을 저장할 수 있다.
복수의 코어들은 각각 하나의 모듈 로더(210, 220, 230)에 대응될 수 있다. 예를 들어, 전자 장치의 프로세서가 N+1개의 코어를 포함하는 경우, 제0번 코어는 모듈 로더/0(210)에 대응되고, 제1번 코어는 모듈 로더/1(220)에 대응되고, …, 제N번 코어는 모듈 로더/N(230)에 대응될 수 있다. 또는 일 실시 예에 따라 모듈 로딩에 사용하기로 결정된 코어에만 모듈 로더가 대응될 수도 있다. 각 모듈 로더는 모듈을 적재할 수 있는 큐(queue)(211, 221, 231)를 포함할 수 있다.
전자 장치의 메모리는 디스패처(dispatcher)(240)를 저장할 수 있다. 디스패처는 로딩 준비가 된 모듈을 적재할 수 있는 큐(queue)(241)를 포함할 수 있다. 디스패처(240)는 큐(241)를 이용하여 모듈을 복수의 모듈 로더들(210, 220, 230)에 분배하는 동작을 수행할 수 있다. 디스패처(240)는 모듈 로더(210, 220, 230)과 별도의 코어에 대응될 수도 있으나, 어느 하나의 모듈 로더와 같은 코어에 대응될 수도 있다. 어느 하나의 모듈 로더가 디스패처(240)와 같은 코어에 대응되는 경우, 해당 모듈 로더에서 모듈을 로딩하는 중에는 디스패처(240)는 슬립(sleep) 상태일 수 있다.
이하, 도 3의 순서도(300)을 더 참조하여 디스패처(240)의 동작에 대하여 설명한다.
도 2 및 도 3을 참조하면, 디스패처(240)는 동작 301에서, 전자 장치의 운영 체제(예: 도 1의 운영 체제(142))의 부팅(booting)을 위한 모든 모듈의 로딩이 완료되었는지 판단할 수 있다. 전자 장치의 메모리에 저장된 운영 체제는 안드로이드(Android) 운영체제(Operating System, OS)일 수 있으며, 안드로이드 운영 체제는 커널(kernel) 부팅 단계에서 모듈(module) 형태로 빌드된 디바이스 드라이버(device driver)를 로딩(loading)할 수 있다.
디스패처(240)는 동작 301에서 모든 모듈의 로딩이 완료되었다고 판단되는 경우, 동작 317에서 모듈 로더들(210, 220, 230)의 큐(211, 221, 231)에 종료 시그널을 인큐(enqueue)할 수 있다.
디스패처(240)는 동작 301에서 모든 모듈의 로딩이 완료되었다고 판단되지 않는 경우, 동작 303에서, 의존성(dependency) 항목이 모두 해소(clear)된 모듈을 식별하여 디스패처(240)의 큐(241)에 인큐할 수 있다. 디스패처(240)는 의존성이 원래 없거나 다른 모듈이 실행 완료됨으로써 의존성이 모두 해소된 모듈들을 로딩 실행이 준비된 모듈로 판단할 수 있다. 디스패처(240)는 로딩 실행이 준비된 모듈을 모두 식별하여 디스패처(240)의 큐(241)에 인큐할 수 있다.
동작 305에서, 디스패처(240)는 디스패처(240)의 큐(241)가 비어있는 상태인지 여부를 판단할 수 있다. 동작 303에서 로딩 실행이 준비된 모듈을 디스패처(240)의 큐(241)에 인큐하였다면, 디스패처(240)의 큐(241)는 비어있지 않은 상태일 수 있다.
동작 307에서, 디스패처(240)는 동작 305에서 디스패처(240)의 큐(241)가 비어있지 않다고 판단함에 따라 아이들(idle) 상태의 모듈 로더(modue loder)가 존재하는지 여부를 판단할 수 있다. 일 실시 예에 따라 아이들 상태란, 모듈 로더가 모듈을 로딩하고 있지 않으며, 모듈 로더의 큐가 비어있는 상태를 의미할 수 있다.
동작 309에서, 디스패처(240)는 동작 307에서 아이들 상태인 모듈 로더가 적어도 하나 존재한다고 판단함에 따라, 디스패처(240)의 큐(241)에서 모듈 한 개를 디큐(dequeue)하여 아이들 상태인 적어도 하나의 모듈 로더 중 우선순위(priority)가 가장 높은 모듈 로더의 큐에 인큐할 수 있다. 디스패처(240)은 동작 309를 수행한 후에 다시 동작 305로 돌아갈 수 있다.
동작 305에서 디스패처(240)가 디스패처(240)의 큐가 비어있다고 판단하거나, 동작 307에서 디스패처(240)가 아이들 상태인 모듈 로더를 식별하지 못한 경우, 동작 311에서 디스패처(240)는 모듈 로더(210, 220, 230)의 로딩 완료 이벤트를 대기할 수 있다. 디스패처(240)가 로딩 완료 이벤트를 대기하는 중에는 슬립(sleep) 상태일 수 있으며, 다른 모듈 로더의 실행에 거의 영향을 주지 않을 수 있다.
동작 313에서 디스패처(240)는 적어도 하나의 모듈 로더로부터 모듈 로딩 완료 이벤트를 수신할 수 있다.
동작 315에서 디스패처(240)는 메모리에 저장된 모듈 정보 테이블을 업데이트할 수 있다. 디스패처(240)는 모듈 정보 테이블에서, 완료된 모듈의 상태를 로딩 완료 상태로 변경하고, 로딩 완료된 모듈에 대하여 의존성을 가지고 있는 모듈의 의존성 리스트에서 로딩 완료된 모듈에 대한 의존성을 해소(clear)된 상태로 변경함으로써 모듈 정보 테이블을 업데이트할 수 있다. 일 실시 예에 따라 전자 장치의 메모리는 프로세서를 통하여 모듈 정보 테이블을 저장할 수 있으며, 모듈 정보 테이블의 형태는 다양할 수 있으며 적어도 모듈의 로딩 상태와 의존성에 대한 정보를 포함할 수 있다.
동작 315를 완료한 후, 디스패처(240)는 다시 동작 301로 돌아갈 수 있다. 동작 301에서 디스패처(240)는 모든 모듈의 로딩이 완료되었는지 여부를 판단하여, 모든 모듈의 로딩이 완료되었다고 판단되는 경우, 동작 317에서 모듈 로더들(210, 220, 230)의 큐(211, 221, 231)에 종료 시그널을 인큐할 수 있다.
이하, 도 4의 순서도(400)을 참조하여 모듈 로더(210, 220, 230)의 동작에 대하여 설명한다. 도 4의 순서도(400)는 도 2의 복수의 모듈 로더(210, 220, 230) 중 어느 하나의 모듈 로더의 동작을 나타낸 순서도(400)일 수 있다.
도 2 및 도 4를 참조하면, 동작 401에서, 모듈 로더(210, 220, 230)은 디스패처(240)로부터 모듈이 전달되어 큐(211, 221, 231)에 인큐되기를 대기할 수 있다. 이때, 모듈 로더(210, 220, 230)은 아이들(idle) 상태일 수 있다.
동작 403에서, 모듈 로더(210, 220, 230)는 모듈 로더의 큐(211, 221, 231)에 인큐가 발생함에 따라, 로딩 종료 시그널이 인큐되었는지 판단할 수 있다. 로딩 종료 시그널이란 모든 모듈이 로딩 완료되었을 때 디스 패처(240)가 모듈 로더(210, 220, 230)에게 전달하는 시그널일 수 있다.
모듈 로더(210, 220, 230)는 로딩 종료 시그널이 인큐되었음을 식별함에 따라 프로세스를 종료할 수 있다.
모듈 로더(210, 220, 230)는 로딩 종료 시그널이 인큐된 것이 아님을 식별함에 따라, 동작 405에서, 모듈 로더(210, 220, 230)의 큐(211, 221, 231)가 비어있는지 여부를 판단할 수 있다. 모듈 로더(210, 220, 230)는 큐(211, 221, 231)이 비었다고 판단됨에 따라 동작 401로 돌아가서 모듈이 전달되기를 대기할 수 있다.
모듈 로더(210, 220, 230)는 큐(211, 221, 231)이 비어있지 않고 모듈이 적재되어 있음을 식별함에 따라, 동작 407에서 모듈의 로딩을 수행할 수 있다.
동작 409에서, 모듈 로더(210, 220, 230)는 모듈의 로딩을 완료한 후, 디스패처(240)에게 로딩 완료 이벤트를 전달할 수 있다. 로딩 완료 이벤트를 전달한 모듈 로더(210, 220, 230)는 다시 동작 405로 돌아가 큐(211, 221, 231)이 비어있는지 여부를 판단할 수 있다.
모듈 로더(210, 220, 230)는 동작 405에서 큐가 비어있음을 식별하고, 동작 401에서 인큐가 발생하기를 대기하다가, 동작 403에서 로딩 종료 시그널이 인큐되었음을 식별함에 따라 부팅 프로세스를 종료할 수 있다.
이하, 도 5를 참고하여, 일 실시 예에 따른 전자 장치의 동작에 대하여 예를 들어 자세히 설명한다.
도 5는 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 도면이다. 도 5는 전자 장치의 부팅(booting) 프로세스에서 모듈 로더의 동작을 타임라인에 따라 나타낸 도면일 수 있다. 도 5의 제1 표(510) 및 제2 표(520)의 가로축은 시간의 흐름을 의미할 수 있다.
도 5를 참조하여 설명할 실시 예에서는, 2개 이상의 복수의 코어(core)들을 가진 프로세서(예: 도 1의 프로세서(120))를 포함하는 전자 장치(예: 도 1의 전자 장치(101))에 있어서, 2개의 코어들 각각에 모듈 로더가 할당된 경우를 가정한다. 예를 들어, 전자 장치의 프로세서가 0~7번까지 8개의 코어를 포함하고, 0번 코어에 모듈 로더/0이 할당되고, 4번 코어에 모듈 로더/1가 할당된 경우일 수 있다. 이때, 코어 정보 테이블은 하기 [표 1]과 같을 수 있다.
Core Number
0 4
State IDLE IDLE
Priority 2 2
0번 코어에 할당된 모듈 로더/0과 4번 코어에 할당된 모듈 로더/1의 우선 순위(priority)는 동일한 것으로 가정한다. 부팅 프로세스를 시작하기 전의 모듈 로더/0과 모듈 로더/1는 아이들(idle) 상태일 수 있다.
전자 장치의 메모리는 하기 [표 2]와 같은 모듈 정보 테이블을 저장할 수 있다.
Module name State Workload Dependency list
a N 3
b N 3 a
c N 7
d N 5 a
f N 4 a c
일 실시 예에 따라 모듈 정보 테이블은 부팅 단계에서 로딩이 필요한 모든 모듈의 상태(state) 정보 및 의존성(dependency) 정보를 적어도 포함할 수 있다. 일 실시 예에 따라 모듈 정보 테이블은 모듈의 이름(module name), 및 워크로드(workload) 중 적어도 하나를 더 포함할 수 있다.
일 실시 예에 따라 모듈 정보 테이블에서 모듈의 상태(state)는 T, N, 또는 L 중의 어느 하나로 나타내어질 수 있다. 모듈 상태가 T(terminated)인 경우는, 모듈의 로딩이 완료된 상태를 의미할 수 있다. 모듈 상태가 N(not loaded)인 경우는, 모듈의 로딩이 시작되지 않은 상태를 의미할 수 있다. 모듈의 상태가 L(loading)인 경우는, 디스패처의 큐에 적재된 상태이거나, 모듈 로더가 로딩을 실행 중인 상태를 의미할 수 있다.
일 실시 예에 따라 모듈 정보 테이블의 각 모듈의 초기 상태는 N이며, 프로세서는 모듈이 디스패처의 큐에 적재된 후 로딩이 완료되기 전까지는 모듈 정보 테이블에서 모듈의 상태를 L로 유지하고, 로딩이 완료된 모듈의 상태는 T로 변경할 수 있다. 모든 모듈이 T 상태인 경우 부팅 프로세스는 종료될 수 있다.
일 실시 예에 따라 모듈 정보 테이블에서 워크로드(workload)는 모듈의 로딩에 필요한 일의 양을 상대적인 개념의 숫자로 나타낸 정보일 수 있다.
일 실시 예에 따라 모듈 정보 테이블에서 의존성 리스트(dependency list)는 해당 모듈이 의존하고 있는 모듈의 이름을 나타낸 정보일 수 있다. 모듈에 따라 의존성이 없을 수도 있고, 적어도 하나의 다른 모듈에 대하여 의존성을 가질 수도 있다. 모듈이 다른 모듈에 대하여 의존성을 갖는다는 것은 다른 모듈이 선행되어 로딩이 완료된 경우에만 해당 모듈이 로딩이 가능하다는 의미일 수 있다. 예를 들어, [표 2]의 모듈 b는 모듈 a에 대하여 의존성을 가지며, 모듈 b는 모듈 a가 먼저 로딩된 후에만 로딩이 가능할 수 있다.
일 실시 예에 따라 부팅 프로세스가 시작되면, 디스패처는 모듈 정보 테이블에서 상태가 N이면서 의존성이 모두 해소(clear)된 모듈을 식별할 수 있다. 디스패처는 모듈 a와 모듈 c가 식별됨에 따라 이를 디스패처의 큐에 적재할 수 있다. 디스패처는 모듈 a와 모듈 c를 디스패처의 큐에 적재한 후 모듈 정보 테이블에서 모듈 a와 모듈 c의 상태를 L로 변경할 수 있다.
디스패처는 아이들 상태인 모듈 로더/0과 모듈 로더/1에 디스패처 큐에 적재된 모듈 a, 모듈 c를 분배할 수 있다. 모듈 로더/0과 모듈 로더/1은 우선 순위가 동일하므로 디스패처는 임의로, 또는 순서대로 하나씩 모듈을 분배할 수 있다. 예를 들어, 디스패처는 모듈 로더/0에게 모듈 a를 분배하고, 모듈 로더/1에게 모듈 c를 분배할 수 있다. 디스피처의 큐에 적재된 모든 모듈의 분배를 완료한 디스패처는 모듈 로딩 완료 이벤트를 대기할 수 있다.
도 5를 참조하면, t=0에서 모듈을 분배받은 모듈 로더/0 및 모듈 로더/1은 각각 로딩을 시작할 수 있다.
모듈 a의 워크로드 만큼 경과한 t=3 시점에서, 모듈 a의 로딩이 완료되면, 모듈 로더/0는 디스패처에게 모듈 로딩 완료 이벤트를 전달하고, 아이들 상태로 변경될 수 있다.
디스패처는 모듈 정보 테이블에서 모듈 a의 상태를 T로 갱신하고, 의존성 리스트에서 모듈 a에 대한 의존성이 해소(clear)되었음을 표시할 수 있다. 모듈 a에 대한 의존성이 해소된 후 모듈 정보 테이블은 [표 3]과 같을 수 있다.
Module name State Workload Dependency list
a T 3
b N 3 a
v
c L 7
d N 5 a
v
f N 4 a c
v
일 실시 예에 따라 [표 3]에서 표시 “v”는 의존성이 해소(clear)되었음을 나타내는 플래그(flag) 표시일 수 있다.
디스패처는 모든 모듈의 로딩이 완료되었는지 판단할 수 있다. 디스패처는 로딩이 완료되지 않은 모듈이 남아있음을 식별함에 따라, 상태가 N(not loaded)이면서, 의존성이 모두 해소된 모듈을 검색할 수 있다. 디스패처는 모듈 b, 및 모듈 d를 식별하여, 디스패처의 큐에 인큐할 수 있다. 디스패처는 모듈 b 및 모듈 d 를 디스패처의 큐에 인큐한 후, 모듈 b 및 모듈 d의 상태를 L로 변경할 수 있다.
디스패처는 아이들 상태의 모듈 로더를 검색할 수 있다. 디스패처는 모듈 로더/0이 아이들 상태임을 식별함에 따라 모듈 b를 디스패처의 큐에서 꺼내어 모듈 로더/0에게 전할 수 있다.
디스패처는 모듈 로더/0 및 모듈 로더/1이 모두 동작 중인 상태이므로, 모듈의 전달을 중단하고 모듈 로더로부터의 모듈 로딩 완료 이벤트를 대기할 수 있다. 디스패처의 큐에는 모듈 d가 적재된 상태일 수 있다.
모듈 로더/0은 t=3 시점에 모듈 b를 전달 받아, 모듈 로더/0의 큐에 적재하고 모듈 b의 로딩을 시작할 수 있다.
t=3으로부터 모듈 b의 워크로드 만큼 경과한 t=6 시점에서, 모듈 b의 로딩이 완료되면, 모듈 로더/0는 디스패처에게 모듈 로딩 완료 이벤트를 전달하고, 아이들 상태로 변경될 수 있다.
디스패처는 모듈 정보 테이블에서 모듈 b의 상태를 T로 갱신하고, 의존성 리스트에서 모듈 b에 대한 의존성이 해소(clear)되었음을 표시할 수 있다. 이때 모듈 정보 테이블은 [표 4]와 같을 수 있다.
Module name State Workload Dependency list
a T 3
b T 3 a
v
c L 7
d L 5 a
v
f N 4 a c
v
디스패처는 모든 모듈의 로딩이 완료되었는지 판단할 수 있다. 디스패처는 로딩이 완료되지 않은 모듈이 남아있음을 식별함에 따라, 상태가 N(not loaded)이면서, 의존성이 모두 해소된 모듈을 검색할 수 있다. 검색 결과가 없음에 따라 모듈의 적재는 이루어지지 않을 수 있다.
그러나, 디스패처의 큐에는 모듈 d가 적재되어 있는 상태이므로 디스패처는 아이들 상태의 모듈 로더를 검색할 수 있다. 디스패처는 모듈 로더/0이 아이들 상태임을 식별함에 따라 모듈 d를 디스패처의 큐에서 꺼내어 모듈 로더/0에게 전할 수 있다. 디스패처의 큐는 비어있는 상태이므로 모듈 로더로부터의 모듈 로딩 완료 이벤트를 대기할 수 있다.
모듈 로더/0은 t=6 시점에 모듈 d를 전달 받아, 모듈 로더/0의 큐에 적재하고 모듈 d의 로딩을 시작할 수 있다.
모듈 c의 워크로드 만큼 경과한 t=7 시점에서 모듈 c의 로딩이 완료되면, 모듈 로더/1는 디스패처에게 모듈 로딩 완료 이벤트를 전달하고, 아이들 상태로 변경될 수 있다.
디스패처는 모듈 정보 테이블에서 모듈 c의 상태를 T로 갱신하고, 의존성 리스트에서 모듈 c에 대한 의존성이 해소(clear)되었음을 표시할 수 있다. 이때 모듈 정보 테이블은 [표 5]와 같을 수 있다.
Module name State Workload Dependency list
a T 3
b T 3 a
v
c T 7
d L 5 a
v
f N 4 a c
v v
디스패처는 모든 모듈의 로딩이 완료되었는지 판단할 수 있다. 디스패처는 로딩이 완료되지 않은 모듈이 남아있음을 식별함에 따라, 상태가 N(not loaded)이면서, 의존성이 모두 해소된 모듈을 검색할 수 있다. 디스패처는 모듈 f를 식별하여, 디스패처의 큐에 인큐할 수 있다. 디스패처는 모듈 f를 디스패처의 큐에 인큐한 후, 모듈 f의 상태를 L로 변경할 수 있다.
디스패처는 아이들 상태의 모듈 로더를 검색할 수 있다. 디스패처는 모듈 로더/1이 아이들 상태임을 식별함에 따라 모듈 f를 디스패처의 큐에서 꺼내어 모듈 로더/1에게 전할 수 있다.
디스패처의 큐는 비어있는 상태이므로 디스패처는 모듈 로더로부터의 모듈 로딩 완료 이벤트를 대기할 수 있다.
모듈 로더/1은 t=7 시점에 모듈 f를 전달 받아, 모듈 로더/1의 큐에 적재하고 모듈 f의 로딩을 시작할 수 있다.
t=7으로부터 모듈 c의 워크로드 만큼 경과한 시간이자 t=6으로부터 모듈 d의 워크로드 만큼 경과한 시간인 t=11 시점에서, 모듈 c 및 모듈 d의 로딩이 완료되면, 모듈 로더/0 및 모듈 로더/1은 디스패처에게 모듈 로딩 완료 이벤트를 전달하고, 아이들 상태로 변경될 수 있다.
디스패처는 모듈 정보 테이블에서 모듈 c 및 모듈 d의 상태를 T로 갱신하고, 의존성 리스트에서 모듈 c 및 모듈 d에 대한 의존성이 해소(clear)되었음을 표시할 수 있다.
디스패처는 모든 모듈의 로딩이 완료된 상태(T 상태)가 되었음을 확인함에 따라 전체 모듈 로더들에게 로딩 완료 이벤트를 전달하고 디스패처의 동작을 종료할 수 있다. 모듈 로더/0 및 모듈 로더/1도 로딩 완료 이벤트를 수신함에 따라 동작을 종료할 수 있고, 부팅 프로세스는 종료될 수 있다.
앞서 도 5에서는 모듈 로더가 할당되도록 선택된 모든 코어의 우선 순위가 동일한 경우를 가정하여 설명하였다. 그러나 일 실시 예에 따라 전자 장치에 포함된 복수의 코어들은 연산 능력이 각각 상이할 수 있다. 이 경우, 연산 능력이 보다 우수한 코어에 모듈 분배 우선 순위를 부여함에 따라 로딩 효율을 극대화할 수 있다.
전자 장치에 포함된 복수의 코어들은 연산 능력이 각각 상이한 경우, 코어 정보 테이블을 사용할 수 있다. 일 실시 예에 따라 전자 장치가 하기 [표 6]과 같은 코어 정보 테이블을 갖는 경우를 가정하여 설명한다. 예를 들어, [표 6]은 전자 장치의 프로세서가 0~7번까지 8개의 코어를 포함하고, 0번 코어에 모듈 로더/0이 할당되고, 1번 코어에 모듈 로더/1가 할당되고, 4번 코어에 모듈 로더/2가 할당되고, 5번 코어에 모듈 로더/3가 할당된 경우일 수 있다.
Loader # Core # Priority State # of pending module
0 0 4 IDLE 0
1 1 2 BUSY 0
2 4 2 IDLE 0
3 5 0 BUSY 0
[표 6]에서 'Loader #'는 모듈 로더의 번호를 나타낼 수 있으며, 'Core #'는 해당 모듈 로더를 배치할 코어의 번호를 나타낼 수 있다. 또한 [표 6]에서 'Priority'는 모듈 로더의 우선 순위를 나타낼 수 있다. 'Priority'의 값이 낮은 값일수록 코어의 성능이 우수한 높은 선순위를 나타낼 수 있다. 일 실시 예에 따라 'Priority' 값이 높은 값일수록 선순위를 나타낼 수도 있다. 또한 [표 6]에서 'State'는 해당 모듈 로더가 현재 로딩을 수행 중인지 여부를 나타낼 수 있으며, '# of pending module'은 해당 모듈 로더에서 현재 로딩을 수행하고 있는 모듈을 제외하고 아직 로딩을 수행하지 못한 채로 모듈 로더의 큐에 적재되어 있는 모듈의 개수를 나타낼 수 있다.
디스패처는 다음 두 개의 조건을 모두 만족하도록 모듈을 모듈 로더에게 분배할 수 있다. 두 개의 조건은 1)아이들 상태의 모듈 로더가 최대한 없도록 모듈을 분배할 것, 2) 우선 순위가 높은 모듈 로더로부터 분배할 것, 일 수 있다. 이때 조건 1)을 조건 2)보다 우선적으로 만족 시켜야 할 수 있다. 예를 들어 전체 모듈 로더가 두 개 있고, 그 중 한 개의 모듈 로더가 로딩 수행 중이고, 로딩을 수행 중인 모듈 로더가 다른 모듈 로더 보다 우선 순위가 더 높은 경우, 디스패처에 의해 신규로 전달되는 모듈은 로딩을 수행 중인 모듈 로더가 아닌 아이들 상태의 다른 모듈 로더에 전달될 수 있다. 만약 두 개의 모듈 로더가 모두 로딩 수행 중일 경우 디스패처에 의해 신규로 전달되는 모듈은 두 개의 모듈 로더들 중 우선 순위가 더 높은 모듈 로더 순으로 전달 될 수 있다.
코어 정보 테이블이 상기 [표 6]과 같을 때, 디스패처가 1개의 분배 가능한 하나의 모듈을 식별하여 디스패처의 큐에 적재한 상태인 경우, 디스패처가 선택할 수 있는 모듈 로더는 아이들 상태인 모듈 로더/0과 모듈 로더/2일 수 있다. 이때, 모듈 로더/2의 우선 순위가 모듈 로더/0보다 높으므로 디스패처는 디스패처의 큐에 적재되어 있는 모듈을 모듈 로더/0에게 분배할 수 있다.
이하, 도 2, 도 6, 및 도 7을 참고하여, 일 실시 예에 따른 전자 장치의 동작에 대하여 설명한다.
도 6은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도(600)이다. 도 7은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 순서도(700)이다. 이하, 전자 장치의 동작은 전자 장치의 프로세서에 의해 수행될 수 있다.
도 2 및 도 6을 참조하면, 디스패처(240)는 동작 601에서, 전자 장치의 운영 체제(예: 도 1의 운영 체제(142))의 부팅(booting)을 위한 모든 모듈의 로딩이 완료되었는지 판단할 수 있다. 전자 장치의 메모리에 저장된 운영 체제는 안드로이드 운영체제일 수 있으며, 안드로이드 운영 체제는 커널(kernel) 부팅 단계에서 모듈(module) 형태로 빌드된 디바이스 드라이버(device driver)를 로딩(loading)할 수 있다.
디스패처(240)는 동작 601에서 모든 모듈의 로딩이 완료되었다고 판단되는 경우, 동작 615에서 모듈 로더들(210, 220, 230)의 큐(211, 221, 231)에 종료 시그널을 인큐할 수 있다.
디스패처(240)는 동작 601에서 모든 모듈의 로딩이 완료되었다고 판단되지 않는 경우, 동작 603에서, 의존성(dependency) 항목이 모두 해소(clear)된 모듈을 식별하여 디스패처(240)의 큐(241)에 인큐(enqueue)할 수 있다. 디스패처(240)는 의존성이 원래 없거나 다른 모듈이 실행 완료됨으로써 의존성이 모두 해소(clear)된 모듈들을 로딩 실행이 준비된 모듈로 판단할 수 있다. 디스패처(240)는 로딩 실행이 준비된 모듈을 모두 식별하여 디스패처(240)의 큐(241)에 인큐할 수 있다.
동작 605에서, 디스패처(240)는 디스패처(240)의 큐(241)가 비어있는 상태인지 여부를 판단할 수 있다. 동작 603에서 로딩 실행이 준비된 모듈을 디스패처(240)의 큐(241)에 인큐하였다면, 디스패처(240)의 큐(241)는 비어있지 않은 상태일 수 있다.
동작 607에서, 디스패처(240)는 동작 605에서 디스패처(240)의 큐(241)가 비어있지 않다고 판단함에 따라, 디스패처(240)의 큐(241)에 적재되어 있는 모든 모듈을 모듈 로더에 분배할 수 있다.
동작 607에서 디스패처(240)가 디스패처(240)의 큐(241)에 적재되어 있는 모든 모듈을 모듈 로더에 분배할 때, 다음과 같은 조건에 따라 분배할 수 있다.
아이들(idle) 상태인 모듈 로더가 적어도 하나 존재하는 경우, 디스패처(240)는 상기 적어도 하나의 아이들 상태인 모듈 로더 중 우선 순위가 높은 순서대로 모듈을 1개씩 분배할 수 있다. 여기서 모듈 로더의 우선 순위는 앞서 [표 6]을 참조하여 설명한 실시 예의 우선 순위와 동일하게 설명될 수 있다. 만약 상기 적어도 하나의 아이들 상태인 모듈 로더의 우선 순위가 모두 동일한 경우 디스패처(240)는 랜덤한 순서로 모듈을 1개씩 분배할 수 있다. 모듈의 분배가 완료되지 않은 상태에서 이미 아이들 상태인 모듈 로더가 남아있지 않게 되거나, 모듈의 분배시부터 아이들 상태인 모듈 로더가 존재하지 않는 경우, 디스패처(240)는 전체 모듈 로더 중 우선 순위가 가장 높은 모듈 로더 순으로 라운드 로빈(Round-robin) 방식으로 모듈을 분배할 수 있다.
디스패처(240)는 아이들 상태인 모듈 로더가 존재하지 않는 경우에도 상기 방식으로 디스패처(240)의 큐(241)에 적재되어 있는 모든 모듈의 분배를 완료할 수 있다.
디스패처(240)은 동작 607을 수행한 후에 다시 동작 605로 돌아갈 수 있다.
동작 605에서 디스패처(240)가 디스패처(240)의 큐가 비어있다고 판단한 경우, 동작 609에서 디스패처(240)는 모듈 로더(210, 220, 230)의 로딩 완료 이벤트를 대기할 수 있다. 디스패처(240)가 로딩 완료 이벤트를 대기하는 중에는 슬립(sleep) 상태일 수 있으며, 다른 모듈 로더의 실행에 거의 영향을 주지 않을 수 있다.
동작 611에서 디스패처(240)는 적어도 하나의 모듈 로더로부터 모듈 로딩 완료 이벤트를 수신할 수 있다.
동작 613에서 디스패처(240)는 메모리에 저장된 모듈 정보 테이블을 업데이트할 수 있다. 디스패처(240)는 모듈 정보 테이블에서, 완료된 모듈의 상태를 로딩 완료 상태로 변경하고, 로딩 완료된 모듈에 대하여 의존성을 가지고 있는 모듈의 의존성 리스트에서 로딩 완료된 모듈에 대한 의존성을 해소(clear)된 상태로 변경함으로써 모듈 정보 테이블을 업데이트할 수 있다. 일 실시 예에 따라 전자 장치의 메모리는 모듈 정보 테이블을 저장할 수 있으며, 모듈 정보 테이블의 형태는 다양할 수 있으며 적어도 모듈의 로딩 상태와 의존성에 대한 정보를 포함할 수 있다.
동작 613를 완료한 후, 디스패처(240)는 다시 동작 601로 돌아갈 수 있다. 동작 601에서 디스패처(240)는 모든 모듈의 로딩이 완료되었는지 여부를 판단하여, 모든 모듈의 로딩이 완료되었다고 판단되는 경우, 동작 615에서 모듈 로더들(210, 220, 230)의 큐(211, 221, 231)에 종료 시그널을 인큐할 수 있다.
이하, 도 7의 순서도(700)을 참조하여 모듈 로더(210, 220, 230)의 동작에 대하여 설명한다. 도 7의 순서도(700)는 도 2의 복수의 모듈 로더(210, 220, 230) 중 어느 하나의 모듈 로더의 동작을 나타낸 순서도(700)일 수 있다. 이하, 설명의 편의를 위해 도 7의 순서도(700)가 제1 모듈 로더(예: 도 2의 모듈 로더/0(210))의 동작임을 가정하여 설명한다.
도 2 및 도 7을 참조하면, 동작 701에서, 제1 모듈 로더는 디스패처(240)로부터 모듈이 전달되어 큐에 인큐되기를 대기할 수 있다. 이때, 제1 모듈 로더는 아이들(idle) 상태일 수 있다.
동작 703에서, 제1 모듈 로더는 모듈 로더의 큐에 인큐가 발생함에 따라, 로딩 종료 시그널이 인큐되었는지 판단할 수 있다. 로딩 종료 시그널이란 모든 모듈이 로딩 완료되었을 때 디스 패처(240)가 모든 모듈 로더들에게 전달하는 시그널일 수 있다.
제1 모듈 로더는 동작 703에서 로딩 종료 시그널이 인큐되었음을 식별함에 따라 프로세스를 종료할 수 있다.
제1 모듈 로더는 동작 703에서 로딩 종료 시그널이 인큐된 것이 아님을 식별함에 따라, 동작 705에서, 제1 모듈 로더의 큐가 비어있는지 여부를 판단할 수 있다.
제1 모듈 로더는 동작 705에서 큐이 비어있지 않고 모듈이 적재되어 있음을 식별함에 따라, 동작 707에서 모듈의 로딩을 수행할 수 있다.
동작 709에서, 제1 모듈 로더는 모듈의 로딩을 완료한 후, 디스패처(240)에게 로딩 완료 이벤트를 전달할 수 있다. 로딩 완료 이벤트를 전달한 제1 모듈 로더는 다시 동작 705로 돌아가 큐가 비어있는지 여부를 판단할 수 있다.
제1 모듈 로더는 동작 705에서 큐가 비어있음을 식별함에 따라, 동작 711에서 제1 모듈 로더는 제2 활동 상태인 다른 모듈 로더(예: 도 2의 모듈 로더/1(220) 및/또는 모듈 로더/N(230))가 있는지 판단할 수 있다. 일 실시 예에 따라 모듈 로더의 상태는 다음 [표 7]과 같이 구분할 수 있다. 일 실시 예에 따라 제1 모듈 로더는, 모듈 로더의 큐에 적재되어 로딩 대기 중인 모듈도 있고 로딩 실행 중인 모듈도 있는 제2 모듈 로더를 제2 활동 상태인 모듈 로더라고 식별할 수 있다. 일 실시 예에 따라 동작 711을 수행하는 제1 모듈 로더는 모듈 로더의 큐에도 모듈이 적재되어 있지 않고, 로딩 수행 중인 모듈도 없는 제1 휴식 상태일 수 있다.
상태 로딩 중인 모듈 적재 상태인 모듈 비고
제1 휴식 상태 X X 아이들(idle)한 상태
제2 휴식 상태 X O 모듈 로더의 큐에 모듈이 적재되었으나 아직 모듈의 로딩 실행 전인 상태. 제1 활동 상태 또는 제2 활동 상태가 되기 전 상태
제1 활동 상태 O X 모듈 로더의 큐에 적재된 모듈은 없이 로딩 실행 중인 모듈만 있는 상태
제2 활동 상태 O O 모듈 로더의 큐에 적재되어 로딩 대기 중인 모듈로 있고 로딩 실행 중인 모듈도 있는 상태
제1 모듈 로더는 제2 활동 상태인 제2 모듈 로더가 존재 함을 식별함에 따라, 동작 713에서, 제1 모듈 로더는 제2 모듈 로더의 큐에 적재되어 있는 모듈을 자신의 큐로 가져올(pulling) 수 있다. 실시 예들에 따라 제1 모듈 로더는 제2 모듈 로더의 큐에 적재되어 있는 모든 모듈을 자신의 큐로 가져올 수도 있고, 하나의 모듈만 자신의 큐로 가져올 수도 있다.
일 실시 예에 따라 제2 활동 상태인 모듈 로더가 둘 이상 존재하는 경우, 제1 모듈 로더는 제2 활동 상태인 복수의 모듈 로더들 중 우선 순위가 가장 낮은 모듈 로더의 모듈을 가져올 수 있다.
동작 711에서 제1 모듈 로더가 제2 활동 상태인 다른 모듈 로더가 없다고 판단함에 따라, 동작 715에서 제1 활동 상태인 모듈 로더가 있는지 판단할 수 있다. 일 실시 예에 따라 제1 모듈 로더는 모듈 로더의 큐에 적재된 모듈은 없이 로딩을 실행 중이 모듈만 있는 모듈 로더를 제1 활동 상태의 모듈 로더로 식별할 수 있다.
동작 715에서 제1 활동 상태인 모듈 로더가 없다고 판단함에 따라, 제1 모듈 로더는 동작 701로 돌아가 디스패처로부터 모듈이 전달되어 큐에 인큐되기를 대기할 수 있다.
동작 715에서 제1 모듈 로더가 제1 활동 상태인 모듈 로더를 적어도 하나 식별함에 따라, 동작 717에서 제1 모듈 로더는 제1 활동 상태인 적어도 하나의 모듈 로더 중 가장 우선 순위가 낮은 제3 모듈 로더를 식별할 수 있다.
동작 719에서, 제1 모듈 로더는 제3 모듈 로더의 우선 순위가 자기의 우선 순위 보다 낮은지 판단할 수 있다.
동작 719에서 제1 모듈 로더가 제3 모듈 로더의 우선 순위가 자기의 우선 순위보다 높거나 같다고 판단함에 따라, 제1 모듈 로더는 동작 701로 돌아가 디스패처로부터 모듈이 전달되어 큐에 인큐되기를 대기할 수 있다.
동작 719에서 제1 모듈 로더가 제3 모듈 로더의 우선 순위가 자기의 우선 순위보다 낮다고 판단함에 따라, 동작 721에서 제1 모듈 로더는 제3 모듈 로더가 로딩 중인 모듈을 가져와서 자신이 로딩을 수행할 수 있다.
앞서 도 6 및 도 7을 참조하여 설명한 실시 예는 모듈 로더의 판단으로 모듈 로더가 직접 다른 모듈 로더의 모듈을 가져오는 점(재분배하는 점)에서 도 3 및 도 4를 참조하여 설명한 실시 예와 차이가 있다. 재분배를 시도하는 모듈 로더는 제1 휴식 상태일 수 있으며, 제1 휴식 상태의 모듈 로더는 모듈 로더의 큐에 모듈이 적재되었으나 아직 모듈의 로딩 실행 전인 상태인 제2 휴식 상태의 모듈 로더를 대상으로는 아무런 동작을 수행하지 않을 수 있다.
본 개시의 일 실시 예에 따른 전자 장치는, 모듈 로더들의 성능(우선 순위) 및 현재 상태(휴식 상태/활동 상태)를 고려하여 모듈을 분배 및 재분배함으로써, 의존성을 가진 복수의 모듈들을 의존성에 문제가 없으면서도 병렬적으로 로딩을 수행하여 로딩 시간을 단축하고 하드웨어 자원을 최적으로 활용하여 모듈 로딩의 성능을 극대화할 수 있다.
이하, 도 8을 참고하여, 일 실시 예에 따른 전자 장치의 동작에 대하여 예를 들어 자세히 설명한다.
도 8은 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 도면이다. 도 8은 전자 장치의 부팅(booting) 프로세스에서 모듈 로더의 동작을 타임 라인에 따라 나타낸 도면일 수 있다. 도 8의 제1 표(810) 및 제2 표(820)의 가로축은 시간의 흐름을 의미할 수 있다.
도 8을 참조하여 설명할 실시 예에서는, 2개 이상의 복수의 코어(core)들을 가진 프로세서(예: 도 1의 프로세서(120))를 포함하는 전자 장치(예: 도 1의 전자 장치(101))에 있어서, 선택된 2개의 코어들 각각에 모듈 로더/0과 모듈 로더/1이 할당된 경우를 가정하여 설명한다.
전자 장치의 메모리는 하기 [표 8]와 같은 모듈 정보 테이블을 저장할 수 있다. 실시 예들에 따라 하기 [표 8]에서 워크로드(workload)는 전자 장치가 미리 측정하여 저장하고 있는 정보일 수도 있고, 이전 모듈 로딩을 수행하면서 측정하여 저장하고 있는 정보일 수도 있다.
Module name State Workload Dependency list
a N 3
b N 3 a
c N 7
d N 5 a
f N 4 a c
도 8을 참조하면, t=0에서 디스패처는 의존성이 해소된 모듈 a 및 모듈 c를 디스패처의 큐에 적재할 수 있다. 디스패처는 모듈 로더들의 워크로드의 불균형이 가장 적은 조합을 판단하여 디스패처의 큐에 적재된 모듈들을 모듈 로더들에게 분배할 수 있다. 일 실시 예에 따라 워크로드 불균형을 판단할 때, 모듈 로더들의 우선 순위가 다른 경우 우선 순위도 고려하여 판단할 수 있다. 이하의 설명에서는 모듈 로더들의 우선 순위가 동일한 경우를 가정하여 설명한다.
모듈 로더/0 및 모듈 로더/1의 누적 워크로드는 모두 0이므로, 디스패처는 임의의 순서대로 모듈 로더/0에게 모듈 a를, 모듈 로더/1에에 모듈 c를 분배할 수 있다. 모듈 a를 분배받은 모듈 로더/0의 누적 워크로드는 3이되고, 모듈 c를 분배받은 모듈 로더/1의 누적 워크로드는 7이될 수 있다.
모듈 a의 워크로드만큼 경과한 t=3시점에서, 모듈 로더/0이 모듈 a의 로딩을 완료할 수 있다. 디스패처는 모듈 정보 테이블에서 모듈 a의 상태를 T로 갱신하고, 의존성 리스트에서 모듈 a에 대한 의존성이 해소(clear)되었음을 표시할 수 있다. 이하, 앞서 설명한 실시 예와 동일한 구성에 대한 설명은 생략한다.
디스패처는 모듈 a에 대한 의존성이 모두 해소된 모듈 b 및 모듈 d를 디스패처의 큐에 적재할 수 있다. 모듈 b의 워크로드는 3이고, 모듈 d의 워크로드는 5일 수 있다.
디스패처는 모듈 로더들의 워크로드의 불균형이 가장 적은 조합을 판단할 수 있다. 모듈 로더/0의 누적 워크로드는 3이고 모듈 로더/1의 누적 워크로드는 5이므로, 디스패처는 워크로드가 3인 모듈 b를 모듈 로더/1에 분배하고, 워크로드가 5인 모듈 d를 모듈 로더/0에 분배할 수 있다.
모듈 d를 분배받은 모듈 로더/0의 누적 워크로드는 8이되고, 모듈 b를 분배받은 모듈 로더/1의 누적 워크로드는 10이될 수 있다.
t=0으로부터 모듈 c의 워크로드만큼 경과한 t=7시점에서, 모듈 로더/1의 모듈 c에 대한 로딩이 완료될 수 있다. 디스패처는 모듈 정보 테이블에서 모듈 c의 상태를 T로 갱신하고, 의존성 리스트에서 모듈 c에 대한 의존성이 해소되었음을 표시할 수 있다.
디스패처는 모듈 c에 대한 의존성이 모두 해소된 모듈 f를 디스패처의 큐에 적재할 수 있다. 모듈 f의 워크로드는 4일 수 있다.
디스패처는 모듈 로더들의 워크로드의 불균형이 가장 적은 조합을 판단할 수 있다. 모듈 로더/0의 누적 워크로드는 8이고 모듈 로더/1의 누적 워크로드는 10이므로, 디스패처는 모듈 f를 누적 워크로드가 더 작은 모듈 로더/0에 분배할 수 있다.
모듈 f를 분배받은 모듈 로더/0의 누적 워크로드는 12가 되고, 모듈 로더/1의 누적 워크로드는 그대로 10일 수 있다.
t=10 시점에 모듈 b의 로딩이 종료되고, t=12시점에 모듈 f의 로딩이 종료될 수 있다. 디스패처는 모든 모듈의 로딩이 완료된 상태가 되었음을 확인함에 따라 전체 모듈 로더들에게 로딩 완료 이벤트를 전달하고 디스패처의 동작을 종료할 수 있다. 모듈 로더/0 및 모듈 로더/1도 로딩 완료 이벤트를 수신함에 따라 동작을 종료할 수 있고, 부팅 프로세스는 종료될 수 있다.
앞서 도 8을 참조하여 설명한 실시 예는, 의존성이 해소되어 디스패처의 큐에 적재된 모듈을 디스패처가 분배함에 있어, 모듈의 워크로드를 고려하여 모듈 로더들 간의 누적 워크로드(워크로드의 총 합)의 불균형을 최소화하는 조합으로 모듈을 분배하는 점에서 도 3 및 도 4를 참조하여 설명한 실시 예와 차이가 있다.
본 개시의 일 실시 예에 따른 전자 장치는, 모듈 로더들의 누적 워크로드의 불균형을 최소화하는 조합으로 모듈을 분배함으로써, 의존성을 가진 복수의 모듈들을 의존성에 문제가 없으면서도 병렬적으로 로딩을 수행하여 로딩 시간을 단축하고 하드웨어 자원을 최적으로 활용하여 모듈 로딩의 성능을 극대화할 수 있다.
본 문서에 개시되는 일 실시 예에 따른 전자 장치는, 복수의 코어들을 포함하는 프로세서, 및 상기 프로세서와 전기적으로 연결되고, 인스트럭션들을 저장하는 메모리를 포함하고, 상기 인스트럭션들은, 실행 시에, 디스패처(dispatcher)가 상기 전자 장치의 운영 체제의 부팅(booting)을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고, 상기 복수의 모듈들 중에서 로딩이 미완료된 모듈이 존재함을 판단함에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 모듈 정보 테이블을 기반으로 의존성이 해소(clear)된 적어도 하나의 모듈을 식별하며, 상기 적어도 하나의 모듈이 식별됨에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더(module loder)의 상태(state) 정보와 우선 순위(priority) 정보 중 적어도 하나를 식별하고, 상기 식별한 정보를 기반으로, 상기 디스패처가 상기 코어들이 각각 할당된 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장한다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 디스패처가, 상기 적어도 하나의 모듈 로더로부터 로딩 완료 이벤트를 수신함에 따라, 상기 모듈 정보 테이블을 업데이트 하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 모듈 로더들 중 아이들(idle) 상태인 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 모듈 로더들 중 상기 아이들 상태인 복수의 모듈 로더들이 식별되는 경우, 상기 복수의 모듈 로더들 중 상기 우선 순위가 높은 순서대로 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 디스패처가, 상기 상태 정보를 기반으로 상기 모듈 로더들이 아이들 상태인지 여부를 우선적으로 고려하고, 다음으로 상기 우선 순위 정보를 기반으로 우선 순위가 높은지 여부를 고려하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 아이들 상태인 제1 모듈 로더가, 모듈 로더의 큐에 적재되어 로딩 대기 중인 모듈도 있고 로딩 실행 중인 모듈도 있는 제2 활동 상태인 제2 모듈 로더를 식별하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 제2 모듈 로더가 식별됨에 따라, 상기 제1 모듈 로더가 상기 제2 모듈 로더의 큐에 적재되어 있는 모듈을 상기 제1 모듈 로더의 큐로 가져오도록(pulling), 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 제2 모듈 로더가 식별되지 않음에 따라, 상기 제1 모듈 로더가 모듈 로더의 큐에 적재된 모듈은 없이 로딩을 실행 중이 모듈만 있는 제1 활동 상태인 제3 모듈 로더를 식별하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 제3 모듈 로더가 식별됨에 따라, 상기 제1 모듈 로더가, 상기 제3 모듈 로더의 우선 순위가 상기 제1 모듈 로더의 우선 순위보다 낮은지 여부를 판단하며, 상기 제3 모듈 로더의 우선 순위가 상기 제1 모듈 로더의 우선 순위보다 낮음을 식별함에 따라, 상기 제1 모듈 로더가 상기 제3 모듈 로더가 로딩 중인 모듈을 상기 제1 모듈 로더의 큐로 가져오도록(pulling), 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시에 따르면, 상기 메모리는, 실행 시에, 상기 디스패처가, 상기 모듈 로더들의 누적 워크로드(workload)를 고려하여, 각 모듈 로더의 누적 워크로드 간의 차이가 최소화되도록 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시되는 일 실시 예에 따른 복수의 코어들을 포함하는 프로세서를 포함하는 전자 장치의 동작 방법은, 디스패처(dispatcher)가 상기 전자 장치의 운영 체제(operating system)의 부팅(booting)을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고, 상기 복수의 모듈들 중에서 로딩이 미완료된 모듈이 존재함을 판단함에 따라, 상기 디스패처가, 상기 전자 장치의 메모리에 저장되어 있는 모듈 정보 테이블을 기반으로 의존성이 해소(clear)된 적어도 하나의 모듈을 식별하며, 상기 적어도 하나의 모듈이 식별됨에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더(module loder)의 상태(state) 정보와 우선 순위(priority) 정보 중 적어도 하나를 식별하고, 상기 식별한 정보를 기반으로, 상기 디스패처가 상기 코어들이 각각 할당된 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록; 상기 프로세서를 제어한다.
본 문서에 개시에 따르면, 상기 디스패처가, 상기 적어도 하나의 모듈 로더로부터 로딩 완료 이벤트를 수신함에 따라, 상기 모듈 정보 테이블을 업데이트 하도록, 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 모듈 로더들 중 아이들(idle) 상태인 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 모듈 로더들 중 상기 아이들 상태인 복수의 모듈 로더들이 식별되는 경우, 상기 복수의 모듈 로더들 중 상기 우선 순위가 높은 순서대로 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 디스패처가, 상기 상태 정보를 기반으로 상기 모듈 로더들이 아이들 상태인지 여부를 우선적으로 고려하고, 다음으로 상기 우선 순위 정보를 기반으로 우선 순위가 높은지 여부를 고려하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 아이들 상태인 제1 모듈 로더가, 모듈 로더의 큐에 적재되어 로딩 대기 중인 모듈도 있고 로딩 실행 중인 모듈도 있는 제2 활동 상태인 제2 모듈 로더를 식별하도록, 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 제2 모듈 로더가 식별됨에 따라, 상기 제1 모듈 로더가 상기 제2 모듈 로더의 큐에 적재되어 있는 모듈을 상기 제1 모듈 로더의 큐로 가져오도록(pulling), 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 제2 모듈 로더가 식별되지 않음에 따라, 상기 제1 모듈 로더가 모듈 로더의 큐에 적재된 모듈은 없이 로딩을 실행 중이 모듈만 있는 제1 활동 상태인 제3 모듈 로더를 식별하도록, 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 제3 모듈 로더가 식별됨에 따라, 상기 제1 모듈 로더가, 상기 제3 모듈 로더의 우선 순위가 상기 제1 모듈 로더의 우선 순위보다 낮은지 여부를 판단하며, 상기 제3 모듈 로더의 우선 순위가 상기 제1 모듈 로더의 우선 순위보다 낮음을 식별함에 따라, 상기 제1 모듈 로더가 상기 제3 모듈 로더가 로딩 중인 모듈을 상기 제1 모듈 로더의 큐로 가져오도록(pulling), 상기 프로세서를 제어할 수 있다.
본 문서에 개시에 따르면, 상기 디스패처가, 상기 모듈 로더들의 누적 워크로드(workload)를 고려하여, 각 모듈 로더의 누적 워크로드 간의 차이가 최소화되도록 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서를 제어할 수 있다.

Claims (15)

  1. 전자 장치에 있어서,
    복수의 코어들을 포함하는 프로세서; 및
    상기 프로세서와 전기적으로 연결되고, 인스트럭션들을 저장하는 메모리;를 포함하고,
    상기 인스트럭션들은, 실행 시에:
    디스패처(dispatcher)가 상기 전자 장치의 운영 체제(operating system)의 부팅(booting)을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고,
    상기 디스패처가, 상기 메모리에 저장되어 있는 모듈 정보 테이블을 기반으로 상기 복수의 모듈들 중에서 로딩이 완료되지 않고 의존성이 해소(clear)된 적어도 하나의 모듈을 식별하며,
    상기 적어도 하나의 모듈이 식별됨에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더(module loder)의 상태(state) 정보와 우선 순위(priority) 정보 중 적어도 하나를 식별하고,
    상기 식별된 상태 정보와 우선 순위 정보 중 적어도 하나에 기반으로, 상기 디스패처가 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈 로더에 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는 인스트럭션들을 저장하는, 전자 장치.
  2. 청구항 1에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 디스패처가, 상기 적어도 하나의 모듈 로더로부터 로딩 완료 이벤트를 수신함에 따라, 상기 모듈 정보 테이블을 업데이트 하도록, 상기 프로세서가 제어하도록 하는, 전자 장치.
  3. 청구항 1에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 적어도 하나의 모듈 로더가 아이들(idle) 상태인지 여부에 기초하여 적어도 하나의 모듈 로더를 선택하도록 하는, 전자 장치.
  4. 청구항 3에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 2 이상의 모듈 로더들 중 상기 아이들 상태인 복수의 모듈 로더들이 식별되는 경우, 상기 복수의 모듈 로더들 중 상기 우선 순위가 높은 순서대로 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는, 전자 장치.
  5. 청구항 1에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 디스패처가, 상기 상태 정보를 기반으로 상기 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더가 아이들 상태인지 여부를 우선적으로 고려하고, 다음으로 상기 우선 순위 정보를 기반으로 우선 순위가 높은지 여부를 고려하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는, 전자 장치.
  6. 청구항 5에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 아이들 상태인 제1 모듈 로더가, 모듈 로더의 큐에 적재되어 로딩 대기 중인 모듈도 있고 로딩 실행 중인 모듈도 있는 제2 활동 상태인 제2 모듈 로더를 식별하도록, 상기 프로세서가 제어하도록 하는, 전자 장치.
  7. 청구항 6에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 제2 모듈 로더가 식별됨에 따라, 상기 제1 모듈 로더가 상기 제2 모듈 로더의 큐에 적재되어 있는 모듈을 상기 제1 모듈 로더의 큐로 가져오도록(pulling), 상기 프로세서가 제어하도록 하는, 전자 장치.
  8. 청구항 6에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 제2 모듈 로더가 식별되지 않음에 따라, 상기 제1 모듈 로더가 모듈 로더의 큐에 적재된 모듈은 없이 로딩을 실행 중이 모듈만 있는 제1 활동 상태인 제3 모듈 로더를 식별하도록, 상기 프로세서가 제어하도록 하는, 전자 장치.
  9. 청구항 8에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 제3 모듈 로더가 식별됨에 따라, 상기 제1 모듈 로더가, 상기 제3 모듈 로더의 우선 순위가 상기 제1 모듈 로더의 우선 순위보다 낮은지 여부를 판단하며,
    상기 제3 모듈 로더의 우선 순위가 상기 제1 모듈 로더의 우선 순위보다 낮음을 식별함에 따라, 상기 제1 모듈 로더가 상기 제3 모듈 로더가 로딩 중인 모듈을 상기 제1 모듈 로더의 큐로 가져오도록(pulling), 상기 프로세서가 제어하도록 하는, 전자 장치.
  10. 청구항 1에 있어서, 상기 인스트럭션들은, 실행 시에,
    상기 디스패처가, 상기 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더의 누적 워크로드(workload)를 고려하여, 각 모듈 로더의 누적 워크로드 간의 차이가 최소화되도록 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서가 제어하도록 하는, 전자 장치.
  11. 복수의 코어들을 포함하는 프로세서를 포함하는 전자 장치의 동작 방법에 있어서,
    디스패처(dispatcher)가 상기 전자 장치의 운영 체제(operating system)의 부팅(booting)을 위한 복수의 모듈들의 로딩이 완료되었는지 여부를 판단하고;
    상기 디스패처가, 상기 메모리에 저장되어 있는 모듈 정보 테이블을 기반으로 상기 복수의 모듈들 중에서 로딩이 완료되지 않고 의존성이 해소(clear)된 적어도 하나의 모듈을 식별하며;
    상기 적어도 하나의 모듈이 식별됨에 따라, 상기 디스패처가, 상기 메모리에 저장되어 있는 코어 정보 테이블을 기반으로 상기 복수의 코어들 중에서 2이상의 코어들에 각각 할당된 모듈 로더(module loder)의 상태(state) 정보와 우선 순위(priority) 정보 중 적어도 하나를 식별하고;
    상기 식별된 상태 정보와 우선 순위 정보 중 적어도 하나에 기반으로, 상기 디스패처가 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더를 선택하여 상기 적어도 하나의 모듈 로더에 상기 적어도 하나의 모듈을 분배하도록; 상기 프로세서를 제어하는, 전자 장치의 동작 방법.
  12. 청구항 11에 있어서,
    상기 디스패처가, 상기 적어도 하나의 모듈 로더로부터 로딩 완료 이벤트를 수신함에 따라, 상기 모듈 정보 테이블을 업데이트 하도록, 상기 프로세서를 제어하는, 전자 장치의 동작 방법.
  13. 청구항 11에 있어서,
    상기 적어도 하나의 모듈 로더가 아이들(idle) 상태인지 여부에 기초하여 적어도 하나의 모듈 로더를 선택하도록, 상기 프로세서를 제어하는, 전자 장치의 동작 방법.
  14. 청구항 13에 있어서,
    상기 2 이상의 모듈 로더들 중 상기 아이들 상태인 복수의 모듈 로더들이 식별되는 경우, 상기 복수의 모듈 로더들 중 상기 우선 순위가 높은 순서대로 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서를 제어하는, 전자 장치의 동작 방법.
  15. 청구항 11에 있어서,
    상기 디스패처가, 상기 상태 정보를 기반으로 상기 2 이상의 모듈 로더들 중 적어도 하나의 모듈 로더가 아이들 상태인지 여부를 우선적으로 고려하고, 다음으로 상기 우선 순위 정보를 기반으로 우선 순위가 높은지 여부를 고려하여 상기 적어도 하나의 모듈을 분배하도록, 상기 프로세서를 제어하는, 전자 장치의 동작 방법.
PCT/KR2022/018568 2021-12-02 2022-11-23 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법 Ceased WO2023101295A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP22901653.0A EP4400967A4 (en) 2021-12-02 2022-11-23 ELECTRONIC DEVICE FOR BOOTING AN OPERATING SYSTEM USING MULTIPLE CORES AND METHOD OF OPERATING THE SAME
US17/994,958 US12056498B2 (en) 2021-12-02 2022-11-28 Electronic device for booting operating system using plurality of cores and operation method thereof
US18/748,989 US20240338223A1 (en) 2021-12-02 2024-06-20 Electronic device for booting operating system using plurality of cores and operation method thereof

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20210171273 2021-12-02
KR10-2021-0171273 2021-12-02
KR1020210176692A KR20230083186A (ko) 2021-12-02 2021-12-10 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법
KR10-2021-0176692 2021-12-10

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/994,958 Continuation US12056498B2 (en) 2021-12-02 2022-11-28 Electronic device for booting operating system using plurality of cores and operation method thereof

Publications (1)

Publication Number Publication Date
WO2023101295A1 true WO2023101295A1 (ko) 2023-06-08

Family

ID=86612692

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/018568 Ceased WO2023101295A1 (ko) 2021-12-02 2022-11-23 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법

Country Status (1)

Country Link
WO (1) WO2023101295A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268108A1 (en) * 2003-06-30 2004-12-30 Lechong Chen Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US20090271596A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Executing An Application On A Parallel Computer
KR101472644B1 (ko) * 2009-12-29 2014-12-15 지티이 코포레이션 멀티프로세서 완전 상호접속 방법 및 시스템
US20150269015A1 (en) * 2014-03-19 2015-09-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing computer hardware usage in a computing system that includes a plurality of populated central processing unit ('cpu') sockets
KR20180073520A (ko) * 2015-10-23 2018-07-02 오라클 인터내셔날 코포레이션 병렬로 애플리케이션 서버를 부팅하기 위한 시스템 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268108A1 (en) * 2003-06-30 2004-12-30 Lechong Chen Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US20090271596A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Executing An Application On A Parallel Computer
KR101472644B1 (ko) * 2009-12-29 2014-12-15 지티이 코포레이션 멀티프로세서 완전 상호접속 방법 및 시스템
US20150269015A1 (en) * 2014-03-19 2015-09-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing computer hardware usage in a computing system that includes a plurality of populated central processing unit ('cpu') sockets
KR20180073520A (ko) * 2015-10-23 2018-07-02 오라클 인터내셔날 코포레이션 병렬로 애플리케이션 서버를 부팅하기 위한 시스템 및 방법

Similar Documents

Publication Publication Date Title
WO2021158037A1 (en) Electronic device for task scheduling when application is run, method of operating the same, and storage medium
WO2020218743A1 (en) Method for controlling execution of application, electronic device and storage medium for the same
WO2022211267A1 (ko) 데이터 처리 시스템 및 데이터 처리 장치의 동작 방법
WO2023153752A1 (ko) 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법
WO2022225204A1 (ko) 전자 기기 제어를 위한 전자 장치 및 방법
WO2023101295A1 (ko) 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법
WO2024191052A1 (ko) 절전 기능에 관한 사용자 인터페이스를 제공하기 위한 전자 장치 및 그 동작 방법
WO2024053910A1 (ko) 기계학습 모델에 적합한 가속기를 선택하는 장치 및 방법
WO2022177162A1 (ko) 어플리케이션의 모델 파일을 초기화하는 프로세서 및 이를 포함하는 전자 장치
WO2023128219A1 (ko) 외부 전자 장치들과의 연결을 제어하기 위한 전자 장치 및 방법
WO2021085996A1 (ko) 신경망의 커널들을 정렬하는 전자 장치 및 이의 동작 방법
WO2022203374A1 (ko) 음성 어시스턴트 서비스 제공 방법 및 이를 지원하는 전자 장치
WO2022203184A1 (ko) 기능 공유를 위한 전자 장치 및 그의 동작 방법
WO2022119110A1 (ko) 하이퍼바이저를 이용한 가상 머신 모니터링 방법 및 이를 지원하는 전자 장치
WO2022114562A1 (ko) 전자 장치 및 그의 동작 방법
WO2021256717A1 (ko) 데이터 스와핑 방법 및 이를 지원하는 전자 장치
WO2026019261A1 (ko) 복수의 클러스터들을 포함하는 프로세서를 제어하는 전자 장치와 이의 동작 방법
WO2026014984A1 (ko) 프로세스를 실행하는 방법, 이를 지원하는 전자 장치, 및 저장 매체
WO2024177484A1 (ko) 뉴럴 네트워크의 기능을 실행하는 코어를 선택하기 위한 전자 장치 및 그 방법
WO2026059416A1 (ko) 전자 장치에게 리소스를 할당하는 시스템 및 방법
WO2023146104A1 (ko) 무선 충전 가이드 제공 방법 및 이를 수행하는 전자 장치
WO2025009874A1 (ko) 신경망 처리 장치를 포함하는 전자 장치 및 그 동작 방법
WO2023063580A1 (ko) 무선 통신 수행 방법 및 이를 지원하는 전자 장치
WO2025100733A1 (ko) 메모리 리소스를 관리하기 위한 전자 장치, 그 동작 방법 및 저장 매체
WO2023038430A1 (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: 22901653

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2022901653

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2022901653

Country of ref document: EP

Effective date: 20240412

NENP Non-entry into the national phase

Ref country code: DE