Image forming device, control method thereof, and storage medium

By adopting container technology in the image forming device, the application is allocated as an independent execution environment and the container startup status is managed, and the problem of response delay in virtualization technology in embedded devices is solved, and efficient utilization of hardware resources and real-time response is achieved.

CN113542517BActive Publication Date: 2024-12-27CANON KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202110372497.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-04-14
Filing Date
2021-04-07
Publication Date
2024-12-27
Estimated Expiration
2041-04-07

AI Technical Summary

Technical Problem

In image forming devices, diversified demands lead to an increase in hardware resource demands. The existing virtualization technology has shortcomings in ensuring real-time responses, especially in embedded devices with limited resources, where the virtual machine transitions the state for a long time, affecting users Experience.

Method used

Using container technology, the application in the image forming device is allocated as an execution environment independent of the operating system. The startup state of the container is managed through the control unit to ensure that the view and controller are always in the startup state, and the model part is started as needed to realize the resource Efficient utilization and real-time response.

Benefits of technology

Effectively utilize hardware resources, reduce the waiting time for user operations, improve response speed, and is suitable for embedded devices with limited resources to ensure the real-timeness of user operations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113542517B_ABST
    Figure CN113542517B_ABST
Patent Text Reader

Abstract

The present invention discloses an image forming device, a control method thereof and a storage medium. The present invention provides an image forming device, comprising: at least one first module configured to accept requests for functions respectively corresponding to the at least one first module via a user interface; at least one second module configured to execute functions respectively corresponding to the at least one first module; a first control unit configured to notify the corresponding second module of the request accepted by the at least one first module; and a second control unit configured to control the corresponding second module according to the notification from the first control unit, wherein, starting from when the image forming device is started, the at least one first module is always started, and the at least one second module is generated as a container of an execution environment independent of an operating system, and the startup state of the container is controlled by instructions from the second control unit.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to an image forming device that uses container technology to manage resources used by applications in the device, a control method thereof, and a storage medium. Background Art

[0002] As the demands related to image forming devices diversify, the applications required in the devices are also increasing. When the number of applications in the device increases, more hardware resources such as CPU resources, memory resources, and storage resources are required, and thus the hardware cost is also increasing. In these cases, methods that can effectively use the hardware resources provided in the image forming device are needed to meet the diversified demands. In recent years, in the server field, technologies for effectively using hardware resources through virtualization technology and container technology are becoming popular. Virtualization technology is a technology in which a logical device is built on a host OS running on a physical device, and then a client OS used to operate services and applications on the logical device is operated. At the same time, container technology is a technology in which certain resources of the host OS operating on a physical device are allocated to an independent execution environment (container), and then services and applications are operated. Both aim to effectively use limited hardware resources by dynamically allocating hardware resources when operating various services and applications.

[0003] For example, in Japanese Patent Publication No. 2018-129003, a technology for effectively utilizing the hardware resources of an embedded device using virtualization technology is proposed. In particular, a technology is proposed in which, in response to a request from a user (terminal device), a user allocation unit allocates processing related to the corresponding request to one or more virtual machines VM (Virtual Machine). The virtual machine VM is converted to a standby state in advance after startup, and is converted to an operating state at the timing of accepting a request, thereby reducing the time from receiving a request to starting processing.

[0004] However, as described below, there are problems in the aforementioned conventional technology. In order to effectively utilize resources in the face of diverse needs, it is possible to consider providing container technology in embedded devices. However, in an image forming device with a user interface, it is necessary to ensure real-time response. For example, in the above-mentioned conventional technology, the application running on the virtual machine VM also includes the function of providing a user interface. In other words, even in order to simply display a setting screen, a confirmation screen, etc. to the user, it is necessary to transform the virtual machine VM into an operating state and then operate the application that provides the screen. Therefore, in the case of applying this technology to an embedded device with very limited resources, the waiting time is more than a little bit during the period from requesting to display a screen to actually displaying the screen. Summary of the invention

[0005] The present invention enables realization of a mechanism for appropriately applying container technology to embedded devices, and in addition to effectively using hardware resources, can ensure responsiveness to user operations.

[0006] According to one aspect of the present invention, there is provided an image forming device providing at least one function, the image forming device comprising: at least one first module configured to accept requests for respectively corresponding functions via a user interface; at least one second module configured to execute functions respectively corresponding to the at least one first module; a first control unit configured to notify the corresponding second module of the request accepted by the at least one first module; and a second control unit configured to control the corresponding second module according to the notification from the first control unit, wherein the at least one first module is always started from the time the image forming device is started, and the at least one second module is generated as a container independent of the execution environment of the operating system, and its startup state is controlled by instructions from the second control unit.

[0007] Another aspect of the present invention provides a method for controlling: at least one first module configured to accept requests for respectively corresponding functions via a user interface, at least one second module configured to execute functions respectively corresponding to the at least one first module, and an image forming device, the method comprising: a first control to notify the corresponding second module of the request accepted by the at least one first module; and a second control to control the corresponding second module based on the notification from the first control unit, wherein, starting from when the image forming device is started, the at least one first module is always started, and the at least one second module is generated as a container independent of the execution environment of the operating system, and its startup state is controlled by instructions from the second control unit.

[0008] According to another aspect of the present invention, a non-transitory computer-readable storage medium is provided, storing a computer program for causing a computer to execute each process in a method for controlling: at least one first module configured to accept requests for respectively corresponding functions via a user interface, at least one second module configured to execute functions respectively corresponding to the at least one first module, and an image forming device, the method comprising: a first control to notify the corresponding second module of the request accepted by the at least one first module; and a second control to control the corresponding second module based on the notification from the first control unit, wherein the at least one first module is always started starting from when the image forming device is started, and the at least one second module is generated as a container independent of the execution environment of the operating system, and its startup state is controlled by instructions from the second control unit.

[0009] Further features of the present invention will become apparent from the following detailed description of exemplary embodiments with reference to the attached drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] Figure 1 is a diagram showing a hardware configuration of the image forming apparatus 100 according to the embodiment.

[0011] Figure 2 is a view showing a software configuration of the image forming apparatus 100 according to the embodiment.

[0012] Figure 3 is a view showing an example of a control command / control response format according to an embodiment.

[0013] Figure 4A and Figure 4B is a view showing an example of definition of a control command and a control response identifier according to an embodiment.

[0014] Figure 5 is a view showing the flow of container control by the device / job control unit 211 according to the embodiment.

[0015] Figure 6 5 is a view showing an example of a Dockerfile 512 and a container management information DB 501 which are referred to at the time of container control according to the embodiment.

[0016] Figure 7 : is a view showing the flow of application control by the device / job control unit 211 according to the embodiment.

[0017] Fig. 8A and Figure 8B is a flowchart of the device / job control unit 211 according to the embodiment.

[0018] Fig.9A and Fig. 9B is a flowchart of the temporary receiving units 212 to 215 according to the embodiment.

[0019] FIG. 10A to FIG. 10C is a flowchart of the container control unit 221 according to the embodiment. DETAILED DESCRIPTION

[0020] Hereinafter, the embodiments will be described in detail with reference to the accompanying drawings. Note that the following embodiments are not intended to limit the scope of the claimed invention. A plurality of features are described in the embodiments, but the invention requiring all such features is not limited, and a plurality of such features may be appropriately combined. In addition, in the accompanying drawings, the same reference numerals are assigned to the same or similar configurations, and redundant descriptions are omitted.

[0021] <Hardware Configuration of Image Forming Apparatus>

[0022] Hereinafter, embodiments of the present invention will be described. Figure 1 The hardware configuration of the image forming apparatus 100 according to the present embodiment is described.

[0023] The image forming apparatus 100 is connected to the PC 151. The image forming apparatus 100 can accept operation instructions from the user via the PC 151. In addition, the image forming apparatus 100 can be connected to a USB device such as a USB medium 152, and can communicate with the connected USB device. The image forming apparatus 100 is connected to a network device such as a NW HUB 153. For example, a configuration can be made so that the image forming apparatus 100 is directly network-connected to the PC 151. Alternatively, the image forming apparatus 100 can adopt a configuration in which a network connection is indirectly performed through various network devices such as routers and switches.

[0024] The image forming apparatus 100 includes a controller substrate 110, a power switch 130, an operation unit 131, a printer unit 132, a scanner unit 133, and a fax unit 134. The image forming apparatus 100 has a function of communicating with devices existing outside the main body via a PC 151, a USB medium 152, an NWHUB 153, a fax circuit 154, and the like. The controller substrate 110 is a controller board for controlling the image forming apparatus 100. The controller substrate 110 includes a CPU 111, a ROM 112, a RAM 113, and an internal memory 114. In addition, in order to communicate with units and the like within the image forming apparatus 100, the controller substrate 110 includes an operation unit I / F 121, a printer unit I / F 122, a scanner unit I / F 123, and a fax unit I / F 124. In addition, in order to communicate with the outside of the image forming apparatus 100 , the controller substrate 110 includes a USB-D I / F 141 , a USB-H I / F 142 , and a LAN I / F 143 .

[0025] The CPU 111 is a central computing processor for providing various functions of the image forming apparatus 100. The CPU 111 expands programs stored in the ROM 112 and the internal memory 114 and data related to the programs in the RAM 113, and provides various functions of the image forming apparatus 100 to the user by executing the corresponding programs. The ROM 112 is a storage area in which an initialization program executed by the CPU 111 when the power switch 130 is pressed and power is supplied to the controller substrate 110 is stored. The initialization program includes a series of processes for making various devices on the controller substrate 110 (such as the RAM 113 and the internal memory 114 described later) usable.

[0026] RAM 113 is a storage area for temporarily storing programs executed by CPU 111 and data used by the programs. Although the speed of RAM 113 enables faster access compared to internal memory 114 described later, its capacity is a small fraction of internal memory 114. Therefore, in some cases, RAM 113 is used as a disk cache for temporarily storing access related to internal memory 114. Internal memory 114 is a storage area for storing programs that provide functions for image forming apparatus 100 and data used by the programs. Regarding internal memory 114, when compared to RAM 113, although its capacity is very large, its access speed is a small fraction of the speed of RAM 113. Therefore, in some cases, when the memory used by the program is insufficient, internal memory 114 is temporarily used as an alternative area of ​​memory (swap area).

[0027] The operation unit I / F 121 is an interface for communicating with the power switch 130 and the operation unit 131. The printer unit I / F 122 is an interface for communicating with the printer unit 132. The scanner unit I / F 123 is an interface for communicating with the scanner unit 133. The fax unit I / F 124 is an interface for communicating with the fax unit 134. The USB-D I / F 141 is an interface for communicating with the PC 151. The USB-H I / F 142 is an interface for communicating with various USB devices. Figure 1 , an example of performing connection with the USB medium 152 is shown. The LAN I / F 143 is an interface for communicating with an external device using a wired network. Figure 1 , an example is shown in which connection is performed with the NW HUB 153 and then an indirect connection is performed with an external device (not shown) connected thereto.

[0028] The power switch 130 is a unit for instructing to supply power to the image forming apparatus 100, cut off the power supply, etc. The power switch 130 may be, for example, an interactive conversion switch. Alternatively, the power switch 130 may be a tactile switch. In addition, it may be configured so that the power switch 130 is used as an event trigger for entering or returning from a power off mode for high-speed return to be described later.

[0029] The operation unit 131 is a unit for accepting instructions from a user related to the image forming apparatus 100 and notifying information and warnings related to the user. For example, it can be configured so that the operation unit 131 includes an LCD panel for notifying information using an image. It can be configured so that the operation unit 131 includes a buzzer for notifying information using sound. It can be configured so that the operation unit 131 includes an LED for notifying information using light. In addition, it can be configured so that the operation unit 131 includes a physical key or a touch panel for accepting user instructions. In addition, it can be configured so that the operation unit 131 includes a camera for accepting gesture input, etc.

[0030] The printer unit 132 is a unit of the image forming apparatus 100 for printing information on a physical sheet based on a user instruction. In implementing the present invention, in the printer unit 132, a unit having various printing functions can be applied. Regarding the various printing functions, for example, color / monochrome printing, single-sided / double-sided printing, binding / stapleless binding, etc. are included. In the printer unit 132, the output medium to be printed is not limited to conventional sheets, and media such as films can be targeted. In the printer unit 132, regarding the coloring material used when printing, not only toner but also ink and the like can be used. Alternatively, the present invention can also be applied to an image forming apparatus including a printer unit that outputs a three-dimensional object.

[0031] The scanner unit 133 is a unit for the image forming apparatus 100 to read information printed on a physical sheet based on a user instruction. In implementing the present invention, in the scanner unit 133, units having various reading functions can be applied. Examples: automatic duplex scanning / single-pass duplex scanning / color scanning.

[0032] Fax unit 134 is a unit for transmitting image data stored in image forming apparatus 100 to an external device via facsimile circuit 154 based on a user instruction. Also, facsimile unit 134 is a unit for image forming apparatus 100 to receive image data transmitted from an external device via facsimile circuit 154.

[0033] <Software Configuration>

[0034] Next, refer to Figure 2 The software configuration of the image forming apparatus 100 according to the present embodiment is described. The CPU 111 on the controller substrate 110 develops the main body firmware 200 stored in the internal memory 114 on the RAM 113 and executes functions according to the contents of the main body firmware 200 .

[0035] The main body firmware 200 includes an operation unit control unit 201, a device / job control unit 211, and a container control unit 221. In addition, the main body firmware 200 includes a USB-D control unit 207, a USB-H control unit 208, and a LAN control unit 209. The operation unit control unit 201 is a control module (first module) that performs control of UI application units 202 to 205. Among the UI application units, for example, a copy UI application unit 202 for providing a copy function is included. In addition, among the UI application units, a send UI application unit 203, a fax UI application unit 204, a web browser UI application unit 205, and a USBDIRECT UI application unit 206 are included.

[0036] The copy UI application unit 202 is an application operation unit related to the copy function for copying the image data scanned by the scanner unit 133 by the printer unit 132 based on the instruction from the user via the operation unit control unit 201. The copy UI application unit 202 has the following functions: specifying the number of copies, specifying double-sided printing, selecting whether there is binding, etc., and displaying and controlling the setting screen for performing the settings. The sending UI application unit 203 is an application operation unit related to the scanning function for sending the image data scanned by the scanner unit 133 to an external device via the LAN control unit 209 based on the instruction from the user. The sending UI application unit 203 has a function of specifying a sending destination, etc. The fax UI application unit 204 is an application operation unit related to the fax function for sending the image data scanned by the scanner unit 133 to an external device via the fax unit control unit 282 based on the instruction from the user. In addition, in the case of sending image data from an external device to the fax unit control unit 282, the fax UI application unit 204 has a function of displaying or printing its content through the printer unit 132. The Web browser UI application unit 205 is an application operation unit related to the following functions: displaying a Web page obtained from an external device via the LAN control unit 209 to the user and accepting operations related to the content on the corresponding Web page. The USB Direct UI application unit 206 is an application operation unit related to the following function: reading print data recorded in an external USB device via the USB-D control unit 207 and printed by the printer unit 132 according to the user's instructions. In the present invention, it is configured so that the application operation units 202 to 205 can be started and operated independently of the respective application execution units 241 to 244. In other words, in the present embodiment, with respect to each application that realizes each function provided by the image forming apparatus 100, it can be configured so that an application operation unit for controlling the UI and an execution unit for executing each function are independently provided.

[0037] The device / job control unit 211 is a control module (first control unit) for controlling the entire image forming apparatus 100. In the present embodiment, the device / job control unit 211 is responsible for the role of transmitting instructions to the various job temporary receiving units 212 to 215 and the fax job receiving unit 216 based on the instructions from the various UI application units 202 to 206. In addition, in the present embodiment, the device / job control unit 211 can also accept instructions from the PC 151 via the USB-D control unit 207 and the USB-D I / F 141. In addition, in the present embodiment, the device / job control unit 211 can also accept instructions from an external device (not shown) such as the NW HUB 153 via the LAN control unit 209 and the LAN I / F 143. Note that in some cases, the device / job control unit 211 transmits instructions related to non-containerized applications to the job receiving unit. For example, processing related to fax is transmitted to the fax job receiving unit 216. The fax job receiving unit 216 transmits the instructions to the fax job execution unit 281, which then executes them. Since the fax job receiving unit 216 is required to constantly operate when the image forming apparatus 100 is operating for the processing related to the transmission / reception of faxes, a form is adopted so that it is not operated in a container but directly operated. Therefore, with the present embodiment, the container technology is not uniformly applied to all functions, but is applied according to the characteristics of the functions provided by the image forming apparatus 100.

[0038] The container control unit 221 is a control module (second control unit) that performs control of the containers 222 to 225 (second modules). For example, the main body firmware 200 includes a copy container 222 for executing a copy function. The copy container 222 is generated as a container (second module) independent of the execution environment of the operating system of the image forming apparatus 100, and includes a copy job main receiving unit 231 for accepting an instruction from the copy job temporary receiving unit 212 and a copy job executing unit 241 for executing the accepted instruction. The copy job executing unit 241 executes a print instruction to the printer unit 132 via the printer unit control unit 271 and the printer unit I / F 122. Similarly, the copy job executing unit 241 executes an image scanning instruction to the scanner unit 133 via the scanner unit control unit 272 and the scanner unit I / F 123.

[0039] In addition, the main body firmware 200 includes a send container 223 for executing a send function, a PDL container 224 for executing a PDL function, and a Web browser container 225 for executing a Web browser function. The send container 223 includes a send job master receiving unit 232 for accepting an instruction from the send job temporary receiving unit 213 and a send job executing unit 242 for executing the accepted instruction. The PDL container 224 includes a PDL job master receiving unit 233 for accepting an instruction from the PDL job temporary receiving unit 214 and a PDL job executing unit 243 for executing the accepted instruction. The Web browser container 225 includes a Web browser job master receiving unit 234 for accepting an instruction from the Web browser job temporary receiving unit 215 and a Web browser job executing unit 244 for executing the accepted instruction.

[0040] Furthermore, the main body firmware 200 includes a printer unit control unit 271, a scanner unit control unit 272, and a fax unit control unit 282. These are modules for controlling the respective units.

[0041] <Control Command / Control Response>

[0042] Next, we will refer to Figure 3 An example of a control command / control response format according to an embodiment is described. In this embodiment, for ease of explanation, a control command indicating a request to execute control and a control response indicating a result of executed control that circulate inside / outside a subject are represented in the same format. However, there is no intention to limit the present invention, and various contents may be adopted with respect to the format and content of the corresponding control command / control response. Note that in this embodiment, with respect to the control command / control response, it is assumed that data is located in the order of the network byte order.

[0043] The control command version located at +0h indicates the version of the control command and control response of the corresponding data. Here, it is assumed to be 0xC0CaFF01. This can be used to determine whether the control command received by the image forming apparatus 100 is a supported version.

[0044] The control command / control response identifier located at +4h is an identifier indicating the content of the current control command / control response. Both the control command identifier / control response identifier are represented by up to 32 bits of data. Note that in this embodiment, considering future scalability, the upper 16 bits / 2 bytes are set as reserved, and the data represented by the lower 16 bits / 2 bytes is used. Figure 4A and 4B Describe the control command identifier / control response identifier in detail.

[0045] The user identifier located starting at +8h is an identifier indicating a transmission / reception destination that receives a control response as a result of having transmitted a corresponding control command. For example, the user identifier is an identifier that can identify which application or module is inside / outside the device.

[0046] The unique data length of the control command / control response positioned to start at +10h and the unique data body part of the control command / control response positioned to start at +18h are information for expressing information that cannot be fully represented by the control command / control response identifier. Since the control command is used for various purposes and intended uses, it is difficult to define a format that can be used universally in all control commands / control responses. Therefore, in the present embodiment, a form is adopted to transmit the data length and body part (content) of the unique data of the corresponding control command / control response that can be transmitted based on the control command identifier.

[0047] <Control Command>

[0048] In the following, reference will be made to FIG. 4A to FIG. 7 Various control commands processed by the device / job control unit 211 will be described. Figure 4A and Figure 4B An example of control command / control response identifier definition according to an embodiment is described. The control command identifier includes a low-order byte expressing a target option for identifying a module to be targeted, and a high-order byte expressing a control command type for identifying what type of instruction is to be given relative to the corresponding target module.

[0049] (Target Options)

[0050] The target option is information expressing each application that is the target of the instruction. For example, CC-TARGET_COPY (0x10) is assigned to instructions related to the copy application. For example, CC_TARGET_SEND (0x20) is assigned to instructions related to the send application. CC_TARGET_PDL (0x30) is assigned to instructions related to the PDL application. CC_TARGET_WEBBROW (0x40) is assigned to the web browser application. CC_TARGET_FAX (0x50) is assigned to the fax application. In this embodiment, on the image forming device 100, in addition to these pre-installed applications, applications arbitrarily installed by the user can also be targeted. For example, in this embodiment, a range of 0x80 to 0xFE is assigned to the user application, and the desired value can be assigned at the time of installation. In addition, regarding the instructions of the device body, CC_TARGET_DEVICE (0xFF) is assigned. In addition, the target option can be extended to indicate external options such as feeders contained in the device.

[0051] The control command types include a control command identifier related to a receiving unit, a control command identifier related to a container, a control command identifier related to an application, and a control command identifier related to a device. In addition, the control response identifier is divided into a general control response identifier and a container status control response identifier.

[0052] (Receive unit control command)

[0053] The control command identifiers related to the receiving unit start from 0xF0 to 0xFF. In this embodiment, the receiving unit startup instruction (CC_RECEPTOR_CMD_START, 0xF000) represents the startup instruction related to the receiving unit. For example, since it is the OR of CC-TARGET_COPY and CC_RECEPTOR_CMD_START, the command identifier 0xF010 is a control command identifier representing the startup of the receiving unit of the copy application.

[0054] (Container control commands)

[0055] The control command identifiers associated with containers start from 0xC0 to 0xCF. Figure 5 and Figure 6 Describe its details. Figure 5 , the process of container control performed by the device / job control unit 211 will be described. In this embodiment, the process of using library as an example of a container control library. Note that Figure 5 The configuration shown in FIG. 1 shows a software configuration included in the image forming apparatus 100 according to the present embodiment ( Figure 2 ) and configurations not relevant to the following description are omitted.

[0056] A case where a control command whose control command identifier is 0xC010 is sent from the inside / outside of the device to the device / job control unit 211 will be described. Since the lower byte of the target option expressing the corresponding control command identifier is 0x10, the device / job control unit 211 determines that a control command related to the copy application is received. Then, the device / job control unit 211 notifies the copy job temporary receiving unit 212 of the corresponding control command. Since the corresponding control command identifier starts from 0xC0, the copy job temporary receiving unit 212 determines that the control command executes the container generation instruction, and notifies the container control unit 221 of the corresponding control command.

[0057] The container control unit 221 determines from the control command identifier that the container generation instruction is related to the copy application. The container control unit 221 refers to the corresponding container management information DB 501, selects the corresponding Dockerfile from the Dockerfile 512, and then executes the container generation instruction related to the Docker engine 511. As a result, the Docker engine 511 generates the copy container 222.

[0058] Here, we will refer to Figure 6 The Dockerfile 512 and the container management information DB 501 used in this embodiment are supplementally described. Figure 6 This is an example of the container management information 600 stored in the Dockerfile 512 and the container management information DB 501 that is referred to when controlling the container. Figure 6 The Dockerfile 512 shown in FIG. 5 is a Dockerfile that defines a container for a copy application. Lines beginning with "#" are comment lines for convenience of description.

[0059] FROM in the fourth line indicates that the Docker image when generating the container is appimage:1.0 (504) on the private registry 513. In this embodiment, the description is made assuming that the Docker image to be the basis of each container is maintained within the image forming apparatus 100. Note that in the embodiment of the present invention, this limitation is not made, and, for example, a configuration may be made to refer to a registry of another image forming apparatus or to refer to a public registry that is disclosed.

[0060] RUN in line 6 indicates that a working directory / var / copy is generated as a command to be executed when generating a container. In addition, WORKDIR in line 8 indicates that a working directory is moved to / var / copy as a command to be executed when generating a container. RUN in line 10 indicates that a pkg-manager command is executed together with the parameters "install" and "copyserver" as a command to be executed when generating a container. Thus, by executing the pkg-manager command on the copy container 222, the copy server application is installed on the package repository 552 via the package manager 551. Note that each container can be implemented as an independent storage, and each container can also be expressed, for example, using a file system that only records update differences from the base image and expresses these differences in a transparent manner.

[0061] EXPOSE in line 12 indicates that the port number released for receiving control commands on the container is 20001. CMD in line 15 indicates that " / apps / copyserver" is executed when operating the container. STOPSIGNAL in line 18 indicates that the signal SIGTERM is notified to the program started by CMD when the container ends. In this way, the program can detect the end of the container.

[0062] Although the description of Dockerfile is given here using the example of the copy container 222 for the copy application, this is also applicable to other applications and containers. For the convenience of description, the description of other applications will be omitted.

[0063] Reference numeral 600 is container management information managed by the container management information DB 501. Here, for ease of description, the name DB, i.e., database, is used. If information related to the corresponding container can be managed accordingly, it is possible to configure so that the corresponding information is managed using something other than a relational database. For example, a simple text file can be used as a management format. Reference numeral 601 represents a management number of each container management information. Reference numeral 602 represents the name of the container. Reference numeral 603 indicates whether to perform cooperative activation with the subject. The cooperative activation with the subject means that a container is generated and activated in cooperation with the image forming apparatus 100 (subject). Note that it is possible to configure so that a container other than the container activated in cooperation with the subject can be generated at various timings. For example, it is possible to configure so that when the setting of the corresponding function is started via the user interface, the corresponding container is generated and then activated. In addition, it is possible to configure so that when it is sensed that a sheet is placed on a tray (not shown) of the image forming apparatus 100, a container corresponding to at least one function whose execution is predicted is generated and activated. In this case, for example, it is possible to configure so that at least one container related to the copy function, the scan function, and the fax function is generated and activated. In addition, in the case where the image forming device 100 includes a human detection sensor (not shown), it can be configured so that when a person is sensed by the human detection sensor within a predetermined range from the image forming device 100, a container corresponding to at least one function whose execution is predicted is generated and started. Reference numeral 604 indicates which port the host side operating docker will use for control command communication. Reference numeral 605 indicates the priority of CPU resource allocation between containers. Reference numeral 606 indicates the maximum value of memory resource allocation. Reference numeral 607 indicates the maximum value of memory resource allocation including swap memory.

[0064] Reference numeral 610 denotes container management information of the copy application (information related to the copy container 222). As shown in reference numeral 610, the name 602 of the copy container 222 is "copyserver". In addition, since the cooperative start with the main body is set to "execute" in the copy container 222, the copy container 222 is started at the same time when the image forming apparatus 100 is powered on. Note that although the copy function, the sending function, and the PDL function are set to be started in cooperation with the main body here, this is not intended to limit the present invention. It is a setting that can be changed according to the use environment of the corresponding image forming apparatus or the intention of the administrator. Regarding the host port 604 of the copy container 222, port 20016 is allocated. The CPU share 605 of the copy container 222 is set to 512. The memory 606 of the copy container 222 is set to 256MB, in other words, it means that up to 256MB can be used. The memory swap 607 of the copy container 222 is set to 256MB, in other words, it means that up to 256MB of memory including the swap memory can be used. In other words, since there is no difference with the memory 606, it is assumed that the swap memory will not be used. For example, if this value is 1280MB, it means that the swap file can use up to 1024MB, which is different from 256MB. Similarly, with respect to the sending application, the PDL application, and the Web browser application, each container management information is managed on the corresponding container management information DB 501. Therefore, in the container management information 600, for each container, information related to the allocation of hardware resources (host port, CPU usage, memory, and memory swap) is included.

[0065] Description will be returned Figure 5 The container control executed by the container control unit 221 for the docker engine 511 includes a container generation instruction, a container start instruction, and a container stop instruction. In addition, the container control includes a container return instruction, a container setting change instruction, a container termination instruction, a container discard instruction, and a container status acquisition instruction.

[0066] The container generation instruction (CC_CONTAINER_CMD_CREATE, 0xC000) is an instruction for generating a container based on the above-mentioned Dockerfile512 and the container management information 600. The container start instruction (CC_CONTAINER_CMD_START, 0xC100) is an instruction for starting an application on a container. The container stop instruction (CC_CONTAINER_CMD_PAUSE, 0xC200) is an instruction for pausing a container from a start state to a stop state. For example, when the currently logged-in user logs out, or after the job of the corresponding function ends, a certain period of time has passed without inputting a job of the same function, the above-mentioned container stop instruction is executed. In addition, when the hardware resources are lower than a predetermined value when starting another container, and the frequency of use of the timing is low, in the case of a fatal error, etc., the container stop instruction is also executed. The container return instruction (CC_CONTAINER_CMD_UNPAUSE, 0xC300) is an instruction to make the paused container active again. In addition, it can be configured so that at least one container is suspended when the device transitions to power saving mode or sleep mode. Typically, the container return instruction will be when a request for an execution function of a container in a stopped state is received or when returning from a power saving mode of the device, etc. Container setting change (CC_CONTAINER_CMD_UPDATE, 0xC700) is an instruction to change the settings of resources (such as CPU resources and memory resources) allocated to the container. The container termination instruction (CC_CONTAINER_CMD_STOP, 0xCD00) is an instruction to terminate the application on the container. The container discard instruction (CC_CONTAINER_CMD_REMOVE, 0xCE00) is an instruction to discard the container. For example, in the case where the corresponding container is discarded after executing a job in a non-resident container, a container discard instruction is performed. The container status acquisition instruction (CC_CONTAINER_CMD_GET_STATUS, 0xCF00) is an instruction for obtaining the container status.

[0067] (Application Control Command)

[0068] like Figure 4A and Figure 4B As shown in , the control command identifiers related to the application start from 0xA0 to 0xAF. Figure 7 Application control commands related to applications of the device / job control unit 211 according to this embodiment are described. Hereinafter, a control command with a control command identifier of 0xA110 is sent from inside / outside the device to the device / job control unit 211 as an example.

[0069] Since the lower byte of the target option expressing the corresponding control command identifier is 0x10, the device / job control unit 211 determines that a control command related to the copy application is received. Then, the device / job control unit 211 notifies the corresponding control command to the copy job temporary receiving unit 212. The copy job temporary receiving unit 212 detects that the corresponding control command identifier starts from 0xA1, determines that the control command executes an application execution instruction, and then notifies the corresponding control command related to the copy job main receiving unit 231.

[0070] Note that at this time, the copy job temporary receiving unit 212 recognizes that the port for the control command communication assigned to the copy application is 20016 by referring to the management information 610 associated with the copy container 222 of the container management information DB 501. Then, the copy job temporary receiving unit 212 sends the control command associated with the port 20016. The docker engine 511 accepts the communication associated with the port 20016, and then further sends it to the port 20001 associated with the copy container 222. The copy job main receiving unit 231 reads the control command sent to the port 20001, and executes the copy job by notifying the copy job executing unit 241. The respective containers 222 to 225 operate according to the resource allocation described in the container management information 600 of the container management information DB 501.

[0071] Note that in the present invention, the image forming apparatus 100 does not need to operate all containers simultaneously and continuously. For example, in the present embodiment, at the timing when the user clearly indicates the intention to use (for example, the timing when the Web browser UI application unit 205 is operated), the Web browser container 225 is started. In addition, in the present embodiment, as a cooperative start with the subject, it is possible to configure so that even for an application that is operated continuously, it is not operated continuously according to the user setting. In this case, similar to the above-mentioned Web browser, the corresponding container is started at the timing when the user clearly indicates the intention to use.

[0072] Description will be returned Figure 5Description. The application instructions executed by each temporary receiving unit 212 to 215 relative to each main receiving unit 231 to 234 include an execution instruction, a pause instruction, a cache memory flash request instruction and a cancel instruction. The execution instruction (CC_APPLICATION_CMD_EXECUTE, 0xA100) is an instruction to execute a job in the corresponding application. The pause instruction (CC_APPLICATION_CMD_STOP, 0xA500) is an instruction for pausing a job being executed in an application. The cache memory flash request instruction (CC_APPLICATION_CMD_C_FLUSH, 0xA700) is an instruction for discarding the cache on the memory stored during application execution. In this way, the amount of memory used by the application can be reduced. The cancel instruction (CC_APPLICATION_CMD_CANCEL, 0xAF00) is an instruction for canceling a job being executed in an application.

[0073] (Device control command)

[0074] like Figure 4A and Figure 4B As shown in , the control command identifiers related to the device start from 0xD0 to 0xDF. In the device control command, for example, a control command for receiving instructions such as device power control from the inside / outside of the device can be included. The device control command identifiers include a sleep return instruction, a sleep entry instruction, a panel open instruction, a panel close instruction, a high-speed return power off instruction, and a power off instruction.

[0075] The sleep entry instruction (CC_DEVICE_CMD_SLEEP, 0xD000) is an instruction for converting the state of the device to a power saving mode that reduces power consumption. The sleep return instruction (CC_DEVICE_CMD_WAKEUP, 0xD100) is an instruction for converting the state of the device from the power saving mode to the normal mode. The panel close instruction (CC_DEVICE_CMD__PANELOFF, 0xD200) is an instruction for stopping the display of the operation panel screen composed of the operation unit 131. The panel open instruction (CC_DEVICE_CMD__PANELON, 0xD300) is an instruction for executing the display of the operation panel screen composed of the operation unit 131. The high-speed return power off instruction (CC_DEVICE_CMD_QUICKOFF, 0xD400) is an instruction for converting the state of the device from the high-speed return power off mode to the normal mode. In the case where the image forming apparatus 100 enters the high-speed return power off mode, the image forming apparatus 100 can only return to the normal mode by operating the power switch 130. The power off command (CC_DEVICE_CMD__POWEROFF, 0xDF00) is a command to cut off the power of the device.

[0076] Note that in the image forming apparatus 100 according to the present embodiment, by controlling the power of the printer unit 132, the scanner unit 133, the fax unit 134, and the like in detail, the power consumption of the entire image forming apparatus 100 is reduced. For example, innovations such as including two types of modes different in the amount of power consumption during the standby state for the printer unit 132, etc., can be performed, and different modes can be used according to instructions from the main body firmware 200. In the present embodiment, since such power control of the device is the same process as that in the conventional image forming apparatus, a detailed description will be omitted.

[0077] (Generic Control Response Identifier)

[0078] like Figure 4A and 4B As shown, the common control response identifier includes a success response identifier (CC_RESPONSE_OK, 0x0000) and a failure response identifier (CC_RESPONSE_NG, 0x0001). These are used to notify whether the processing related to various control commands is successful or failed.

[0079] (Container Status Control Response Identifier)

[0080] like Figure 4A and 4BAs shown, the container status control response identifier includes a container non-existent status control response, a container unstarted status control response, a container started status response, and a container stopped status response. In addition, the container status control response identifier includes a container restarting response, a container terminating response, a container deleting response, and a container stopping failure response.

[0081] The container non-existence state control response (CC_RESPONSE_NONEXISTS, 0x8000) indicates that there is no state of a container for operating the target application. The container unstarted state control response (CC_RESPONSE_CREATED, 0x0000) indicates that although the target container exists, it is in an unstarted state. The container start state response (CC_RESPONSE_RUNNING, 0x0001) indicates that the target container exists and is in a started state. The container stop state response (CC_RESPONSE_PAUSED, 0x0002) indicates that although the target container exists and is in a started state, a stop instruction has been accepted. The container restarting response (CC_RESPONSE_RESTARTING, 0x0003) indicates that a restart request related to the container is being executed. The container termination response (CC_RESPONSE_EXITED, 0x0004) indicates that the container is in a terminated state. The container removal response (CC_RESPONSE_REMOVING, 0x0005) indicates that a removal request related to the container is being executed. The container stop failure response (CC_RESPONSE_DEAD, 0x0006) indicates that although the target container exists and is in the started state, the state is that the stop processing related to the stop instruction request has failed.

[0082] <Processing steps of device / job control unit>

[0083] Next, we will refer to Fig. 8A and 8B The processing steps of the device / job control unit 211 according to the present embodiment are described. The processing described below is realized by, for example, the CPU 111 reading out to the RAM 113 and then executing a control program stored in the ROM 112 and the internal memory 114 .

[0084] Step S801 represents a loop process, and the device / job control unit 211 repeatedly performs the following steps S802 to S805 for all temporary receiving units 212 to 215 and receiving unit 216. In step S802, the device / job control unit 211 sends a receiving unit start command for each receiving unit. Next, in step S803, the device / job control unit 211 receives a response from each receiving unit. In step S804, the device / job control unit 211 determines whether the response is unsuccessful. In the case of unsuccessful, the process enters step S805, and the device / job control unit 211 records the occurrence of a fatal error and continues to repeat the process. At the same time, in the case of unsuccessful, the repeated process continues as it is. By repeating the above-mentioned steps S802 to S805, the device / job control unit 211 executes the start instruction for all temporary receiving units 212 to 215 and receiving unit 216. When all the processes are finished, the process enters step S806.

[0085] In step S806, the device / job control unit 211 determines whether a fatal error has occurred, and in the case where a fatal error has occurred, proceeds to step S808, otherwise proceeds to step S807. In step S808, the device / job control unit 211 notifies the operation unit control unit 201 of an error display request associated with the occurrence of a fatal error, and then ends the processing. Meanwhile, in step S807, in the case where a fatal error has not occurred, the device / job control unit 211 executes a startup instruction for the operation unit control unit 201. After receiving the corresponding startup instruction, the operation unit control unit 201 executes startup of the UI application units 202 to 206, and then proceeds to step S831. Note that in order to facilitate the update of the program, it is desirable that the UI application units 202 to 206 be implemented in the form of external programs called from the operation unit control unit 201.

[0086] In step S831, the device / job control unit 211 receives a command sent from the inside / outside of the device. Then, in step S832, the device / job control unit 211 divides the processing according to the type of the received command. If the type of the received command is an application control command, the processing enters step S833, and the device / job control unit 211 identifies the target application from the corresponding control command. Next, in step S834, the device / job control unit 211 sends the corresponding control command to the temporary receiving unit or receiving unit of the target application. In the temporary receiving unit or receiving unit, as described below, the processing related to the corresponding command is performed, and then the temporary receiving unit or receiving unit sends a control response. In step S835, the device / job control unit 211 receives a response from the target application. Then, in step S836, the device / job control unit 211 sends the corresponding received response to the sending source recorded in the user identifier of the control command received in step S831.

[0087] Meanwhile, if it is determined in step S832 that the type of the received command is a device control command, the process proceeds to step S851, and the device / job control unit 211 divides the process according to the type of the command. If the type of the command is a sleep return command, the process proceeds to step S852, and the device / job control unit 211 performs the sleep return process. Similarly, in steps S853 to S856, the device / job control unit 211 performs each process for the sleep entry command, the panel opening command, the panel closing command, or the high-speed return power off command. Then, in step S857, the device / job control unit 211 obtains the results of executing these commands as a response. Then, in step S858, the device / job control unit 211 sends a response after executing the device control for the transmission source recorded in the user identifier of the control command received in step S831. Then, the device / job control unit 211 returns the process to step S831 in order to receive a new command.

[0088] If the command type is determined to be a power-off command in step S851, the process advances to step S891, and the device / job control unit 211 executes power-off processing and then ends the process. As a result, the image forming apparatus 100 enters a completely power-off state.

[0089] Through the above control, the device / job control unit 211 can control the temporary receiving unit / receiving unit transmission of the application according to the target included in the control command for the received control command, and can control the device and the like.

[0090] <Processing steps of temporary receiving unit>

[0091] Next, we will refer to Fig.9A and 9B The processing steps of the temporary receiving units 212 to 215 according to the present embodiment are described. Here, the copy job temporary receiving unit 212 is used as a representative for description. In addition, regarding the other temporary receiving units 213 to 215, since they operate in the same manner as the copy job temporary receiving unit 212, the description will be omitted. The processing described below is realized by, for example, the CPU 111 reading out to the RAM 113 and then executing the control program stored in the ROM 112 and the internal memory 114.

[0092] In step S901, the copy job temporary receiving unit 212 receives a temporary receiving unit startup command from the device / job control unit 211. Next, in step S902, the copy job temporary receiving unit 212 performs startup processing of the temporary receiving unit. For example, in the startup processing of the temporary receiving unit, memory is secured or related hardware is set in advance. Then, in step S903, the copy job temporary receiving unit 212 determines whether the startup processing is successful. In the case where the startup processing is successful, the process enters step S904, and the copy job temporary receiving unit 212 notifies the device / job control unit 211 of a successful response, and then, in order to repeat the processing related to the application control command, the process enters step S911. At the same time, in the case where the startup processing is unsuccessful, the process enters step S905, and the copy job temporary receiving unit 212 notifies the device / job control unit 211 of a failed response, and then ends the process.

[0093] In step S911, the copy job temporary receiving unit 212 receives the application control command from the device / job control unit 211. Next, in step S912, in order to execute the application control command received in step S911, the copy job temporary receiving unit 212 sends a container status acquisition command to the container control unit 221. In addition, in step S913, the copy job temporary receiving unit 212 acquires a container status control response from the container control unit 221.

[0094] Next, in step S914, the copy job temporary receiving unit 212 switches the processing according to the received container status. In the case where the container status is the container unstarted state (CC_RESPONSE_CREATED), the processing proceeds to step S921, and the copy job temporary receiving unit 212 sends a container start command (CC_CONTAINER_CMD_START) to the container control unit 221. In step S922, the copy job temporary receiving unit 212 receives a container start command response from the container control unit 221. Through the above operation, the container for operating the corresponding application is transformed into the container start state (CC_RESPONSE_RUNNING). Then, the processing proceeds to step S929, and the copy job temporary receiving unit 212, after standing by for a fixed amount of time, returns the processing to step S912 so as to repeat the container status acquisition processing again.

[0095] In the case where the container state is the container stop state (CC_RESPONSE_PAUSED) in step S914, the process proceeds to step S923. In step S923, the copy job temporary receiving unit 212 sends a container return command (CC_CONTAINER_CMD_UNPAUSE) to the container control unit 221. Next, in step S924, the copy job temporary receiving unit 212 receives a response to the container return command from the container control unit 221. Through the above operation, the container for operating the corresponding application is converted to the container start state (CC_RESPONSE_RUNNING). Then, the process proceeds to step S929, and the copy job temporary receiving unit 212, after standing by for a fixed amount of time, returns the process to step S912 so as to repeat the container state acquisition process again.

[0096] In the case where the container state is the container operating state (CC_RESPONSE_RUNNING) in step S914, the process proceeds to step S941. In step S941, the copy job temporary receiving unit 212 transmits the application control command received in step S911 to the copy job main receiving unit 231. Next, in step S942, the copy job temporary receiving unit 212 receives a response to the application control command from the copy job main receiving unit 231. In addition, in step S943, the copy job temporary receiving unit 212 transmits the response received in step S942 to the transmission source of the application control command received in step S911, and returns the process to step S911.

[0097] In the case where the container state in step S914 is a state other than the above, the process proceeds to step S931, and the copy job temporary receiving unit 212 notifies a fatal error to the operation unit control unit 201. In addition, in step S932, the copy job temporary receiving unit 212 sends a failure response to the transmission source of the application control command received in step S911, and ends the process.

[0098] Through the above control, the copy job temporary receiving unit 212 can always accept the application control command related to the copy job regardless of the state of the copy container 222. In addition, the copy job temporary receiving unit 212 can prepare a container environment for executing the received application control command by sending a container start command or a container return command related to the copy container 222 to the container control unit 221.

[0099] <Processing steps of container control unit>

[0100] Next, we will refer to Figures 10A-10C The processing steps of the container control unit 221 according to the present embodiment are described. The processing described below is realized by, for example, the CPU 111 reading out to the RAM 113 and then executing a control program stored in the ROM 112 and the internal memory 114.

[0101] Step S1001 represents a loop process, and the container control unit 221 repeats the processes in steps S1002 to S1007, S1011 to S1014, and S1021 for all managed containers 222 to 225. In step S1002, the container control unit 221 executes a container status acquisition command for the docker engine 511. Next, in step S1003, the container control unit 221 acquires a response to the status acquisition command from the docker engine 511. Then, in step S1004, the container control unit 221 switches the process according to the acquired response.

[0102] In the case where the response obtained in step S1004 is that the container does not exist, the process proceeds to step S1005, and the container control unit 221 executes the container generation command related to the docker engine 511. Next, in step S1006, the container control unit 221 obtains a response to the container generation command from the docker engine 511. Then, in step S1007, the container control unit 221 switches the process according to the obtained response. In the case where the obtained response fails to generate a container, the process proceeds to step S1021, and the container control unit 221 records the occurrence of a fatal error, and then continues to repeat the process.

[0103] Meanwhile, in the case where the response to the container status acquisition command in step S1004 is not that the container does not exist or the response to the container generation command in step S1007 is successful, the process proceeds to step S1011. In step S1011, the container control unit 221 switches the process according to whether the corresponding container is started in cooperation with the subject. In the case of starting in cooperation with the subject, the process proceeds to step S1012, and the container control unit 221 executes the container start command for the docker engine 511. Next, in step S1013, the container control unit 221 acquires the response to the container start command from the docker engine 511. Then, in step S1014, the container control unit 221 switches the process according to the acquired response. In the case where the container start command fails, the process proceeds to step S1021, and the container control unit 221 records the occurrence of a fatal error, and then continues to repeat the process. Meanwhile, in the case where there is no start in cooperation with the subject in step S1011, or in the case where the container start command is not unsuccessful in step S1014, the repeated process continues as it is.

[0104] By repeating the above process, all containers 222 to 225 managed by the container control unit 221 are generated. Then, the container for which the cooperative start with the subject is specified on the container management information 600 of the container management information DB 501 will be in the container started state (in other words, the same as CC_RESPONSE_RUNNING, 0x0001). Then, the container for which the cooperative start with the subject is not specified will be in the container unstarted state (in other words, the same as CC_RESPONSE_CREATED, 0x0000). When the repeated process ends, the process proceeds to step S1041.

[0105] In step S1041, in the container start processing for all managed containers 222 to 225, the container control unit 221 switches the processing according to whether a fatal error is recorded in step S1021. In the case where a fatal error is recorded, the processing proceeds to step S1042, and the container control unit 221 notifies a fatal error display request to the operation unit control unit 201, and then ends the processing.

[0106] Meanwhile, in the case where a fatal error is not recorded, the process proceeds to step S1050, and the container control unit 221 starts a process for receiving a container control command, and receives a container control command from inside / outside the device. Then, in step S1051, the container control unit 221 switches the process according to the received container control command.

[0107] In the case where the container control command received in step S1051 is a container creation command, the process proceeds to step S1052, and the container control unit 221 executes the container creation command for the docker engine 511. If the received container control command is a container startup command, the process proceeds to step S1053, and the container control unit 221 executes the container startup command for the docker engine 511. In the case where the received container control command is a container stop command, the process proceeds to step S1054, and the container control unit 221 executes the container stop command for the docker engine 511. In the case where the received container control command is a container return command, the process proceeds to step S1055, and the container control unit 221 executes the container return command for the docker engine 511. In the case where the received container control command is a container setting change command, the process proceeds to step S1056, and the container control unit 221 executes the container setting change command for the docker engine 511. In the case where the received container control command is a container termination command, the process proceeds to step S1057, and the container control unit 221 executes the container termination command for the docker engine 511. In the case where the received container control command is a container discard command, the process proceeds to step S1058, and the container control unit 221 executes the container discard command for the docker engine 511. When each command is executed, each process proceeds to step S1061.

[0108] Next, in step S1061, the container control unit 221 receives a response to each type of command executed by the docker engine 511. Then, in step S1062, the container control unit 221 switches the processing according to the received response. In the case where the response to the command is successful, the processing proceeds to step S1063, and the container control unit 221 regards the response related to the container control command as a successful response, and proceeds to step S1091. Meanwhile, in the case where the response to the command fails, the processing proceeds to step S1064, and the container control unit 221 regards the response related to the container control command as a failed response, and proceeds to step S1091.

[0109] In the case where the container control command received in step S1051 is a container status acquisition command, the process proceeds to step S1071, and the container control unit 221 executes a container existence confirmation command for the docker engine 511. In step S1072, the container control unit 221 obtains a response to the container existence confirmation command of the above step S1071 from the docker engine 511. Then, in step S1073, the container control unit 221 switches the process according to whether the container exists. In the case where the container exists, the process proceeds to step S1075, and the container control unit 221 executes a container status acquisition command for the docker engine 511. Next, in step S1076, the container control unit 221 obtains a response to the container status acquisition command from the docker engine 511. Then, in step S1077, the container control unit 221 sets a response related to the container control command based on the response to the container status acquisition command, and causes the process to proceed to step S1091. For example, if the corresponding container is in the startup state (RUNNING) on the docker engine 511, the response associated with the container control command will be the container startup state (CC_RESPONSE_RUNNING, 0x0001). Meanwhile, in the case that there is no container in step S1073, the process proceeds to step S1074, and the container control unit 221 sets the container control response to no container, and then proceeds to step S1091.

[0110] In step S1091 , the container control unit 221 transmits a response to the container control command determined in the above-described process to the transmission source of the control command received in step S1050 , and then returns the process to step S1050 .

[0111] Through the above control, the container control unit 221 can issue appropriate commands to the docker engine 511 for controlling the container based on the container control commands distributed within the device, thereby controlling each container. By using the corresponding configuration, each application that sends a container control command to the container control unit 221 and receives a response to the container control command does not need to be aware of the type of library that implements the container. For example, although a description is given using the traditional container management library docker in this embodiment, other container management libraries can be used to build the system. It is cumbersome for each container management library to use different container control commands issued by the application. Therefore, by utilizing a bridging module that handles the entire container control, such as the container control unit 221, the differences between the behaviors of each container library can be bridged.

[0112] <Summary>

[0113] As a general design pattern for applications that implement certain functions, MVC composed of model / view / controller is well known. The view is a module that generates a display screen based on the information represented by the model. The controller is a module that accepts operations from the user and notifies the model. The model is a module that updates the view based on the content of the user operation. The MVC model is a design pattern commonly adopted in software including user interfaces to improve reusability on multiple platforms.

[0114] However, using only the concept of conventional MVC, the scale of applications operating on the container becomes very large, making it difficult to efficiently utilize resources for processing. Specifically, when all MVC modules operate in the container, there are problems such as it takes time to operate the container according to the operation request, and the necessary resources are increased. This is because in the conventional concept, making a certain application in the startup state means the same as being able to provide all functions to the user.

[0115] In Japanese Patent Gazette No. 2018-129003, the application running on the virtual machine VM also includes a function of providing a user interface. In other words, even in order to simply display a setting screen, a confirmation screen, etc. to the user, it is necessary to transform the virtual machine VM into an operating state and then operate the application that provides the screen. Therefore, in the case of applying this technology to embedded devices with very limited resources, the waiting time in the duration from requesting the display of the screen to actually displaying the screen is not just a little bit. In ergonomics, it is said that in the case of taking one second or more, the user will be aware that the responsiveness is decreasing, and it becomes important to reduce the waiting time by how much.

[0116] In particular, among image forming apparatuses, there are those that include an application selection screen called a home screen (or portal screen). By a user selecting an icon representing a function from the home screen, it has a function that can display an application setting screen or an execution screen associated with the corresponding icon. Note that in the above-mentioned conventional technology, after an application is selected from the application selection screen, a virtual machine including the application is changed from a stopped state to an operating state. Although the process of changing from a stopped state to an operating state differs depending on the amount of memory or storage performance required by the application, it may take about several seconds.

[0117] As an alternative method, it is conceivable to put the virtual machine VM in an operating state at the timing of user login. In this way, the responsiveness of the application when selecting an application can be improved. However, in this case, it takes about tens of seconds from the user executing the login request to the completion of the login. In addition, by putting many applications in an operating state, it is also difficult to achieve effective utilization of the original hardware resources.

[0118] In this embodiment, a management method for embedded applications is proposed, in which the corresponding MVC concept is developed to provide a part corresponding to a view and a controller outside a container, and to manage a part corresponding to a model inside a container. Thus, a part for accepting operation requests from a user and a part for executing operation requests from a user can be divided in a certain application. In addition, by switching whether to start each part, effective use of resources can be achieved. For example, by keeping the part corresponding to the view and the controller in a startup state at all times, operations from the user can be responded to in real time in the main firmware. In addition, by starting the application execution part corresponding to the model on the container as needed, the resources required for the entire system can be reduced even if multiple applications are installed.

[0119] In order to realize the above configuration, the image forming device providing at least one function according to the present embodiment includes at least one first module, which is configured to accept a request for a function corresponding to each of the at least one first module and at least one second module via a user interface, and at least one second module is configured to execute a function corresponding to each of the at least one first module. In addition, the present image forming device includes: a first control unit, which is configured to notify the corresponding second module that the request is accepted by the at least one first module; and a second control unit, which is configured to control the corresponding second module according to the notification. In addition, according to the present image forming device, at least one first module is always started from the start of the image forming device, and at least one second module is generated as a container whose execution environment is independent of the operating system, and its startup state is controlled by instructions from the second control unit. Therefore, with the help of the present embodiment, it becomes possible to appropriately apply the container technology to the embedded device, so that in addition to effectively utilizing the hardware resources, the responsiveness to the user operation can be guaranteed.

[0120] <Modifications>

[0121] The present invention is not limited to the above-described embodiments, and various modifications may be possible. With the aid of the present invention, a configuration may be adopted that enables temporary receiving units 212 to 215 to implement processing and functions other than notifying the main receiving unit of a control command. For example, temporary receiving units 212 to 215 may have a function of performing communication and determining the feasibility of job acceptance (whether the job is executable) for the printer unit control unit 271 and the scanner unit control unit 272 used for each application. In this case, even in a state where the sending job execution unit 242 uses the scanner unit control unit 272, the PDL job execution unit 243 may use the printer unit control unit 271 to perform printing processing. However, although the copy job execution unit 241 may retain the job execution in the case of using the scanner unit control unit 272, it cannot immediately execute the job. In addition to being configured to be composed of the individual execution units 241 to 244, these functions of determining the feasibility of job acceptance may be configured so that the temporary receiving units 212 to 215 include them.

[0122] In addition, some functions included in each of the job execution units 241 to 244 may cause the temporary receiving units 212 to 215 to include them. For example, in some cases, the PDL job execution unit 243 has a function of temporarily spooling the print data notified from the LAN control unit 209 on the RAM 113 and the internal memory 114. However, unless the PDL container 224 is in the activated state by the container control unit 221, data reception cannot be started, and there is a possibility that the printing start is delayed by a corresponding amount. Therefore, it may be configured so that while the container control unit 221 performs processing for starting / returning the PDL container 224, the PDL job temporary receiving unit 214 temporarily spools the print data into the RAM 113 or the internal memory 114. Then, the PDL job execution unit 243 performs processing including the print data that the PDL job temporary receiving unit 214 has received when starting job execution. In this way, the image forming apparatus 100 can start spooling the print data without waiting for the activation or return of the container, and the processing delay can be reduced.

[0123] Other embodiments

[0124] The embodiments of the present invention may also be implemented by providing software (program) for performing the functions of the above-described embodiments to a system or device via a network or various storage media, and a computer or a central processing unit (CPU) or a microprocessing unit (MPU) of the system or device reads and executes the program.

[0125] While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments.The scope of the following claims is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures and functions.

Claims

1. An image forming device providing at least one function, the image forming device comprising: at least one first module configured to accept requests for respectively corresponding functions via a user interface; a startup unit configured to always start at least one first module starting from when the image forming apparatus is started; at least one second module configured to perform functions respectively corresponding to the at least one first module; a control unit configured to control a startup state of a corresponding second module according to a request received by at least one first module and a corresponding function; Therein, at least one second module is generated as a container of an execution environment independent of the operating system.

2. The image forming apparatus according to claim 1, wherein: The control unit controls the startup state of at least one second module according to the container management information of the corresponding function.

3. The image forming apparatus according to claim 2, wherein: The container management information also includes, for each container, information related to allocation of hardware resources.

4. The image forming apparatus according to claim 2, wherein: In the case where the container management information of the corresponding function indicates that it is set to be started in collaboration with the main body, when the first module is started, the control unit generates and starts the corresponding second module, and in the case where the container management information of the corresponding function does not indicate that it is set to be started in collaboration with the main body, when the first module accepts the request of the corresponding function, the corresponding second module is started.

5. The image forming apparatus according to claim 4, wherein: In case of starting the setting of the corresponding function via the user interface, the control unit generates and starts the corresponding second module.

6. The image forming apparatus according to claim 4, wherein: When it is detected that a sheet is placed on a tray of the image forming apparatus, the control unit generates and activates a second module corresponding to the predicted at least one function.

7. The image forming apparatus according to claim 4, further comprising: A human detection sensor for detecting a human, wherein when the human detection sensor detects a human within a predetermined range from the image forming device, the control unit generates and activates a second module corresponding to at least one function predicted to be executed.

8. The image forming apparatus according to claim 1, wherein: In case of receiving a function-related control command as a request for the corresponding function, the control unit acquires the state of the corresponding container and controls the corresponding second module according to the acquired state of the container.

9. The image forming apparatus according to claim 8, wherein: The state of the container includes at least a non-existent state where the container is not generated, an unstarted state where the container is not started, a started state where the container is started, and a stopped state where the container is stopped.

10. The image forming apparatus according to claim 9, wherein: In the case where a currently logged-in user logs out, in the case where a job of a corresponding function ends, in the case where a fixed amount of time has passed without inputting a job of the function, in the case where hardware resources fall below a predetermined value when starting another container and the container is used at a low frequency or a fatal error occurs, the control unit pauses the corresponding container and transitions it from a started state to a stopped state according to a request accepted by at least one first module.

11. The image forming apparatus according to any one of claims 1 to 10, wherein: The first module serves as a user interface and controls the setting screen of the corresponding function.

12. The image forming apparatus according to claim 1, wherein: The first module includes at least a portion of the functionality of the corresponding second module.

13. The image forming apparatus according to claim 1, wherein: The second module includes at least one of a function of temporarily spooling the request and a function of determining whether the request is executable.

14. The image forming apparatus according to claim 13, wherein: The function of determining whether the request is executable is to determine whether execution is possible based on an operation state of another function using hardware included in the image forming apparatus.

15. A method for controlling an image forming apparatus, the method comprising: generating at least one first module configured to accept requests for respectively corresponding functions via a user interface; Starting from when the image forming apparatus is started, always starting the generated at least one first module; generating at least one second module configured to perform functions respectively corresponding to at least one first module; as well as Controlling the startup state of the corresponding second module according to the request received by at least one first module and the corresponding function; Therein, at least one second module is generated as a container of an execution environment independent of the operating system.

16. A non-transitory computer-readable storage medium storing a computer program for causing a computer to execute each process in a control method of an image forming apparatus, the control method comprising: generating at least one first module configured to accept requests for respectively corresponding functions via a user interface; Starting from when the image forming apparatus is started, always starting at least one first module; generating at least one second module configured to perform functions respectively corresponding to at least one first module; as well as According to the request received by at least one first module and the corresponding function, the startup state of the corresponding second module is controlled, wherein the at least one second module is generated as a container of an execution environment independent of the operating system.