Examples of Software Patents
This list comprises both a sampling of software patents chosen more or
less at random, and a number of famous software patents.
Abstracts for these patents are arranged in numerical order on the
pages that follow. Sometimes the abstract fails to clearly identify
the scope of the patent. The following synopses are therefore based
on a quick reading of the claims.
- Assigning a client request to a server process by first examining
all the server processes not handling the maximum number of clients,
and then assigning it to the server process currently servicing the
fewest clients. [#5,249,290].
- Intercepting calls to a network operating system by replacing the
first few instructions of an entry point by a call to an intercept
- Statically allocating an initial amount of memory when a program
is first loaded according to a size value contained in the program
- A particular multi-threaded C-shell variant that provides
commands for manipulating the threads. [#5,261,097].
- Mark Williams' famous host independent byte ordering patent.
- Roger Billings' famous alleged client/server database patent.
- A file server that merges together multiple pending writes that
require updating the same meta-data. [#5,218,695].
- Simulating the access times associated with a CD ROM by slowing
down a hard disk. [#5,121,492].
- Creating variable size disk partitions comprising tracks residing
on multiple disks. [#5,129,088].
- Remembering file access behavior and using it to control the
amount of read-ahead the next time the file is opened. [#5,257,370].
- Altering the working set of a process based upon its paging behavior
and how its paging behavior changes in response to changes in its
working set size. [#5,247,687].
- Using of multiple read only tokens and a single read write token
to control access to a portion of a file in a distributed file system.
Graphics and Windowing Systems
- Use of different colors to distinguish the nesting level of
nested expressions in computer programs. [#4,965,765].
- The computer graphics representation of a surface using and array
of dots, rather than the more traditional wire frame model.
- A calendar tool that includes a bar graph of the duration of each
meeting and a composite bar graph of all meetings. [#5,247,438].
- Cadtrak's famous xor cursor patent. [#4,197,590].
- Rob Pike's famous backing store patent. [#4,555,775].
Compilers and Simulators
- A parallelizing compiler that estimates the execution time for
each of a number of different parallelization conversions and then
selects the one that it thinks will be the fastest. [#5,151,991].
- Partitioning a program to run on a multiprocessor by identifying
procedures within the program that can be run on a second processor,
and inserting remote procedure calls to do so. [#5,261,095].
- Using condition code graph analysis in a CPU simulator to
determine whether it is necessary to simulate the generation of the
condition codes. [#4,951,195].
- Caching the most recent branch target code when simulating a
procedure return instruction. [#5,167,023].
- A patent that was recently obtained by Microsoft on a particular
calling convention. [#5,261,101.]
- Dynamically linking a replacement procedure into a running
program by rewriting a call instruction to point to the new procedure.
- IBM's famous patent on performing global common subexpression
elimination by first identifying all operands that are used, but not
defined, within each basic block. [#4,656,583].
Cryptography and Data Compression
- The famous Diffie/Hellman secret key exchange patent.
- The famous Hellman/Merkle public key cryptography patent.
- Compressing a font by detecting rows and columns that are
entirely blank and encoding them separately. [#5,272,768].
- The famous LZW compression patent. [#4,558,302].
- A document storage system that has a digital camera to scan in
documents, stores the documents on an optical disk, and uses character
recognition software to construct an index. [#4,941,125].
- Compton's famous alleged multimedia search patent. [#5,241,671].
- A word processor that monitors the sequence of keys you type and
tries to teach you about new features. If it notices you doing a
particular sequence several times it will display information about a
simpler command sequence that may help you do what you want.
- Any word processor with a separate mode that the user selects
when they wish to type in a mathematical formula. [#5,122,953].
- A word processor that has a feature that allows you to specify
that a portion of the text should be shaded - such as may be useful
when revising a manual - by enclosing the relevant text within
commands that turn shading on and off. [#4,924,411].
- A word processor screen layout that simultaneously displays the
global page heading/footing and the contents of the current page, and
permits you to edit either. [#4,984,162].
- A word processor which marks and makes correction to a document
using two additional different colors. [#5,021,972].
- A spreadsheet that has an outline mode to automatically collapse
rows that are hierarchically subordinate to another row.
- A spreadsheet in which each cell has a "next cell" attribute
defining the next cell to advance to after having entering data into
the current cell. [#5,121,499].
- Combining two or more spreadsheet tables together to produce a
new table in accordance with the indicated row and column headings.
- A spreadsheet in which a single cell can contain multiple
(possibly optional) fields. [#5,247,611].
- The famous Refac natural order recalculation patent.
- Quicksort implemented using a linked list of pointers to the
objects to be sorted. [#5,175,857].
- Generation of random numbers by feeding the output of one random
number generator into the input of another random number generator.