IP Library Granted Patent US 7,590,839
Granted Patent B2
US 7,590,839 · App. 11/385,253 · Granted Sep 15, 2009

System employing fast booting of application programs

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,590,839
App. No.
11/385,253
Granted
Sep 15, 2009
Kind
B2
Abstract

A fast booting system decreases the boot time of a computer system, and allows the fast launching of applications on a subsequent reboot. The fast booting system stores data associated with fast boot applications in a non-volatile memory. On a subsequent reboot, the fast booting system reads the data and launches the fast boot applications to decrease boot time.

Claims (62)

1. A computer system comprising:

a volatile memory;

a non-volatile memory; and

a processor, in communication with the volatile memory and the non-volatile memory,

software code executable by the processor to:

perform a boot routine, including launching an operating system;

respond to a completion of the boot routine by:

executing a data maintenance operation in which software objects, generated during the boot routine but no longer used by the system, are removed from the volatile memory;

moving at least some software objects generated during the boot routine so that they are proximate one another in the volatile memory;

reading data and instructions from the volatile memory; and

storing the read data and instructions, and a corresponding memory address for the data and instructions, in a non-volatile memory; and

respond to a subsequent request to boot by reading the stored data and instructions, and the corresponding memory address from the non-volatile memory.

2. The computer system of claim 1 where the software code further comprises software code executable by the processor to respond to completion of the regular boot routine by halting execution of all non-operating system threads.

3. The computer system of claim 2 where the software code further comprises software code executable by the processor to respond to a subsequent request to boot by:

launching one or more applications;

copying the data and instructions read from the non-volatile memory to the corresponding memory addresses of the volatile memory; and

beginning execution of the copied data and instructions.

4. The computer system of claim 1 further comprising a plurality of input units under control of the processor.

5. The computer system of claim 4 where the input units are selected from the group consisting of: a DVD player, a global positioning system (GPS) unit, and an engine control unit (ECU).

6. The computer system of claim 4 further comprising a graphical display under control of the processor.

7. The computer system of claim 4 further comprising an audio output unit under control the processor.

8. The computer system of claim 1 where the software code further comprises software code executable by the processor to:

notify applications running on the operating system to save data prior to executing the data maintenance operation; and

compressing the data after executing the data maintenance operation.

9. The computer system of claim 8 where the software code further comprises software code executable by the processor to:

determine if a snapshot routine needs to be completed after performing the boot routine;

launch a fast boot application;

perform one or more consistency checks;

initialize hardware, one or more interface cards, or one or more peripherals;

establish required connections to the input units;

determine if threads are executed; and

determine if kernel objects are created.

10. A method of decreasing boot time of a computer system subsequent to the performance of an initial booting comprising:

performing a boot routine using a volatile memory;

responding to completion of the regular boot routine by:

executing a data maintenance operation in which software objects, generated during the boot routine but no longer used by the system, are removed from the volatile memory;

moving at least some software objects generated during the boot routine so that they are proximate one another in the volatile memory;

reading data and instructions from a volatile memory; and

storing the read data and instructions, and corresponding memory addresses for the data and instructions, in a non-volatile memory; and

responding to a subsequent request to boot by reading the stored data and instructions, and the corresponding memory addresses from the non-volatile memory.

11. The method of claim 10 where responding to completion of the boot routine further comprises halting execution of all application threads.

12. The method of claim 10 where responding to a subsequent request to boot further comprises:

launching the operating system;

copying the data and instructions read from the non-volatile memory to the corresponding memory addresses of the volatile memory; and

beginning execution of the copied data and instructions.

13. The method of claim 8 where performing a boot routine comprises launching an operating system.

14. The method of claim 10 further comprising:

notifying applications running on the operating system to save data;

executing the data maintenance procedure after the applications running on the operating system have saved the data; and

performing a compression operation on the data.

15. The method of claim 10 further comprising:

determining if a snapshot routine needs to be completed after performing the boot routine;

performing consistency checks;

initializing hardware, interface cards, or peripherals;

establishing required connections to the input units;

determining if threads are executed; and

determining if kernel objects are created.

16. The method of claim 15 where determining if threads are executed further comprises:

monitoring threads created during the snapshot routine;

determining where the created threads are stored in the non-volatile memory; and

generating thread stacks for storage in the non-volatile memory.

17. The method of claim 15 where determining if kernel objects are created further comprises recording created kernel objects in the non-volatile memory.

Assignments (13)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: 8758271 CANADA INC.
To: 2236008 ONTARIO INC.
Reel/Frame 032607/0674 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: QNX SOFTWARE SYSTEMS LIMITED
To: 8758271 CANADA INC.
Reel/Frame 032607/0943 →
CHANGE OF ADDRESS Recorded Feb 27, 2012
From: QNX SOFTWARE SYSTEMS LIMITED
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 027768/0961 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 026883/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 026883/0544 →
REGISTRATION Recorded Feb 28, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025863/0398 →
CHANGE OF SEAT Recorded Feb 28, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025863/0434 →
PARTIAL RELEASE OF SECURITY INTEREST Recorded Jun 3, 2010
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024483/0045 →
SECURITY AGREEMENT Recorded May 8, 2009
From: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; BECKER SERVICE-UND VERWALTUNG GMBH; CROWN AUDIO, INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS (MICHIGAN), INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS HOLDING GMBH; HARMAN BECKER AUTOMOTIVE SYSTEMS, INC.; HARMAN CONSUMER GROUP, INC.; HARMAN DEUTSCHLAND GMBH; HARMAN FINANCIAL GROUP LLC; HARMAN HOLDING GMBH & CO. KG; HARMAN MUSIC GROUP, INCORPORATED; HARMAN SOFTWARE TECHNOLOGY INTERNATIONAL BETEILIGUNGS GMBH; HARMAN SOFTWARE TECHNOLOGY MANAGEMENT GMBH; HBAS INTERNATIONAL GMBH; HBAS MANUFACTURING, INC.; INNOVATIVE SYSTEMS GMBH NAVIGATION-MULTIMEDIA; JBL INCORPORATED; LEXICON, INCORPORATED; MARGI SYSTEMS, INC.; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS CANADA CORPORATION; QNX SOFTWARE SYSTEMS CO.; QNX SOFTWARE SYSTEMS GMBH; QNX SOFTWARE SYSTEMS GMBH & CO. KG; QNX SOFTWARE SYSTEMS INTERNATIONAL CORPORATION; QNX SOFTWARE SYSTEMS, INC.; XS EMBEDDED GMBH (F/K/A HARMAN BECKER MEDIA DRIVE TECHNOLOGY GMBH)
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 022659/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2006
From: VAN DER VEEN, PETER; BURGESS, COLIN
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 018141/0593 →