Virtual Machine Thread Segmentation for Asynchronous MFP Processes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing image forming apparatuses face challenges in carrying out asynchronous processes, such as communication with external apparatuses and user interface processes, due to limitations in thread usage, which require multiple OS threads and can suspend UI processes during long communication processes.

Innovation Solution

The implementation of an information processing apparatus that executes multiple virtual machines separately from the OS, allowing one thread to be used at a time, with control mechanisms for managing communications between threads using native programs running on the OS, enabling asynchronous processes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple OS threads are used to carry out asynchronous processes, then communication processes and UI processes can be executed simultaneously, but the device complexity increases and thread management becomes more difficult

Engineering Contradiction:
Improveasynchronous process execution capabilityVSAvoidthread management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system segments thread management by introducing virtual machines as intermediate layers. Each virtual machine is assigned a single thread, but can internally manage multiple execution contexts. This segmentation allows asynchronous processes to be achieved without requiring multiple OS threads at the system level, thereby reducing thread management complexity while maintaining productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Virtual machines serve as intermediaries between the OS thread and the extension programs. The virtual machine acts as a mediator that can execute multiple programs sequentially within a single thread context, enabling asynchronous process execution without directly using multiple OS threads. This intermediary approach resolves the contradiction by providing asynchronous capability through virtualization rather than through multi-threading.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Device complexity

If one thread is used at a time in extension programs on OS, then device complexity is reduced, but asynchronous processes cannot be carried out

Engineering Contradiction:
Improvethread usage simplicityVSAvoidasynchronous process execution capability
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The virtual machine introduces dynamic execution capabilities within a single thread context. By dynamically switching between different execution contexts and managing program states internally, the virtual machine enables asynchronous process execution without requiring multiple static OS threads. This dynamic approach maintains thread usage simplicity while achieving asynchronous productivity.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The solution adds a new dimension of virtualization between the OS thread and extension programs. Instead of solving the asynchronous problem through horizontal expansion (multiple threads), the system uses vertical dimensionality change by introducing virtual machines as an intermediate execution layer. This allows single-threaded simplicity to coexist with asynchronous execution capability through the added virtualization dimension.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS11397603B2Information processing apparatus, control method therefor, and program
Publication Date: 2022.07.26 CANON KK
  • US11397603B2 patent drawing
  • US11397603B2 patent drawing
  • US11397603B2 patent drawing

AI summary

An information processing apparatus which is capable of carrying out asynchronous processes. In an MFP provided with an execution environment in which one thread is allowed to be used at one time regarding use of a thread, when an extension application 207a is started, a VM thread 205a and a VM 203a which uses the VM thread 205a are generated, and further another new VM thread 205b is generated in response to a request from the extension application 207a and a new VM 203b which uses the new VM thread 205b is generated.