Dynamic Guard Page Relocation for Stack Collision Prevention

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computing systems, the collision of two program stacks within a single memory allocation can lead to memory corruption and indeterminate behavior due to the lack of a defined address range between them, causing inefficient memory usage and potential premature program abortion.

Innovation Solution

The implementation of a dynamic mechanism that relocates a guard page between the utilized sizes of the two program stacks, allowing for efficient growth and separation of the stacks without increasing the memory stack size, thereby preventing collisions and optimizing memory usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a fixed guard page is used in a fixed manner, then one stack may run into the guard page long before the other stack, but this causes memory space waste and premature program abortion

Engineering Contradiction:
Improveprogram execution reliabilityVSAvoidmemory space utilization
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The guard page is dynamically relocated between the two program stacks based on their respective growth states. The system monitors stack utilization and moves the guard page to prevent collisions while optimizing memory usage. This dynamic adjustment ensures that the guard page remains effectively positioned regardless of which stack grows faster, resolving the contradiction between reliability and memory efficiency.

Inventive Principle:
Principle #15Dynamics

2Quantity of substance

If two distinct program stacks are allocated within a single memory allocation, then memory efficiency is improved, but the stacks may collide causing memory corruption and indeterminate behavior

Engineering Contradiction:
Improvememory space utilizationVSAvoidmemory integrity
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The guard page serves as an intermediary barrier between the two program stacks. It is strategically positioned to prevent direct collision between the stacks while allowing both to grow within the same memory allocation. The guard page acts as a protective buffer that maintains memory integrity while enabling efficient shared memory usage.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system dynamically adjusts the guard page position based on real-time stack growth patterns. By monitoring which stack approaches the guard page first and relocating the guard page accordingly, the system prevents collisions while maximizing memory utilization. This dynamic mechanism ensures both memory efficiency and reliability simultaneously.

Inventive Principle:
Principle #15Dynamics

3Reliability

If the memory stack size is increased to prevent stack collision, then program reliability is improved, but memory space efficiency deteriorates

Engineering Contradiction:
Improveprogram execution reliabilityVSAvoidmemory space utilization
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Instead of statically increasing the entire stack allocation, the system dynamically relocates the guard page within the existing allocation. This allows the stacks to grow to their actual needs without requiring a larger predetermined allocation, thereby maintaining memory efficiency while ensuring reliability through proper separation.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7797505B2Program stack handling
Publication Date: 2010.09.14 HEWLETT PACKARD ENTERPRISE DEV LP
  • US7797505B2 patent drawing
  • US7797505B2 patent drawing
  • US7797505B2 patent drawing

AI summary

Systems, methods, and device are provided for program stack handling. One method embodiment includes recognizing that a fault has occurred because a particular address range in a memory stack has been accessed. The method includes evaluating a current utilized size of regions in the memory stack. A particular address range between the current utilized size of regions in the memory stack is then relocated.