Electronic devices, methods, and non-transitory computer-readable recording media for identifying the rendering process

CN122580642APending Publication Date: 2026-08-14SAMSUNG ELECTRONICS CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-02-06
Publication Date
2026-08-14

Smart Images

  • Figure CN122580642A_ABST
    Figure CN122580642A_ABST
Patent Text Reader

Abstract

The electronic device may include: a display; a processor including a first core operating in a first frequency range and a second core operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range; and a memory storing instructions and including one or more storage media. The electronic device can identify a request for a first process in at least one process of an application. The electronic device can, based on the association of the process indicated by the request with a second process for outputting an image to the display, change the core used to process the first process to the first core of the first and second cores. The electronic device can, based on the association of the process with a third process distinct from the second process, maintain the core used to process the first process.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The following description relates to electronic devices, methods, and non-transitory computer-readable storage media for identifying rendering processes. Background Technology

[0002] Recently, the popularity of various types of portable electronic devices, such as smartphones, tablet PCs, wireless headsets, and / or smartwatches, is expanding. These portable electronic devices may include processors (e.g., central processing units (CPUs)). Processors may include multiple cores operating at various frequencies. These multiple cores operating at various frequencies can be categorized into different clusters based on the range of their operating frequencies. Summary of the Invention

[0003] Technical solution An electronic device is disclosed. The electronic device may include: a display; a processor including a first core operating in a first frequency range and a second core operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range; and a memory storing instructions and including one or more storage media. When executed individually or jointly by at least one processor, the instructions may cause the electronic device to recognize a request from a first process among at least one process of an application. When executed individually or jointly by at least one processor, the instructions may cause the electronic device to associate the process indicated by the request with a second process for outputting an image to the display, changing the core used for processing the first process to the first core among the first core and the second core. When executed individually or jointly by at least one processor, the instructions may cause the electronic device to associate the process with a third process different from the second process, maintaining the core used for processing the first process.

[0004] A method is disclosed. This method can operate in an electronic device including a display and a processor, the processor including a first core operating in a first frequency range and a second core operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range. The method may include identifying a request for a first process among at least one process of an application. The method may include changing the core used to process the first process to the first core of the first core and the second core, based on the association of the process indicated by the request with a second process that outputs an image to the display. The method may include maintaining the core used to process the first process based on the association of the process with a third process different from the second process.

[0005] A non-transitory computer-readable storage medium is disclosed. This non-transitory computer-readable storage medium can store one or more programs including instructions. When executed individually or jointly by a processor of an electronic device including a display and a processor, the instructions can cause the electronic device to recognize a request from a first process of at least one process of an application. The processor includes a first core operating in a first frequency range and a second core operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range. When executed individually or jointly by at least one processor, the instructions can cause the electronic device to associate the process indicated by the request with a second process for outputting an image to the display, and change the core used for processing the first process to the first core of the first core and the second core. When executed individually or jointly by at least one processor, the instructions can cause the electronic device to associate the process with a third process different from the second process, and maintain the core used for processing the first process. Attached Figure Description

[0006] Figure 1 It is a block diagram of electronic devices in a network environment.

[0007] Figure 2 It is a block diagram of an electronic device.

[0008] Figure 3 An example of signal flow between components included in a memory is shown.

[0009] Figure 4 This is a flowchart illustrating the operation of an electronic device.

[0010] Figure 5 This is a flowchart illustrating the operation of an electronic device.

[0011] Figure 6 This is a flowchart illustrating the operation of an electronic device.

[0012] Figure 7 This is a flowchart illustrating the operation of an electronic device.

[0013] Figure 8 This is a flowchart illustrating the operation of an electronic device.

[0014] Figure 9 This is a flowchart illustrating the operation of an electronic device.

[0015] Figure 10 This is a flowchart illustrating the operation of an electronic device.

[0016] Figure 11 This is a flowchart illustrating the operation of an electronic device. Detailed Implementation

[0017] Figure 1 This is a block diagram showing an electronic device 101 in a network environment 100.

[0018] Reference Figure 1 Electronic device 101 in network environment 100 can communicate with electronic device 102 via a first network 198 (e.g., a short-range wireless communication network), or with at least one of electronic device 104 or server 108 via a second network 199 (e.g., a long-range wireless communication network). Electronic device 101 can communicate with electronic device 104 via server 108. Electronic device 101 may include processor 120, memory 130, input module 150, sound output module 155, display module 160, audio module 170, 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 (SIM) 196, or antenna module 197. At least one of the above components (e.g., connection terminal 178) may be omitted from electronic device 101, or one or more other components may be added to electronic device 101. Some of the components described above (e.g., sensor module 176, camera module 180, or antenna module 197) can be implemented as a single component (e.g., display module 160).

[0019] Processor 120 may run software (e.g., program 140) to control at least one other component (e.g., hardware or software component) coupled to electronic device 101, and may perform various data processing or calculations. As at least part of the data processing or calculations, processor 120 may store commands or data received from another component (e.g., sensor module 176 or communication module 190) in volatile memory 132, process the commands or data stored in volatile memory 132, and store the result data in non-volatile memory 134. Processor 120 may include a main processor 121 (e.g., central processing unit (CPU) or application processor (AP)) or an auxiliary processor 123 (e.g., graphics processing unit (GPU), neural processing unit (NPU), image signal processor (ISP), sensor central processor, or communication processor (CP)) that is operationally independent of or combined with the main processor 121. For example, when electronic device 101 includes a main processor 121 and an auxiliary processor 123, the auxiliary processor 123 can be adapted to consume less power than the main processor 121, or adapted to be dedicated to a specific function. The auxiliary processor 123 can be implemented separately from the main processor 121, or as part of the main processor 121.

[0020] When the main processor 121 is inactive (e.g., in sleep) state, the auxiliary processor 123 (rather than the main processor 121) can control at least some of the functions or states associated with at least one component of the electronic device 101 (e.g., display module 160, sensor module 176, or communication module 190), or when the main processor 121 is active (e.g., running an application), the auxiliary processor 123 can work with the main processor 121 to control at least some of the functions or states associated with at least one component of the electronic device 101 (e.g., display module 160, sensor module 176, or communication module 190). The auxiliary processor 123 (e.g., an image signal processor or a communication processor) can be implemented as part of another component (e.g., camera module 180 or communication module 190) functionally associated with the auxiliary processor 123. The auxiliary processor 123 (e.g., a neural processing unit) can include hardware architectures dedicated to artificial intelligence model processing. Artificial intelligence models can be generated through machine learning. For example, such learning can be performed via electronic device 101 where the artificial intelligence model is executed or via a separate server (e.g., server 108). The learning algorithm can include, but is not limited to, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning. The artificial intelligence model can include multiple layers of artificial neural networks. The artificial neural networks can be 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), or deep Q-networks, or combinations of two or more thereof, but are not limited thereto. Additionally or optionally, the artificial intelligence model can include software structures in addition to hardware structures.

[0021] Memory 130 may store various data used by at least one component of electronic device 101 (e.g., processor 120 or sensor module 176). The various data may include, for example, software (e.g., program 140) and input or output data for commands associated with it. Memory 130 may include volatile memory 132 or non-volatile memory 134.

[0022] The program 140 can be stored as software in the memory 130, and the program 140 may include, for example, an operating system (OS) 142, middleware 144, or application 146.

[0023] Input module 150 can receive commands or data from outside electronic device 101 (e.g., a user) that will be used by another component of electronic device 101 (e.g., processor 120). Input module 150 may include, for example, a microphone, mouse, keyboard, keys (e.g., buttons), or digital pen (e.g., stylus).

[0024] The sound output module 155 can 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 playing multimedia or playing records. The receiver can be used to receive incoming calls. The receiver can be implemented separately from the speaker or as part of the speaker.

[0025] Display module 160 can visually provide information to the outside of electronic device 101 (e.g., to a user). Display module 160 may include, for example, a display, a holographic device, or a projector, and control circuitry for controlling one of the display, holographic device, and projector. Display module 160 may include a touch sensor adapted to detect touch or a pressure sensor adapted to measure the intensity of the force caused by touch.

[0026] Audio module 170 can convert sound into electrical signals and vice versa. Audio module 170 can obtain sound via input module 150, or output sound via sound output module 155 or headphones of an external electronic device (e.g., electronic device 102) that is directly (e.g., wired) coupled to electronic device 101 or wirelessly coupled to it.

[0027] Sensor module 176 can detect the operating state of electronic device 101 (e.g., power or temperature) or the environmental state outside electronic device 101 (e.g., user state), and then generate an electrical signal or data value corresponding to the detected state. Sensor module 176 may include, for example, a gesture sensor, a gyroscope sensor, an atmospheric pressure sensor, a magnetic sensor, an accelerometer, a grip sensor, a proximity sensor, a color sensor, an infrared (IR) sensor, a biometric sensor, a temperature sensor, a humidity sensor, or an illuminance sensor.

[0028] Interface 177 may support one or more specific protocols used to directly couple (e.g., wired) or wirelessly couple electronic device 101 to external electronic device (e.g., electronic device 102). Interface 177 may include, for example, a High Definition Multimedia Interface (HDMI), a Universal Serial Bus (USB) interface, a Secure Digital Card (SD) interface, or an audio interface.

[0029] Connection end 178 may include a connector through which electronic device 101 can be physically connected to an external electronic device (e.g., electronic device 102). Connection end 178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (e.g., a headphone connector).

[0030] The haptic module 179 can convert electrical signals into mechanical stimuli (e.g., vibration or motion) or electrical stimuli that can be recognized by a user through his touch or kinesthesia. The haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulator.

[0031] Camera module 180 can capture still or moving images. Camera module 180 may include one or more lenses, an image sensor, an image signal processor, or a flash.

[0032] The power management module 188 can manage the power supply to the electronic device 101. The power management module 188 can be implemented as at least part of, for example, a power management integrated circuit (PMIC).

[0033] Battery 189 can power at least one component of electronic device 101. Battery 189 may include, for example, a non-rechargeable primary battery, a rechargeable rechargeable battery, or a fuel cell.

[0034] Communication module 190 can support the establishment of a direct (e.g., wired) or wireless communication channel between electronic device 101 and external electronic devices (e.g., electronic device 102, electronic device 104, or server 108), and perform communication via the established communication channel. Communication module 190 may include one or more communication processors capable of operating independently of processor 120 (e.g., application processor (AP)) and supporting direct (e.g., wired) or wireless communication. Communication module 190 may include wireless communication module 192 (e.g., cellular communication module, short-range wireless communication module, or Global Navigation Satellite System (GNSS) communication module) or wired communication module 194 (e.g., local area network (LAN) communication module or power line communication (PLC) module). A corresponding one of these communication modules can communicate via a first network 198 (e.g., a short-range communication network, such as Bluetooth). TM The communication module 192 can communicate with external electronic devices via a Wi-Fi Direct or Infrared Data Association (IrDA) network or a second network 199 (e.g., a long-range communication network, such as a traditional cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., a LAN or a wide area network (WAN))). These various types of communication modules can be implemented as a single component (e.g., a single chip) or as multiple components that are separate from each other (e.g., multiple chips). The wireless communication module 192 can use user information (e.g., the International Mobile Subscriber Identity (IMSI)) stored in the user identification module 196 to identify and verify the electronic device 101 in the communication network (such as the first network 198 or the second network 199).

[0035] Wireless communication module 192 can support 5G networks following 4G networks and next-generation communication technologies (such as New Radio (NR) access technologies). NR access technologies can support enhanced mobile broadband (eMBB), massive machine-type communications (mMTC), or ultra-reliable low-latency communications (URLLC). Wireless communication module 192 can support high-frequency bands (e.g., millimeter-wave bands) to achieve, for example, high data transmission rates. Wireless communication module 192 can support various technologies used to ensure performance in high-frequency bands, such as, for example, beamforming, massive MIMO, full-dimensional MIMO (FD-MIMO), array antennas, analog beamforming, or massive antennas. Wireless communication module 192 can support various requirements specified in electronic device 101, external electronic devices (e.g., electronic device 104), or network systems (e.g., second network 199). The wireless communication module 192 may support peak data rates (e.g., 20 Gbps or greater) for implementing eMBB, lost coverage (e.g., 164 dB or less) for implementing mMTC, or U-plane delay (e.g., 0.5 ms or less for each of the downlink (DL) and uplink (UL), or 1 ms or less round trip) for implementing URLLC.

[0036] Antenna module 197 can transmit or receive signals or power from the outside of electronic device 101 (e.g., external electronic device). Antenna module 197 may include an antenna comprising a radiating element formed of conductive material or conductive pattern formed in or on a substrate (e.g., a printed circuit board (PCB)). Antenna module 197 may include multiple antennas (e.g., an array antenna). In this case, at least one antenna suitable for a communication scheme used in a communication network (such as a first network 198 or a second network 199) can be selected from the multiple antennas by, for example, communication module 190 (e.g., wireless communication module 192). Signals or power can then be transmitted or received between communication module 190 and external electronic device via the selected at least one antenna. Another component besides the radiating element (e.g., a radio frequency integrated circuit (RFIC)) may be additionally incorporated into antenna module 197.

[0037] Antenna module 197 can form a millimeter-wave antenna module. The millimeter-wave antenna module may include a printed circuit board, an RFIC, and multiple antennas (e.g., an array antenna), wherein the RFIC is disposed on a first surface (e.g., the bottom surface) of the printed circuit board, or adjacent to the first surface and capable of supporting a specified high-frequency band (e.g., a millimeter-wave band), and the multiple antennas are disposed on a second surface (e.g., the top surface or the side surface) of the printed circuit board, or adjacent to the second surface and capable of transmitting or receiving signals in the specified high-frequency band.

[0038] At least some of the aforementioned components can be coupled to each other via an inter-peripheral communication scheme (e.g., bus, general purpose input / output (GPIO), serial peripheral interface (SPI), or mobile industrial processor interface (MIPI)) and can communicatively transmit signals (e.g., commands or data) between them.

[0039] Commands or data can be sent or received between electronic device 101 and external electronic device 104 via server 108 coupled to the second network 199. Each of electronic device 102 or electronic device 104 can be a device of the same type as electronic device 101, or a device of a different type. All or some of the operations to be performed on electronic device 101 can be performed on one or more of external electronic devices 102, external electronic devices 104, or server 108. For example, if electronic device 101 is required to automatically perform a function or service or to perform a function or service in response to a request from a user or another device, electronic device 101 may request one or more external electronic devices to perform at least a portion of the function or service, instead of running the function or service, or electronic device 101 may request one or more external electronic devices to perform at least a portion of the function or service in addition to running the function or service. Upon receiving the request, one or more external electronic devices may perform at least a portion of the requested function or service, or perform additional functions or services related to the request, and transmit the result of the execution to electronic device 101. Electronic device 101 can provide the result as at least a partial response to the request, with or without further processing of the result. For this purpose, technologies such as cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing can be used. Electronic device 101 can use, for example, distributed computing or mobile edge computing to provide ultra-low latency services. External electronic device 104 may include Internet of Things (IoT) devices. Server 108 may be an intelligent server using machine learning and / or neural networks. External electronic device 104 or server 108 may be included in a second network 199. Electronic device 101 can be applied to intelligent services based on 5G communication technology or IoT-related technologies (e.g., smart homes, smart cities, smart cars, or healthcare).

[0040] Figure 2 It is a block diagram of an electronic device.

[0041] Figure 2 The electronic device 101 can correspond to Figure 1 Electronic device 101. Figure 2 The electronic device 101 may include a terminal owned by the user. For example, the terminal may include a personal computer (PC) such as a laptop or desktop computer, a smartphone, a smart tablet, a tablet PC, a smartwatch, and smart accessories such as a head-mounted device (HMD).

[0042] Reference Figure 2 The electronic device 101 may include a processor 120 and a memory 130. Figure 2 The processor 120 can be with Figure 1 The processor 120 is essentially the same, or may include Figure 1 The processor is 120. Figure 2 The memory 130 can be connected with Figure 1 The memory 130 is substantially the same, or may include, the memory 130. Figure 1 The memory 130.

[0043] The processor 120 of the electronic device 101 may include multiple cores 211, 213, 215, 221, 223, 225, 231, 233, and 235. Each of the multiple cores 211, 213, 215, 221, 223, 225, 231, 233, and 235 can operate within a specified frequency range. Each of the multiple cores 211, 213, 215, 221, 223, 225, 231, 233, and 235 may be included in one of multiple clusters 210, 220, and 230 according to its operating frequency range.

[0044] The processor 120's multiple cores 211, 213, 215, 221, 223, 225, 231, 233, and 235 can have different performance characteristics to improve the performance of the electronic device 101 and / or efficiently utilize power. For example, the processor 120 can have a structure that includes relatively high-performance cores and relatively low-performance cores together (e.g., a big-little architecture). For example, when performing relatively simple tasks, the big-little processor 120 can extend battery life by using low-power cores. For example, when performing relatively complex tasks, the big-little processor 120 can provide higher performance to the user by using high-performance cores.

[0045] The first cluster 210 may include a core operating in a first frequency range having a first maximum frequency (e.g., 3.4 GHz). The second cluster 220 may include a core operating in a second frequency range having a second maximum frequency (e.g., 3.15 GHz or 2.96 GHz) lower than the first maximum frequency. The third cluster 230 may include a core operating in a third frequency range having a third maximum frequency (e.g., 2.27 GHz) lower than the second maximum frequency. The number of clusters 210, 220, and 230 is not limited. Figure 2 The three shown. For example, the number of multiple clusters 210, 220, and 230 can be two. For example, the number of multiple clusters 210, 220, and 230 can be four or more.

[0046] Cluster 210, operating in the highest maximum frequency range (e.g., 3.4 GHz), can be referred to as a primary cluster or a large cluster. Cluster 230, operating in the lowest maximum frequency range (e.g., 2.27 GHz), can be referred to as a small cluster or a high-efficiency cluster. Cluster 220, operating in the maximum frequency range between the highest and lowest maximum frequencies (e.g., 3.15 GHz or 2.96 GHz), can be referred to as a performance cluster.

[0047] The program 140 in memory 130 can be classified into multiple layers 240, 250, and 260. For example, the multiple layers 240, 250, and 260 may include an application layer 240, a framework layer 250, and / or a kernel layer 260. However, the multiple layers 240, 250, and 260 are not limited thereto. For example, the multiple layers 240, 250, and 260 may also include a hardware abstraction layer.

[0048] For example, application layer 240 may include application 241 and application 243. For example, application 241 and application 243 may correspond to... Figure 1 Application 146.

[0049] For example, the framework layer 250 may include SurfaceFlinger 251, a graphics library 253, and a binder interface 255. For example, SurfaceFlinger 251, the graphics library 253, and the binder interface 255 may correspond to... Figure 1 The middleware 144 and / or operating system 142.

[0050] SurfaceFlinger 251 can synthesize at least one image (or layer) (or frame) stored in the framebuffer for each of applications 241 and 243. SurfaceFlinger 251 can synthesize at least one image (or layer) (or frame) stored in the framebuffer at each specified period (e.g., according to the period of vsync (e.g., 60 Hz)). In the following, the image (or layer) (or frame) stored in the framebuffer by each of applications 241 and 243 may be referred to as an image.

[0051] The SurfaceFlinger 251 can (via a hardware composer) provide composited images (or layers) (or frames) to a display (e.g., Figure 1 The display module 160). An image (or layer) (or frame) synthesized by SurfaceFlinger 251 can be referred to as a composite image.

[0052] Graphics library 253 may include graphics functions that are essentially used in conjunction with computer graphics. For example, graphics library 253 may be an OpenGL library.

[0053] The binder interface 255 may include functions for interfacing programs (e.g., applications 241 and 243, SurfaceFlinger 251, graphics library 253, binder interface 255, binder driver 261, scheduler 263, and / or control group (Cgroup) 265) with binder driver 261. Interfacing with binder driver 261 may include invoking binder driver 261 and / or making requests to binder driver 261.

[0054] For example, kernel layer 260 may include binder driver 261, scheduler 263, and / or Cgroup 265. For example, binder driver 261, scheduler 263, and / or Cgroup 265 may correspond to... Figure 1 Operating system 142.

[0055] The binder driver 261 can be a driver for remote procedure calls (or inter-process communication (IPC)) (e.g., binder calls). For example, a remote procedure call (e.g., a binder call) can be run based on a function (or application programming interface (API)) defined in the binder interface 255.

[0056] The binder driver 261 can share messages and / or data between processes. The binder driver 261 can recognize remote procedure calls (e.g., binder calls) from a first process. Remote procedure calls (e.g., binder calls) can be used for message passing from the first process to the second process and / or data passing from the first process to the second process. For example, the binder driver 261 can send messages and / or data (or the address of memory 130 storing messages and / or data) to the recognized second process based on a remote procedure call (e.g., a binder call) from the first process.

[0057] The binder driver 261 can send messages and / or data to the scheduler 263 based on a remote procedure call (e.g., a binder call) between the leaving process (or caller) and / or the destination process (or callee). The binder driver 261 can send the identification information of the leaving process (or caller) (e.g., the caller's process ID (PID)) and the identification information of the destination process (or callee) (e.g., the callee's PID)) to the scheduler 263.

[0058] Scheduler 263 can schedule tasks of processes (or threads) that are in a standby or ready state on memory 130. Scheduler 263 can allocate unit time (or time slices) that may occupy cores to tasks. For example, when a scheduled unit time is allocated to a process's task, processor 120 can run the process's task by specifying a core within that unit time (i.e., in 10 ms). A task is the unit of scheduling.

[0059] Scheduler 263 may include multiple schedulers. For example, scheduler 263 may include a real-time (RT) scheduler and a completely fair scheduler (CFS). However, this is not limited to these. Scheduler 263 may also include a scheduler-stopping scheduler, a deadline scheduler, and an idle scheduler.

[0060] Scheduler 263 can schedule most general tasks through the CFS scheduler. Scheduler 263 can schedule tasks that need to be processed continuously while occupying CPU (or processor 120) (or core) resources through the RT scheduler.

[0061] Tasks processed by the RT scheduler (or tasks with RT attributes) (hereinafter referred to as RT tasks) can always be allocated CPU resources with priority over tasks processed by the CFS scheduler. Furthermore, the same RT task can be allocated CPU resources according to the order in which it enters the run queue (RQ) (e.g., First-In-First-Out (FIFO)). Here, the run queue, which serves as the processor 120's internal memory (or registers), can store tasks to be processed by the processor 120. RT tasks can be at least one of graphics-related tasks and audio-related tasks that require real-time processing.

[0062] The CFS scheduler can process general tasks (or tasks with CFS attributes) (hereinafter, CFS tasks) after RT task operations have finished (or after all RT tasks in the run queue have been processed). CFS tasks can be scheduled by allocating time based on a nice value. Here, the nice value can indicate the running priority (e.g., a priority value) among processes running (or loaded) in user space 270. The CFS scheduler can determine the processing order of CFS tasks by using priorities. Therefore, a CFS task with a higher priority can be operated on (or run) before a CFS task with a lower priority.

[0063] Cgroup 265 can allocate resources (e.g., processor time (or CPU time), memory, and / or network bandwidth) to processes. Cgroup 265 can manage resource allocation information between resources and processes. For example, resource allocation information may include the process's identifier (ID) (or process ID (PID)) and / or the thread's ID (or thread ID (TID)). At least one thread within a process can have the same PID and a unique TID.

[0064] Programs included in application layer 240 and / or framework layer 250 can run in user space 270 of memory 130. Programs included in application layer 240 and / or framework layer 250 can be allocated to a separate memory region within user space 270 of memory 130. The independence of a memory region can indicate that a processor other than the processor allocated to that memory region may not be able to access it.

[0065] Programs included in kernel layer 260 can run in kernel space 280. Programs included in kernel layer 260 can share memory regions of kernel space 280 with memory 130. Sharing of memory regions can indicate that processes of programs included in kernel layer 260 can access those memory regions.

[0066] Processor 120 can process tasks of processes (or threads) using a cluster (or core) allocated (or specified) by scheduler 263. Here, a process may include a main thread and at least one child thread (or background thread) (or worker thread).

[0067] The main thread can handle user-identifiable tasks. These tasks may include processing user input. For example, the main thread can obtain user input. For example, the main thread can handle user interface (UI) update requests. For example, when the UI needs to be updated based on an event (e.g., user input), the main thread can request at least one child thread to update the UI.

[0068] At least one child thread can be a thread used to process complex operations or large amounts of data. At least one child thread can be generated for jobs that require a relatively long processing time compared to the job processed by the main thread.

[0069] The UI thread, as an example of a child thread, can perform drawing operations. Drawing operations in the UI thread can be operations that send a set of instructions for drawing an image to another worker thread (e.g., the rendering thread).

[0070] As an example of a sub-thread, the rendering thread can draw images. For example, the rendering thread can draw images using graphics library 253. However, this is not limited to this. The rendering thread can draw images using the program's built-in graphics library. Here, graphics library 253 can be a basic graphics library provided by operating system 142. The built-in graphics library can be a graphics library distinct from the basic graphics library provided by operating system 142. Alternatively, the built-in graphics library can be a graphics library not provided by operating system 142.

[0071] The rendering thread can update the image in the frame buffer allocated to the application. The rendering thread can send a message to the SurfaceFlinger 251 notifying it that the image has been updated in the frame buffer via the binder driver 261.

[0072] Scheduler 263 can schedule a specified process (or thread) (e.g., the main thread and SurfaceFlinger 251) through the RT scheduler. For example, the task of the specified process (or thread) (e.g., the main thread and SurfaceFlinger 251) can be an RT task.

[0073] Scheduler 263 can schedule processes (or rendering threads) for rendering through the CFS scheduler. The process (or rendering thread) for rendering can be a CFS task (or a regular task).

[0074] Scheduler 263 can allocate the foreground processes of the top-app to the large cluster. However, if all foreground processes of the top-app are assigned to the large cluster, the current consumption of processor 120 may increase. Therefore, to prevent (or minimize) frame drops in the top-app, it may be necessary to allocate a portion of the foreground processes of the top-app to the operations of the large cluster. The top-app can be the application with focus among the applications running in electronic device 101. For example, the top-app can be an application that has (or generates) a screen (or view) for receiving user input. For example, in the case where screens of two or more applications are displayed on the display, only one application can be the top-app. For example, the top-app can be an application with top-level activity.

[0075] When the rendering thread generates images using a basic graphics library provided by the operating system 142, the electronic device 101 can accurately specify the rendering thread based on remote procedure calls between the rendering thread and the basic graphics library. However, the electronic device 101 may have difficulty accurately specifying associated threads (e.g., threads used to load data (or images) used by the rendering thread) that are related to (or dependent on) the rendering thread. Therefore, associated threads may not be processed in a large cluster, and in this case, frame drops in the top-level application may occur due to associated threads.

[0076] Furthermore, if the rendering thread generates images using a graphics library other than the basic graphics library (e.g., the built-in graphics library of a game application or an internet browser), the electronic device 101 may have difficulty accurately specifying the rendering thread. Therefore, the rendering thread may not be processed in a large cluster, and in this case, frame drops in the top-level application may occur due to the rendering thread.

[0077] Furthermore, even when a rendering thread is specified, if the rendering thread only updates the frames in the framebuffer and the associated thread generates the actual image, the associated thread generating the actual image may not be processed in a large cluster. In this case, dropped frames in the top-level application can be caused by the associated thread.

[0078] Finally, because the name of the rendering thread can be freely changed by the developer, it may not be easy to specify the rendering thread by its name.

[0079] Therefore, a method may be needed to specify the processes and / or threads used to perform the actual rendering in the application and to process the specified processors and / or threads in a large cluster.

[0080] In the following text, refer to Figure 3 The description will specify the operations of electronic device 101 for specifying processes and / or threads for performing actual rendering in the application and for processing the specified processors and / or threads in a large cluster.

[0081] Figure 3 An example of signal flow between components included in a memory is shown.

[0082] You can refer to Figure 1 and Figure 2 describe Figure 3 . Figure 3 The components can be included as part of the electronic device 101.

[0083] The binder driver 261 can recognize requests from application process 310 (e.g., remote procedure calls). For example, a request (e.g., a remote procedure call) could be a binder call for message and / or data transfer to a process other than application process 310. A remote procedure call may include identification information of the caller (e.g., PID) and identification information of the callee (e.g., PID). A request (e.g., a remote procedure call) may include messages and / or data (or addresses of memory 130 where messages and / or data are recorded) for the caller to send to the callee. However, this is not limited to these.

[0084] For example, binder driver 261 can send requests from application process 310 to the callee. For example, the callee that receives a request from application process 310 can send a response to the request to the caller through binder driver 261.

[0085] For example, binder driver 261 may send at least a portion of the information included in a request from application process 310 to scheduler 263. For example, binder driver 261 may send caller identification information and / or callee identification information included in the request to scheduler 263.

[0086] Scheduler 263 can determine the cluster to process application process 310 based on requests from application process 310. For example, scheduler 263 can determine the cluster to process application process 310 based on at least a portion of information included in a remote procedure call from binder driver 261 (e.g., caller identification information and / or callee identification information).

[0087] Scheduler 263 can determine whether application process 310 is a process of the top-level application based on at least a portion of information (e.g., caller identification information). Scheduler 263 can determine whether the identification information included in the resource allocation information of the top-level application managed by Cgroup 265 corresponds to the caller identification information. Scheduler 263 can determine that application process 310 is a process of the top-level application based on the correspondence between the identification information included in the resource allocation information of the top-level application and the caller identification information.

[0088] Scheduler 263 can identify, based on resource allocation information of the top-level application managed by Cgroup 265, that the resources allocated to application process 310 are included in the resources for the top-level application (or an application with top-level activity) to determine that application process 310 is a process of the top-level application.

[0089] Scheduler 263 may determine a priority value (or graph count value) for determining the cluster to process application process 310 based on the result of determining whether application process 310 is a process of the top-level application. The priority value (or graph count value) may be an integer value within a specified range (e.g., 0 to 20).

[0090] Scheduler 263 can determine, based on at least part of information (e.g., the callee's identification information), whether the requesting callee is the specified process (or the process used to output images to a display, e.g., Figure 1 The display module 160) and the processor (e.g., SurfaceFlinger 251).

[0091] Scheduler 263 can determine whether the identification information included in the resource allocation information of SurfaceFlinger 251 managed by Cgroup 265 corresponds to the identification information of the callee. Scheduler 263 can determine that the callee is SurfaceFlinger 251 based on the correspondence between the identification information included in the resource allocation information of SurfaceFlinger 251 and the identification information of the callee. Scheduler 263 can determine that the callee is SurfaceFlinger 251 based on the fact that the resources allocated to the callee are included in the resources allocated to SurfaceFlinger 251.

[0092] Scheduler 263 can determine a priority value (or graph count value) for determining the cluster to process application process 310 based on the result of determining whether the callee is SurfaceFlinger 251.

[0093] For example, if the application process 310 that generated the request is a process of a top-level application, the scheduler 263 can increase the priority value of the application process 310 by a specified value (e.g., 2). For example, if the application process 310 that generated the request is not a process of a top-level application, the scheduler 263 can decrease the priority value of the application process 310 by another specified value (e.g., 1).

[0094] For example, when the callee is SurfaceFlinger 251, scheduler 263 can increase the priority value of application process 310 by a specified value (e.g., 2). For example, when the callee is not SurfaceFlinger 251, scheduler 263 can decrease the priority value of application process 310 by another specified value (e.g., 1).

[0095] For example, when all of the multiple conditions are met, scheduler 263 can increase the priority value of application process 310 by a specified value (e.g., 2). For example, when at least one of the multiple conditions is not met, scheduler 263 can decrease the priority value of application process 310 by another specified value (e.g., 1). Here, the multiple conditions may include a first condition and a second condition, where the first condition is that the application process 310 that generated the request is the process of the top-level application, and the second condition is that the callee is SurfaceFlinger 251.

[0096] Scheduler 263 can determine the cluster of hardware layer 300 used to process processes based on the priority value of the processes.

[0097] For example, scheduler 263 can determine whether to change the cluster of processing processes to a larger cluster (e.g., first cluster 210) based on a process's priority value being greater than or equal to a reference value (e.g., 1). For example, the operation of changing the cluster of processing processes to a larger cluster can be referred to as a migration (or a large cluster migration). In the following text, processes with a priority value greater than or equal to the reference value (e.g., 1) can be referred to as rendering processes. Processes with a priority value less than the reference value (e.g., 1) can be referred to as non-rendering processes. However, this is not limited to these terms.

[0098] For example, scheduler 263 may determine to maintain the cluster processing non-rendering processes based on a priority value less than a reference value. However, this is not limited to this. For example, scheduler 263 may change the cluster processing non-rendering processes to a cluster other than a large cluster (e.g., a small cluster (or efficiency cluster) (e.g., third cluster 230)) or a performance cluster (e.g., second cluster 220) based on a priority value less than a reference value. For example, scheduler 263 may change the cluster processing non-rendering processes as the priority value changes and as the rendering process changes to a non-rendering process. For example, as the rendering process changes to a non-rendering process, scheduler 263 may change the cluster processing non-rendering processes back to the existing cluster. Here, the existing cluster may be the cluster that processed non-rendering processes before the process was identified as a rendering process based on the priority value. In the following text, a cluster other than a large cluster (e.g., a small cluster (or efficiency cluster) or a performance cluster) may be referred to as a small cluster.

[0099] Scheduler 263 can change the fallback cores of rendering processes (i.e., processes with a priority value greater than or equal to a reference value (e.g., 1)). For example, scheduler 263 can change the fallback cores (or fallback clusters) of rendering processes to a large cluster. Here, fallback can refer to processing a process in an alternative cluster when scheduler 263 lacks resources for the cluster processing the process (or when processor utilization is greater than or equal to a reference utilization). For example, when resources in the large cluster are insufficient (or when the large cluster utilization is greater than or equal to a reference utilization), scheduler 263 can process another process (or another thread) other than the rendering process (i.e., the process with a priority value greater than or equal to a reference value (e.g., 1)) among the processes processed in the large cluster in an alternative processor (e.g., a small cluster).

[0100] The operation of the electronic device 101 based on the environment processing rendering process of the processor 120 can be shown.

[0101] For example, scheduler 263 can schedule rendering processes such that they are processed before general tasks (or CFS tasks) queued in the run queue (RQ) of the large cluster. For example, based on the fact that the number of general tasks queued in the run queue (RQ) of the large cluster is greater than or equal to a reference number, scheduler 263 can schedule rendering processes such that they are processed before general tasks queued in the run queue. For example, scheduler 263 can schedule rendering processes such that they are processed before general tasks (or CFS tasks) with shorter virtual runtimes compared to the virtual runtime of the rendering process. Here, the virtual runtime can be the expected runtime of each CFS task. For example, scheduler 263 can schedule CFS tasks such that CFS tasks other than rendering processes with shorter virtual runtimes are processed first.

[0102] For example, based on the change of a rendering process to a non-rendering process, scheduler 263 can process the non-rendering process based on virtual runtime.

[0103] Scheduler 263 can adjust (or increase) the lock order (or waiting order) of the rendering process. For example, when lock contention occurs between the rendering process and another process for the same resource (or data stored in memory 130), the processing of the rendering process may be delayed. Scheduler 263 can adjust (or increase) the order (or waiting order) of the mutex locks of the rendering process for the resource being contested by the rendering process and another process. Therefore, the rendering process can quickly acquire locks for resources in a contention. Here, mutex refers to an object used to prevent multiple processes from using the same resource simultaneously. A mutex lock for a process's resource can be understood as the process having mutual exclusion for the resource. However, this is not limited to this. Even in the case of locks other than mutex locks (e.g., futex or semaphores), scheduler 263 can adjust (or increase) the lock order of the rendering process.

[0104] For example, based on the change of a rendering process to a non-rendering process, scheduler 263 can determine the order of locks for the non-rendering process based on the request order.

[0105] Scheduler 263 can increase the operating frequency of the large cluster based on the identification of rendering processes. For example, scheduler 263 can change the operating frequency of the large cluster to the maximum frequency based on the identification of rendering processes. However, this is not limited to this. Scheduler 263 can also decrease the operating frequency of the large cluster based on the identification of rendering processes. For example, scheduler 263 can decrease the operating frequency of the large cluster based on the fact that all rendering processes have been changed to non-rendering processes. However, this is not limited to this. Here, identifying rendering processes can include assigning rendering processes to be processed in the large cluster.

[0106] Associated processes of processes (or rendering processes) with a priority value greater than or equal to a reference value (e.g., 1) can be assigned to the large cluster. Here, an associated process can be a process that wakes up a process (or rendering process) with a priority value greater than or equal to the reference value (e.g., 1). For example, an associated process could be a process that generates remote procedure calls (or inter-process communication) (e.g., binder calls) to the rendering process.

[0107] For example, scheduler 263 can manage an association list of processes associated with a rendering process. For example, when there are multiple rendering processes, scheduler 263 can manage an association list for each of the multiple rendering processes. The association list can be a list of processes that wake up a rendering process (or invoke a remote procedure). The association list can indicate a specified number (e.g., 5) of processes. For example, when the number of associated processes related to a rendering process exceeds a specified number (e.g., 5), scheduler 263 can remove associated processes from the association list in order of their shortest loading (or virtual runtime). For example, when the number of associated processes related to a rendering process exceeds a specified number, scheduler 263 can maintain a specified number of associated processes from the association list in order of their longest loading (or virtual runtime).

[0108] For example, scheduler 263 can change the scheduling policy of associated processes based on whether the rendering process is maintained. For example, when the priority value of the rendering process is greater than or equal to a reference value (e.g., 1), scheduler 263 can determine to change the cluster that processes the associated processes to a larger cluster (e.g., the first cluster 210).

[0109] For example, scheduler 263 can change the fallback cluster of associated processes of a rendering process (or associated processes included in the associated list of a rendering process) into a large cluster. For example, scheduler 263 can schedule associated processes such that associated processes of a rendering process (or associated processes included in the associated list of a rendering process) are processed before general tasks queued in the run queue. For example, scheduler 263 can adjust (or increase) the lock order of associated processes of a rendering process (or associated processes included in the associated list of a rendering process).

[0110] For example, based on the change of a rendering process to a non-rendering process, scheduler 263 can change the fallback cluster of associated processes into a smaller cluster. For example, based on the change of a rendering process to a non-rendering process, scheduler 263 can process the non-rendering process based on the virtual runtime of the associated processes. For example, based on the change of a rendering process to a non-rendering process, scheduler 263 can determine the lock order of associated processes based on the request order.

[0111] When a process communicates with graphics library 253 (or when drawing images via graphics library 253), scheduler 263 can apply the same scheduling policy to that process as to the rendering process. For example, applying the same scheduling policy as to the rendering process can instruct operations to be applied when migrating to a large cluster and processor-based environment 120. However, this is not limited to this.

[0112] Reference Figure 3The examples above are not limited to those of processes. The following describes the operation of electronic device 101 for specifying threads for performing actual rendering and processing those specified threads in a large cluster.

[0113] The binder driver 261 can recognize a request (e.g., a remote procedure call) from one of the threads 311, 313, 315, 317, and 319 of the application process 310. For example, the request (e.g., a remote procedure call) could be a binder call for message passing and / or data transfer from a thread to a process other than the application process 310. The remote procedure call may include identification information of the caller (e.g., PID and TID) and identification information of the callee (e.g., PID and TID). In the following text, the thread that generated the request (e.g., the remote procedure call) may be referred to as the first thread.

[0114] For example, binder driver 261 may send at least a portion of the information included in the request of the first thread to scheduler 263. For example, binder driver 261 may send the caller's identification information and / or the callee's identification information included in the request to scheduler 263.

[0115] Scheduler 263 may determine the cluster to process the first thread based on the request of the first thread. For example, scheduler 263 may determine the cluster to process the first thread based on at least a portion of the information included in the remote procedure call from binder driver 261 (e.g., the caller's identification information and / or the callee's identification information).

[0116] Scheduler 263 can determine whether application process 310 is a thread of the top-level application based on at least a portion of information (e.g., caller identification information). Scheduler 263 can also determine that application process 310 is a thread of the top-level application based on the identification information included in the resource allocation information of the top-level application corresponding to the caller identification information.

[0117] Based on the identification that the resources allocated to the first thread (or the application process 310 including the first thread) are included in the resources for the top-level application (or the application with top-level activities), the scheduler 263 can determine that the first thread is a thread of the top-level application based on the resource allocation information of the top-level application managed by Cgroup 265.

[0118] Scheduler 263 can determine a priority value (or graph count value) for determining the cluster to process the first thread based on the result of determining whether the first thread is a thread of the top-level application.

[0119] Scheduler 263 can determine, based on at least part of information (e.g., the callee's identification information), whether the requesting callee is the specified process (or the process used to output images to a display, e.g., Figure 1 The display module 160) and the processor (e.g., SurfaceFlinger 251).

[0120] Scheduler 263 can determine a priority value (or graph count value) for determining the cluster to process application process 310 based on the result of determining whether the callee is SurfaceFlinger 251.

[0121] Scheduler 263 can determine whether a first thread (or caller thread) is the main thread 311 based on at least part of information (e.g., caller identification information). Scheduler 263 can determine whether the TID of the first thread corresponds to the TID of the main thread 311 based on the TID of each of the threads 311, 313, 315, 317, and 319 of the application process 310 managed by Cgroup 265. Scheduler 263 can determine that the first thread is the main thread 311 based on the fact that the TID of the first thread corresponds to the TID of the main thread 311. Scheduler 263 can determine that the first thread is not the main thread 311 based on the fact that the TID of the first thread does not correspond to the TID of the main thread 311 (or is different from the TID of the main thread 311).

[0122] Scheduler 263 can determine a priority value (or graph count value) for determining the cluster to process the first thread based on the result of determining whether the first thread is the main thread 311.

[0123] For example, when the first thread is a thread of the top-level application, scheduler 263 can increase the priority value of the first thread by a specified value (e.g., 2). For example, when the first thread is not a thread of the top-level application, scheduler 263 can decrease the priority value of the first thread by another specified value (e.g., 1).

[0124] For example, when the callee is SurfaceFlinger 251, scheduler 263 can increase the priority value of the first thread by a specified value (e.g., 2). For example, when the callee is not SurfaceFlinger 251, scheduler 263 can decrease the priority value of the first thread by another specified value (e.g., 1).

[0125] For example, when the first thread is not the main thread 311, the scheduler 263 can increase the priority value of the first thread by a specified value (e.g., 2). For example, when the first thread is the main thread 311, the scheduler 263 can decrease the priority value of the first thread by another specified value (e.g., 1).

[0126] For example, when all of the multiple conditions are met, scheduler 263 can increase the priority value of the first thread by a specified value (e.g., 2). For example, when at least one of the multiple conditions is not met, scheduler 263 can decrease the priority value of the first thread by another specified value (e.g., 1). Here, the multiple conditions may include a first condition, a second condition, and a third condition, where the first condition is that the first thread is a thread of the top-level application, the second condition is that the callee is SurfaceFlinger 251, and the third condition is that the first thread is not the main thread 311.

[0127] Scheduler 263 can determine the cluster of hardware layer 300 for processing threads based on thread priority values.

[0128] For example, scheduler 263 may determine whether to change the cluster of processing threads to a larger cluster (e.g., first cluster 210) based on the thread priority value being greater than or equal to a reference value (e.g., 1). For example, the operation of changing the cluster of processing threads to a larger cluster may be referred to as a migration (or a large cluster migration). In the following text, threads with priority values ​​greater than or equal to the reference value (e.g., 1) may be referred to as rendering threads. Threads with priority values ​​less than the reference value (e.g., 1) may be referred to as non-rendering threads. However, this is not limited to this.

[0129] For example, scheduler 263 may determine to maintain the cluster processing non-rendering threads based on a priority value less than a reference value. However, this is not limited to this. For example, scheduler 263 may change the cluster processing non-rendering threads to a smaller cluster other than the large cluster (e.g., a third cluster 230 or a second cluster 220) based on a priority value less than the reference value. For example, scheduler 263 may change the cluster processing non-rendering threads as a rendering thread changes to a non-rendering thread based on a change in priority value. For example, scheduler 263 may change the cluster processing non-rendering threads back to the existing cluster as a rendering thread is changed to a non-rendering thread. Here, the existing cluster may be the cluster that processed non-rendering threads before the thread was identified as a rendering thread based on the priority value.

[0130] Scheduler 263 can change the fallback core of a rendering thread (i.e., a thread with a priority value greater than or equal to a reference value (e.g., 1)). For example, scheduler 263 can change the fallback core (or fallback cluster) of a rendering thread to a large cluster. For example, when the resources of the large cluster are insufficient (or when the utilization of the large cluster is greater than or equal to the reference utilization), scheduler 263 can process another thread (or a different thread) among the threads processed in the large cluster in an alternative processor (e.g., a small cluster).

[0131] The operation of the rendering thread of the electronic device 101 based on the environment processing of the processor 120 can be shown.

[0132] For example, scheduler 263 can schedule rendering threads so that they are processed before CFS tasks queued in the run queue (RQ) of the large cluster. For example, based on the fact that a general number of tasks are queued in the run queue (RQ) of the large cluster being greater than or equal to a reference number, scheduler 263 can schedule rendering threads so that they are processed before CFS tasks queued in the run queue. For example, based on the fact that a rendering thread is changed to a non-rendering thread, scheduler 263 can process the non-rendering thread based on virtual runtime.

[0133] Scheduler 263 can adjust (or increase) the lock order (or waiting order) of rendering threads. Scheduler 263 can adjust (or increase) the order (or waiting order) of mutex locks held by rendering threads for resources contested by another thread. Therefore, rendering threads can quickly acquire locks for resources in a contention situation. However, this is not limited to this. Even in lock cases other than mutexes (e.g., futex or semaphores), scheduler 263 can adjust (or increase) the lock order of rendering threads. For example, based on the rendering thread being changed to a non-rendering thread, scheduler 263 can determine the lock order of non-rendering threads based on the order of requests.

[0134] Scheduler 263 can increase the operating frequency of the large cluster based on the identification of rendering threads. For example, scheduler 263 can change the operating frequency of the large cluster to the maximum frequency based on the identification of rendering threads. However, this is not limited to this. Scheduler 263 can also decrease the operating frequency of the large cluster based on the identification of rendering threads. For example, scheduler 263 can decrease the operating frequency of the large cluster based on the fact that all rendering threads have been changed to non-rendering threads. However, this is not limited to this. Here, identifying rendering threads can include assigning rendering threads to process within the large cluster.

[0135] Associated threads of threads (or rendering threads) with a priority value greater than or equal to a reference value (e.g., 1) can be assigned to the large cluster. Here, an associated thread can be a thread that wakes up a thread (or rendering thread) with a priority value greater than or equal to the reference value (e.g., 1). For example, an associated thread could be a thread that generates remote procedure calls (or inter-thread communication) (e.g., binder calls) to the rendering thread.

[0136] For example, scheduler 263 can manage the association list of associated threads for a rendering thread. For example, when there are multiple rendering threads, scheduler 263 can manage the association list of each of the multiple rendering threads. For example, when the number of associated threads associated with a rendering thread exceeds a specified number (e.g., 5), scheduler 263 can remove associated threads from the association list in order of their shortest loading (or virtual runtime). For example, when the number of associated threads associated with a rendering thread exceeds a specified number (e.g., 5), scheduler 263 can maintain associated threads from the association list in order of their longest loading (or virtual runtime).

[0137] For example, scheduler 263 can change the scheduling policy of associated threads based on whether the rendering thread is maintained. For example, when the priority value of the rendering thread is greater than or equal to a reference value (e.g., 1), scheduler 263 can determine to change the cluster that processes the associated thread to a larger cluster (e.g., the first cluster 210).

[0138] For example, scheduler 263 can change the fallback cluster of associated threads of a rendering thread (or associated threads included in the associated list of a rendering thread) into a large cluster. For example, scheduler 263 can schedule associated threads such that associated threads of a rendering thread (or associated threads included in the associated list of a rendering thread) are processed before general tasks queued in the run queue. For example, scheduler 263 can adjust (or increase) the lock order of associated threads of a rendering thread (or associated threads included in the associated list of a rendering thread).

[0139] For example, based on the change of a rendering thread to a non-rendering thread, scheduler 263 can change the fallback cluster of associated threads into a smaller cluster. For example, based on the change of a rendering thread to a non-rendering thread, scheduler 263 can process the non-rendering thread based on the virtual runtime of the associated thread. For example, based on the change of a rendering thread to a non-rendering thread, scheduler 263 can determine the lock order of associated threads based on the request order.

[0140] When a thread communicates with graphics library 253 (or when drawing images via graphics library 253), scheduler 263 can apply the same scheduling policy to that thread as to the rendering thread. For example, applying the same scheduling policy as to the rendering thread could instruct operations to be applied in a large cluster and processor-based environment 120. However, this is not limited to this.

[0141] As described above, electronic device 101 can identify the rendering process and its associated processes (or rendering threads and their associated threads) based on remote procedure calls. For example, electronic device 101 can identify the process (or thread) that actually draws the image even when the process (or thread) is not using graphics library 253 (or the basic graphics library provided by operating system 142).

[0142] As described above, electronic device 101 can ensure that the processing of the rendering process and the identified associated process is not delayed by ensuring that the identified rendering process and the identified associated process (or the identified rendering thread and the identified associated thread) are migrated to a large cluster and / or that the identified rendering process and the identified associated process (or the identified rendering thread and the identified associated thread) are scheduled to be processed in a large cluster. Therefore, electronic device 101 can reduce the occurrence of (top-level application) frame drops by ensuring that the identified rendering process and the identified associated process (or the identified rendering thread and the identified associated thread) are migrated to a large cluster and / or that the identified rendering process and the identified associated process (or the identified rendering thread and the identified associated thread) are scheduled to be processed in a large cluster.

[0143] As described above, electronic device 101 can reduce (or prevent) excessive current consumption (or excessive battery power consumption) by running non-rendering processes (or non-rendering threads) in a cluster other than the main cluster (e.g., the second cluster 220 or the third cluster 230) without migrating to the main cluster.

[0144] Figure 4 This is a flowchart illustrating the operation of an electronic device.

[0145] You can refer to Figures 1 to 3 describe Figure 4 . Figure 4 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation.

[0146] Reference Figure 4 In operation 410, electronic device 101 can recognize events. For example, an event may be a remote procedure call (or inter-process communication (IPC)) (e.g., a binder call).

[0147] In operation 420, electronic device 101 can identify the priority of the calling process. Electronic device 101 can identify the priority of the calling process based on an event. Electronic device 101 can use the priority value of the calling process identified based on the event to identify the priority of the calling process. Here, the calling process can be the process that generated the event (or remote procedure call).

[0148] For example, when the calling process is a process of the top-level application, electronic device 101 can increase the priority value of the calling process by a specified value (e.g., 2). For example, when the calling process that generated the request is not a process of the top-level application, electronic device 101 can decrease the priority value of the calling process by another specified value (e.g., 1).

[0149] For example, when the called process is SurfaceFlinger 251, the electronic device 101 can increase the priority value of the calling process by a specified value (e.g., 2). For example, when the called process is not SurfaceFlinger 251, the electronic device 101 can decrease the priority value of the calling process by another specified value (e.g., 1).

[0150] For example, when all of the multiple conditions are met, electronic device 101 may increase the priority value of the calling process by a specified value (e.g., 2). For example, when at least one of the multiple conditions is not met, electronic device 101 may decrease the priority value of the calling process by another specified value (e.g., 1). Here, the multiple conditions may include a first condition and a second condition, where the first condition is that the calling process that generated the request is the process of the top-level application, and the second condition is that the called process is SurfaceFlinger 251.

[0151] For example, electronic device 101 can determine that the calling process has a high priority based on the fact that the priority value of the calling process is greater than or equal to a reference value (e.g., 1). For example, electronic device 101 can determine that the calling process has a low priority based on the fact that the priority value of the calling process is less than a reference value (e.g., 1).

[0152] In operation 430, electronic device 101 can allocate the cores for processing the calling process based on priority. When the process has a high priority, electronic device 101 can determine the cluster used to process the process as a large cluster. When the process has a low priority, electronic device 101 can determine the cluster used to process the process as a small cluster.

[0153] Figure 4 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 4 The operation can be described in several ways. For example, in operation 420, electronic device 101 can identify the priority of the calling thread. In this case, to identify the priority of the calling thread, electronic device 101 can consider the condition that the calling thread is not the main thread 311. For example, in operation 430, electronic device 101 can allocate the core of the calling thread based on its priority.

[0154] Figure 5This is a flowchart illustrating the operation of an electronic device.

[0155] You can refer to Figures 1 to 4 describe Figure 5 . Figure 5 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation. Figure 5 The operation can be included Figure 4 In operation 420.

[0156] Reference Figure 5 In operation 510, the electronic device 101 can identify the identification information of the calling process. For example, the identification information may include the PID and / or resource information assigned to the calling process.

[0157] In operation 520, electronic device 101 can determine whether the calling process is a process of a top-level application. Electronic device 101 can determine that application process 310 is a process of a top-level application based on the fact that the PID of the top-level application corresponds to the PID of the calling process. Electronic device 101 can also determine that application process 310 is a process of a top-level application based on the fact that the resources allocated to application process 310 are included in the resources used for top-level applications (or applications with top-level activities).

[0158] Based on the determination that the calling process is a process of the top-level application, electronic device 101 can perform operation 530. Based on the determination that the calling process is not a process of the top-level application, electronic device 101 can perform operation 540.

[0159] In operation 530, electronic device 101 may increment a counter value used to identify the priority of the calling process. For example, electronic device 101 may increment the counter value of the calling process by a specified value (e.g., 2).

[0160] In operation 540, electronic device 101 may decrease the count value used to identify the priority of the calling process. For example, electronic device 101 may decrease the count value of the calling process by another specified value (e.g., 1).

[0161] Figure 5 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 5The operation can be performed in several ways. For example, in operation 510, electronic device 101 can identify the calling thread's identification information (e.g., PID, TID, and / or resource information). For example, in operation 520, electronic device 101 can determine whether the calling thread is a thread of the top-level application. When the calling thread is a thread of the top-level application in operation 520, electronic device 101 can increment the count value used to identify the calling thread's priority in operation 530. When the calling thread is not a thread of the top-level application in operation 520, electronic device 101 can decrement the count value used to identify the calling thread's priority in operation 540.

[0162] Figure 6 This is a flowchart illustrating the operation of an electronic device.

[0163] You can refer to Figures 1 to 5 describe Figure 6 . Figure 6 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation. Figure 6 The operation can be included Figure 4 In operation 420.

[0164] Reference Figure 6 In operation 610, electronic device 101 can identify the identification information of the called process. For example, the identification information may include the PID and / or resource information assigned to the called process.

[0165] In operation 620, electronic device 101 can determine whether the called process is a SurfaceFlinger process. Electronic device 101 can determine that the called process is a SurfaceFlinger process based on the correspondence between the PID of SurfaceFlinger and the PID of the called process. Electronic device 101 can also determine that the called process is a SurfaceFlinger process based on the correspondence between the identification information included in the resource allocation information of SurfaceFlinger and the identification information of the called process.

[0166] Based on the determination that the called process is a SurfaceFlinger process, electronic device 101 can perform operation 630. Based on the determination that the called process is not a SurfaceFlinger process, electronic device 101 can perform operation 640.

[0167] In operation 630, electronic device 101 can increment a counter value used to identify the priority of the calling process. For example, when the callee is SurfaceFlinger 251, scheduler 263 can increment the priority value of application process 310 by a specified value (e.g., 2).

[0168] In operation 640, electronic device 101 can decrease the count value used to identify the priority of the calling process. For example, when the callee is not SurfaceFlinger 251, scheduler 263 can decrease the priority value of application process 310 by another specified value (e.g., 1).

[0169] Figure 6 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 6 The operation can be performed in several ways. For example, in operation 610, electronic device 101 can identify the identification information of the called thread (e.g., PID, TID, and / or resource information). For example, in operation 620, electronic device 101 can determine whether the called thread is a thread of SurfaceFlinger 251. For example, in operation 630, electronic device 101 can increment a count value used to identify the priority of the calling thread. In operation 640, electronic device 101 can decrement a count value used to identify the priority of the calling thread.

[0170] Figure 7 This is a flowchart illustrating the operation of an electronic device.

[0171] You can refer to Figures 1 to 6 describe Figure 7 . Figure 7 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation. Figure 7 The operation can be included Figure 4 In operation 420.

[0172] Reference Figure 7 In operation 710, the electronic device 101 can identify the identification information of the calling thread. For example, the identification information may include the PID, TID, and / or resource information assigned to the calling thread.

[0173] In operation 720, electronic device 101 can determine whether the calling thread is the main thread. Electronic device 101 can determine that the calling thread is the main thread based on the fact that the main thread's TID corresponds to the calling thread's TID. Electronic device 101 can also determine that the calling thread is the main thread based on the fact that the resources allocated to the calling thread are included in the resources of the process used for the main thread.

[0174] Based on the determination that the calling thread is the main thread, electronic device 101 can perform operation 730. Based on the determination that the calling thread is not the main thread, electronic device 101 can perform operation 740.

[0175] In operation 730, electronic device 101 can decrease the count value used to identify the priority of the calling thread. For example, when the first thread is the main thread 311, scheduler 263 can decrease the priority value of the first thread by another specified value (e.g., 1).

[0176] In operation 740, electronic device 101 can increment a counter value used to identify the priority of the calling thread. For example, when the first thread is not the main thread 311, scheduler 263 can increment the priority value of the first thread by a specified value (e.g., 2).

[0177] Figure 8 This is a flowchart illustrating the operation of an electronic device.

[0178] You can refer to Figures 1 to 5 describe Figure 8 . Figure 8 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation. Figure 8 The operation can be included Figure 4 In operation 430.

[0179] Reference Figure 8 In operation 810, electronic device 101 can identify the count value of the calling process. In operation 820, electronic device 101 can determine whether the count value is greater than or equal to a reference value (e.g., 1).

[0180] Based on the determination that the count value is greater than or equal to the reference value, electronic device 101 can perform operation 830. Based on the determination that the count value is less than the reference value, electronic device 101 can perform operation 840.

[0181] In operation 830, electronic device 101 can increase the priority of the calling process.

[0182] For example, electronic device 101 can allocate a caller process to a high-performance core (e.g., a core of a large cluster) based on increasing the priority of the caller process. For example, electronic device 101 can change the core that handles the caller process to a large cluster (e.g., a first cluster 210).

[0183] For example, electronic device 101 can change the fallback core of the calling process based on increasing the priority of the calling process. For example, electronic device 101 can change the fallback core (or fallback cluster) of the calling process to a large cluster based on increasing the priority of the calling process.

[0184] For example, electronic device 101 can schedule the caller process based on increasing the priority of the caller process, so that the caller process is processed before general tasks (or CFS tasks) that are queued in the run queue (RQ) of the large cluster.

[0185] For example, electronic device 101 can schedule the calling process based on increasing the priority of the calling process, so that the calling process is processed before general tasks (or CFS tasks) that have a shorter virtual runtime compared to the virtual runtime of the calling process.

[0186] For example, electronic device 101 can adjust (or increase) the order (or waiting order) of mutex locks of the calling process for resources competed by the calling process and another process based on increasing the priority of the calling process.

[0187] In operation 840, electronic device 101 can maintain the priority of the calling process.

[0188] For example, electronic device 101 can maintain the core used to process the calling process based on the priority of maintaining the calling process. However, this is not limited to this. Electronic device 101 can change the core used to process the calling process to the core of a smaller cluster other than the large cluster (e.g., a third cluster 230 or a second cluster 220).

[0189] In operation 850, electronic device 101 can increase the operating speed of the high-performance core. For example, electronic device 101 can change the operating speed of the high-performance core to its maximum speed. Alternatively, operation 850 may not be performed.

[0190] Figure 8 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 8 The operation can be described in several ways. For example, in operation 810, electronic device 101 can identify the count value of the calling thread. For example, in operation 830, electronic device 101 can assign the calling thread to a high-performance core (e.g., the core of a large cluster). In operation 840, electronic device 101 can maintain the core used to process the calling thread.

[0191] Figure 9 This is a flowchart illustrating the operation of an electronic device.

[0192] You can refer to Figures 1 to 5 describe Figure 9 . Figure 9 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) executes this. It can be executed during operation 830. Figure 9 The operation. For example. Figure 9 The operation can be performed on the calling process of operation 830.

[0193] Reference Figure 9 In operation 910, electronic device 101 can identify a lock request for a specified resource of the calling process. For example, the requested lock could be a mutex lock for any resource (or data).

[0194] In operation 920, electronic device 101 can identify the standby state of a lock request. For example, electronic device 101 can identify that the standby state of a lock request is necessary based on the existence of at least one request for a mutex lock on any resource (or data) prior to the lock request of the calling process.

[0195] In operation 930, electronic device 101 can elevate the priority of lock requests from the calling process. Electronic device 101 can elevate the priority of lock requests from the calling process (which is a rendering process) for resources contested by both the calling process and non-rendering processes.

[0196] Figure 9 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 9 For example, in operation 910, electronic device 101 can identify a lock request for a specified resource by the calling thread. For example, in operation 930, electronic device 101 can increase the priority of the lock request by the calling thread.

[0197] Figure 10 This is a flowchart illustrating the operation of an electronic device.

[0198] You can refer to Figures 1 to 5 describe Figure 10 . Figure 10 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation. Figure 10 The operation can be included Figure 4 In operations 420 and 430.

[0199] Reference Figure 10 In operation 1001, electronic device 101 can recognize events. For example, an event may be a remote procedure call (or inter-process communication (IPC)) (e.g., a binder call).

[0200] In operation 1010, electronic device 101 can identify the identification information of the called process.

[0201] In operation 1020, electronic device 101 may determine whether the count value of the called process is greater than or equal to a reference value (e.g., 1). For example, electronic device 101 may determine whether the count value of the called process is greater than or equal to the reference value (e.g., 1) in order to determine whether the called process is a high-priority process (or rendering process).

[0202] Based on the determination that the count value of the called process is greater than or equal to the reference value, electronic device 101 can perform operation 1030. Based on the determination that the count value of the called process is less than the reference value, electronic device 101 can perform operation 1040.

[0203] In operation 1030, electronic device 101 can increase the priority of the calling process.

[0204] For example, electronic device 101 can allocate a caller process to a high-performance core based on increasing the priority of the caller process.

[0205] For example, electronic device 101 can change the fallback core (or fallback cluster) of the calling process to a large cluster based on increasing the priority of the calling process. For example, electronic device 101 can schedule the calling process based on increasing its priority, such that the calling process is processed before general tasks (or CFS tasks) queued in the run queue (RQ) of the large cluster. For example, electronic device 101 can schedule the calling process based on increasing its priority, such that the calling process is processed before general tasks (or CFS tasks) with shorter virtual runtimes compared to the calling process's virtual runtime. For example, electronic device 101 can adjust (or increase) the order (or waiting order) of the calling process's mutex locks for resources contested by the calling process and another process based on increasing its priority.

[0206] When the count of the called process is greater than or equal to a reference value, the electronic device 101 may assign the caller processes included in the associated list of the called processes to the high-performance core. Here, the number of caller processes included in the associated list may be less than or equal to a specified number (e.g., 5). For example, the associated list may include a specified number (e.g., 5) of caller processes in order of shortest loading (or virtual runtime).

[0207] In operation 1040, electronic device 101 can maintain the priority of the calling process.

[0208] For example, electronic device 101 can maintain the core used to process the calling process based on the priority of maintaining the calling process. However, this is not limited to this. Electronic device 101 can change the core used to process the calling process to the core of a smaller cluster other than the large cluster (e.g., a third cluster 230 or a second cluster 220).

[0209] Figure 10 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 10 The operation can be performed in various ways. For example, in operation 1010, electronic device 101 can identify the count value of the called thread. For example, in operation 1030, electronic device 101 can assign the called thread to a high-performance core (e.g., the core of a large cluster). In operation 1040, electronic device 101 can maintain a core used to process the calling thread.

[0210] Figure 11 This is a flowchart illustrating the operation of an electronic device.

[0211] You can refer to Figures 1 to 5 describe Figure 11 . Figure 11 The operation can be performed by Figure 1 or Figure 2 The electronic device 101 (or processor 120) performs the operation. Figure 11 The operation can be included Figure 10 In operation 1030.

[0212] Reference Figure 11 In operation 1110, electronic device 101 can identify an association list of the called process. Electronic device 101 can identify an association list of the called process that is a rendering process (i.e., a process with a priority value greater than or equal to a reference value (e.g., 1)). Here, the association list may be a list used to manage processes in order to increase the priority of the calling process that invokes the called process. Electronic device 101 can manage the association list of the rendering process.

[0213] In operation 1120, electronic device 101 may determine whether a specified condition is met. For example, the specified condition may be a condition for including a calling process in an association list. For example, the specified condition may be a condition for electronic device 101 to include a calling process in an association list based on the fact that the number of processes included in the association list is less than a specified number (e.g., 5).

[0214] For example, electronic device 101 can determine that a specified condition is met based on the fact that the number of processes included in the association list is less than a specified number (e.g., 5). For example, electronic device 101 can determine that a specified condition is not met based on the fact that the number of processes included in the association list is a specified number (e.g., 5).

[0215] Based on the determination that the specified conditions are met, electronic device 101 may perform operation 1130. Based on the determination that the specified conditions are not met, electronic device 101 may perform operation 1140.

[0216] In operation 1130, electronic device 101 may include the calling process in the association list.

[0217] For example, electronic device 101 can increase the priority of processes included in the association list. For example, electronic device 101 can increase the priority of caller processes included in the association list based on including the caller process in the association list.

[0218] In operation 1140, electronic device 101 can identify the loading (or virtual runtime) of a process. For example, electronic device 101 can identify the loading (or virtual runtime) of processes included in the association list. For example, electronic device 101 can identify the loading (or virtual runtime) of processes included in the association list and the loading (or virtual runtime) of the calling process.

[0219] In operation 1150, electronic device 101 may update the association list based on load (or virtual runtime). For example, electronic device 101 may update the association list such that it includes a specified number (e.g., 5) of processes in the order of highest load (or longest virtual runtime). For example, electronic device 101 may update the association list such that it includes a specified number (e.g., 5) of processes in the order of highest load between the load of processes included in the association list before the update and the load of the calling process.

[0220] For example, electronic device 101 can increase the priority of processes included in the association list. For example, electronic device 101 can increase the priority of caller processes included in the association list based on including the caller process in the association list.

[0221] Figure 11 The operations are described based on processes, but are not limited to this. For example, they can be executed based on threads. Figure 11 The operation involves several steps. In operation 1110, electronic device 101 can identify the associated list of the called thread. In operation 1130, electronic device 101 can include the calling thread in the associated list. In operation 1140, electronic device 101 can identify the thread's loading (or virtual runtime).

[0222] As described above, the electronic device 101 may include: a display 160; a processor 120 including a first core 221 operating in a first frequency range and a second core 231 operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range; and a memory 130 storing instructions and including one or more storage media. When executed individually or jointly by at least one processor 120, the instructions may cause the electronic device 101 to identify a request from a first process among at least one process of application 241. When executed individually or jointly by at least one processor 120, the instructions may cause the electronic device 101 to associate the process indicated by the request with a second process for outputting an image to the display 160, changing the core used to process the first process to the first core 221 among the first core 221 and the second core 231. When executed individually or jointly by at least one processor 120, the instructions may cause the electronic device 101 to associate the process with a third process different from the second process, while maintaining the core used to process the first process.

[0223] When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101 to identify resources allocated to the first process. When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101 to change the core used to process the first process to a first core 221 based on the identification that the identified resources are included in the resources of application 241 for top-level activities. When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101 to maintain the core used to process the first process based on the identification that the identified resources are included in resources other than those of application 241 for top-level activities.

[0224] When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101 to identify the thread of the first process that generated the request. When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101, based on the identification that the thread is a thread other than the main thread of the first process, to change the core of the thread used to process the first process to a first core 221. When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101, based on the identification that the thread is the main thread of the first process, to maintain the core of the thread used to process the first process.

[0225] The request may be a request for communication between the first process and the process. When executed individually or jointly by at least one processor 120, the instruction may cause electronic device 101 to send at least a portion of the information included in the request to scheduler 263 via binder driver 261. When executed individually or jointly by at least one processor 120, the instruction may cause electronic device 101 to determine, via scheduler 263, whether the identified process is related to the second process based on at least a portion of the information.

[0226] The request can be a binder call. A binder call can be an application programming interface (API) provided by binder for sharing data between a first process and said processes in separate memory regions 130 that are respectively allocated memory 130.

[0227] When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101 to identify one or more processes that invoke the first process based on the association between the process and the second process. When executed individually or jointly by at least one processor 120, the instructions can cause electronic device 101 to change the core used to process one or more processes to the first core 221.

[0228] When the instructions are executed individually or jointly by at least one processor 120, the electronic device 101 may assign the first core 221 as a fallback core of the first process based on the association between the process and the second process.

[0229] When the instructions are executed individually or jointly by at least one processor 120, the electronic device 101 may associate the first process with the second process based on the process, thereby giving priority to the first process over multiple processes waiting in a queue associated with the first core 221.

[0230] When the instructions are executed individually or jointly by at least one processor 120, the electronic device 101 may increase the operating frequency of the first core 221 within a first frequency range by changing the core used to process the first process to the first core 221.

[0231] When executed individually or jointly by at least one processor 120, the instruction can cause the electronic device 101 to increase the priority of the mutex lock of the first process for a specified resource based on the association of the process with the second process.

[0232] The second process can be a process used to compose at least one image stored in the frame buffer of a SurfaceFlinger.

[0233] As described above, a method can be operated in an electronic device 101 including a display 160 and a processor 120, the processor including a first core 221 operating in a first frequency range and a second core 231 operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range. The method may include identifying a request for a first process among at least one process of application 241. The method may include changing the core used to process the first process to the first core 221 of the first core 221 and the second core 231 based on the process indicated by the request being associated with a second process for outputting an image to the display 160. The method may include maintaining the core used to process the first process based on the process being associated with a third process different from the second process.

[0234] The method may include identifying resources allocated to a first process. The method may include changing the core used to process the first process to a first core 221 based on the identification that the identified resources are included in the resources of application 241 used for top-level activities. The method may also include maintaining the core used to process the first process based on the identification that the identified resources are included in resources other than those of application 241 used for top-level activities.

[0235] This method may include identifying the thread of the first process that generated the request. This method may include, based on the identification that the thread is a thread other than the main thread of the first process, changing the core of the thread used to process the first process to a first core 221. This method may also include: based on the identification that the thread is the main thread of the first process, maintaining the core of the thread used to process the first process.

[0236] The request may be a request for communication between a first process and the second process. The method may include sending at least a portion of the information included in the request to a scheduler 263 via a binder driver 261. The method may include the scheduler 263 determining, based on at least a portion of the information, whether the identified process is related to a second process.

[0237] The request can be a binder call. A binder call can be an application programming interface (API) provided by binder for sharing data between a first process and said processes in separate memory regions 130 that are respectively allocated memory 130.

[0238] The method may include identifying one or more processes that call the first process based on the association between the process and the second process. The method may also include changing the core used to process one or more processes to the first core 221.

[0239] The method may include allocating the first core 221 as a fallback core of the first process based on the association between the process and the second process.

[0240] The second process can be a process used to compose at least one image stored in the frame buffer of a SurfaceFlinger.

[0241] As described above, a non-transitory computer-readable storage medium can store one or more programs including instructions. When executed by the processor 120 of an electronic device 101 including a display 160 and a processor 120, the instructions can be configured to cause the electronic device 101 to recognize a request for a first process among at least one process of application 241, the processor including a first core 221 operating in a first frequency range and a second core 231 operating in a second frequency range, the second frequency range having a second maximum frequency lower than a first maximum frequency of the first frequency range. When executed individually or jointly by at least one processor 120, the instructions can cause the electronic device 101 to associate with a second process for outputting an image to the display 160 based on the process indicated by the request, changing the core used for processing the first process to the first core 221 of the first core 221 and the second core 231. When executed individually or jointly by at least one processor 120, the instructions can cause the electronic device 101 to associate with a third process different from the second process based on the process, maintaining the core used for processing the first process.

[0242] The electronic device according to various embodiments can be one of a variety of types of electronic devices. The electronic device may include, for example, a portable communication device (e.g., a smartphone), a computer device, a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance. The electronic device is not limited to those described above.

[0243] It should be understood that the various embodiments of this disclosure and the terminology used therein are not intended to limit the technical features set forth herein to the specific embodiments, but rather to include various changes, equivalents, or substitutions to the respective embodiments. In the description of the drawings, similar reference numerals may be used to refer to similar or related elements. It will be understood that the singular form of a noun corresponding to an item may include one or more things unless the relevant context clearly indicates otherwise. As used herein, each of the phrases such as “A or B,” “at least one of A and B,” “at least one of A or B,” “A, B, or C,” “at least one of A, B, and C,” and “at least one of A, B, or C” may include any one or all possible combinations of the items enumerated together with the corresponding phrase among the plurality of phrases. As used herein, terms such as “first” and “second” or “first” and “second” may be used to simply distinguish one component from another and do not limit the components in other respects (e.g., importance or order). It will be understood that, whether the terms “operably” or “communically” are used or not, if an element (e.g., a first element) is referred to as being “coupled” or “connected” to another element (e.g., a second element), it means that the element can be directly (e.g., wiredly) coupled to the other element, wirelessly connected to the other element, or coupled to the other element via a third element.

[0244] As used in connection with various embodiments of this disclosure, the term "module" may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with other terms such as "logic," "logic block," "part," or "circuit." A module may be a single integrated component adapted to perform one or more functions, or the smallest unit or part of such a single integrated component. For example, a module may be implemented in the form of an application-specific integrated circuit (ASIC).

[0245] The various embodiments set forth herein can be implemented as software (e.g., program 140) containing one or more instructions readable by a machine (e.g., electronic device 101) stored in a storage medium (e.g., internal memory 136 or external memory 138). For example, under the control of a processor (e.g., processor 120) of the machine (e.g., electronic device 101), the processor can invoke and execute at least one instruction from one or more instructions stored in the storage medium, with or without the use of one or more other components. This enables the machine to operate to perform at least one function according to the invoked at least one instruction. The one or more instructions may include code generated by a compiler or code that can be executed by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. The term "non-transitory" means only that the storage medium is a tangible device and does not include signals (e.g., electromagnetic waves), but this term does not distinguish between cases where data is stored semi-permanently in the storage medium and cases where data is temporarily stored in the storage medium.

[0246] Methods according to various embodiments of this disclosure can be included and provided in computer program products. The computer program products can be traded as products between sellers and buyers. The computer program products can be distributed in the form of machine-readable storage media (e.g., compact disk read-only memory (CD-ROM)) or via app stores (e.g., the Play Store). TM The computer program product may be distributed online (e.g., downloaded or uploaded), or may be distributed directly between two user devices (e.g., smartphones) (e.g., downloaded or uploaded). If it is distributed online, at least a portion of the computer program product may be temporarily generated, or at least a portion of the computer program product may be temporarily stored in a machine-readable storage medium (such as the memory of a manufacturer's server, an app store's server, or a forwarding server).

[0247] According to various embodiments, each of the above-described components (e.g., a module or program) may include a single entity or multiple entities, and some of the multiple entities may be separately disposed in different components. According to various embodiments, one or more of the above-described components may be omitted, or one or more other components may be added. Optionally or additionally, multiple components (e.g., modules or programs) may be integrated into a single component. In this case, according to various embodiments, the integrated component may still perform one or more functions of each of the multiple components in the same or similar manner as the corresponding component of the multiple components performed one or more functions before integration. According to various embodiments, the operations performed by a module, program, or other component may be performed sequentially, in parallel, repeatedly, or heuristically, or one or more operations may be run in a different order or omitted, or one or more other operations may be added.

Claims

1. An electronic device (101), the electronic device comprising: Display (160); The processor (120) includes a first core (221) operating in a first frequency range and a second core (231) operating in a second frequency range, the second frequency range having a maximum frequency that is smaller than the maximum frequency of the first frequency range; as well as Memory (130), the memory storing instructions, when executed, cause the electronic device to: The request from the first process (310) of the identification application (241) is recognized. Based on the association between the process indicated by the request and the process for outputting images to the display (160), the first process is assigned to the first core for processing, and Based on the fact that the process indicated by the request is related to a process other than the process used to output images to the display, the core currently allocated to the first process is maintained as the core used to process the first process.

2. The electronic device according to claim 1, in, The instruction causes the electronic device to: Identify the resources allocated to the first process (310), Based on the identified resources being included in the resources of the application (241) with top-level activities across multiple applications, the first process is assigned to the first core for processing, and Based on the fact that the identified resources are included in resources other than those used for the application (241) having the top-level activity, the core currently allocated to the first process is maintained as the core for processing the first process.

3. The electronic device according to claim 1 or 2, in, The instruction causes the electronic device to: Identify the thread of the first process (310) that generated the request. Based on the identification that the thread is a thread other than the main thread of the first process, the thread of the first process is assigned to the first core for processing, and Based on the identification that the thread is the main thread of the first process, the core of the thread currently allocated to the first process is maintained as the core of the thread used to process the first process.

4. The electronic device according to claim 1, 2 or 3, in, The request is a request for communication between the first process and the process indicated by the request, and The instruction causes the electronic device to: At least a portion of the information included in the request is sent to the scheduler (263) via the binder driver (261), and The scheduler (263) determines, based on at least a portion of the information, whether the indicated process is related to the process used to output an image to the display.

5. The electronic device according to claim 4, in, The request is a binder call, and The binder call is an application programming interface (API) provided by the binder for sharing data between the first process and the process indicated by the request, which are respectively allocated independent memory (130) regions of the memory (130).

6. The electronic device according to any one of the preceding claims, in, The instruction causes the electronic device to: Based on the association between the process indicated by the request and the process used to output an image to the display, one or more processes that invoke the first process are identified, and Assign one or more processes to the first core (221).

7. The electronic device according to any one of the preceding claims, in, The instruction causes the electronic device to: Based on the fact that the process indicated by the request is associated with the process for outputting an image to the display, the first core (221) is assigned as the fallback core of the first process.

8. The electronic device according to any one of the preceding claims, in, The instruction causes the electronic device to: Based on the association between the process indicated by the request and the process for outputting an image to the display, the first process is given priority over multiple processes waiting in a queue associated with the first core (221).

9. The electronic device according to any one of the preceding claims, in, The instruction causes the electronic device to: Based on changing the core used to process the first process to the first core (221), the operating frequency of the first core (221) is increased within the first frequency range.

10. The electronic device according to any one of the preceding claims, in, The instruction causes the electronic device to: Based on the fact that the process indicated by the request is associated with the process used to output an image to the display, the priority of the first process's mutex lock for the specified resource is increased.

11. The electronic device according to any one of the preceding claims, in, The process for outputting images to the display is a SurfaceFlinger process for composing at least one image stored in the frame buffer.

12. A method of operating in an electronic device (101) including a display (160) and a processor (120), the processor including a first core (221) operating in a first frequency range and a second core (231) operating in a second frequency range having a maximum frequency smaller than the maximum frequency of the first frequency range, the method comprising: Identify the request from the first process (310) of the application. Based on the association between the process indicated by the request and the process for outputting images to the display, the first process is assigned to the first core for processing, and Based on the fact that the process indicated by the request is related to a process other than the process used to output images to the display, the core currently allocated to the first process is maintained as the core used to process the first process.

13. The method according to claim 12, wherein the method comprises: Identify the resources allocated to the first process. Based on the identification that the identified resources are included in the resources of the application with top-level activities used in multiple applications, the first process is assigned to the first core for processing, and Based on the fact that the identified resources are included in resources other than those used for the application having the top-level activity, the core currently allocated to the first process is maintained as the core for processing the first process.

14. The method according to claim 12, wherein the method comprises: Identify the thread of the first process that generated the request. Based on the identification that the thread is a thread other than the main thread of the first process, the thread of the first process is assigned to the first core for processing, and Based on the identification that the thread is the main thread of the first process, the core of the main thread currently allocated to the first process is maintained for processing the thread of the first process.

15. A computer program, which, when run by a processor, is configured to perform the method according to any one of claims 12 to 14.