Java Thread Scheduler CPU Object Abstraction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Java platforms rely on native code for thread scheduling, limiting the ability to execute multiple threads concurrently and efficiently across multiple processors, as they are tied to physical CPUs and require native APIs for context switching.

Innovation Solution

A Java Scheduler written entirely in Java that abstracts multiple CPUs as 'CPU Objects' allows for parallel execution of threads across these objects, using a volatile field for context switching, enabling efficient execution of multiple threads on abstracted processors without relying on native APIs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If native code and native APIs are used for thread scheduling, then thread execution is tied to physical CPUs, but this limits the ability to execute multiple threads concurrently and efficiently across multiple processors

Engineering Contradiction:
Improvethread execution efficiencyVSAvoidthread scheduling flexibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent introduces a Java-level scheduler as an intermediary layer between the Java application and the native operating system scheduler. This Java scheduler uses volatile fields as mediators to coordinate thread execution across multiple processors, allowing threads to be decoupled from physical CPU bindings while maintaining efficient concurrent execution through Java-managed context switching.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If threads are tied to physical CPUs, then context switching can be performed using native APIs, but this reduces the ability to abstract and flexibly manage thread execution across processors

Engineering Contradiction:
Improvecontext switching capabilityVSAvoidprocessor abstraction layer
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent creates a virtual representation of CPU resources through CPU objects in the Java environment. Instead of directly managing physical CPUs, the system uses Java objects that copy or represent CPU functionality, allowing context switching to be managed at the Java level through volatile field operations rather than requiring direct native API calls to physical processors.

Inventive Principle:
Principle #26Copying

3Productivity

If native APIs are used for thread management, then thread scheduling can be performed at the operating system level, but this prevents efficient parallel execution of multiple threads across multiple processors

Engineering Contradiction:
Improveparallel thread executionVSAvoidscheduling implementation simplicity
Core Design Contradiction:
ProductivityVSEase of manufacture

Solution Approach 1:

The patent segments the thread scheduling function into two distinct layers: a Java-level scheduler that handles high-level thread management and coordination using volatile fields, and the native operating system scheduler that handles low-level process management. This segmentation allows parallel thread execution to be coordinated efficiently at the Java level while leveraging the native OS for actual process scheduling, simplifying the overall implementation.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8336031B2Method and system of performing thread scheduling
Publication Date: 2012.12.18 TEXAS INSTRUMENTS INC
  • US8336031B2 patent drawing
  • US8336031B2 patent drawing
  • US8336031B2 patent drawing

AI summary

A method and system of performing thread scheduling. At least some of the illustrative embodiments are computer-readable mediums storing a program that, when executed by a processor of a host system, causes the processor to instantiate a CPU object that represents a processor abstraction, create a CPU context object that represents a thread abstraction (wherein the CPU context object is associated to a method, and wherein the CPU context object is mapped onto the CPU object), and execute the method within the CPU object.