Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
Title: Selection of channel coding and multidimensional interleaving schemes for improved performance
Patent Number: 7,436,901 Issued on 10/14/2008 to Tynderfeldt,   et al.

Title: Intermodulation distortion identification and quantization circuit for a linear amplifier system
Patent Number: 7,436,900 Issued on 10/14/2008 to Hoffmann

Title: Method and apparatus for data transfer using wideband bursts
Patent Number: 7,436,899 Issued on 10/14/2008 to Rogerson,   et al.

Title: Integrated circuit (IC) card, data transmission apparatus, data transmission method and computer program of data transmission method
Patent Number: 7,436,898 Issued on 10/14/2008 to Kato,   et al.

Title: OFDM receiving apparatus and receiving method thereof
Patent Number: 7,436,897 Issued on 10/14/2008 to Sanada,   et al.

Title: Method and apparatus for coding in a telecommunications system
Patent Number: 7,436,892 Issued on 10/14/2008 to Lundby,   et al.

Title: Burst mode memory fetches when decoding compressed image data
Patent Number: 7,436,891 Issued on 10/14/2008 to Taunton

Title: Quantization control system for video coding
Patent Number: 7,436,890 Issued on 10/14/2008 to Takagi,   et al.

Title: Methods and systems for reducing requantization-originated generational error in predictive video streams using motion compensation
Patent Number: 7,436,889 Issued on 10/14/2008 to Moni,   et al.

Title: Method and apparatus for redundant image encoding and decoding
Patent Number: 7,436,888 Issued on 10/14/2008 to Kim,   et al.

Title: Coding scene transitions in video coding
Patent Number: 7,436,886 Issued on 10/14/2008 to Hannuksela

Title: Method for presenting streaming media
Patent Number: 7,436,885 Issued on 10/14/2008 to Burg,   et al.

Title: Method and system for wavelet packet transmission using a best base algorithm
Patent Number: 7,436,884 Issued on 10/14/2008 to Chen,   et al.

Title: Nonlinear inversion
Patent Number: 7,436,883 Issued on 10/14/2008 to Batruni

Title: Decision feedback equalizer and clock and data recovery circuit for high speed applications
Patent Number: 7,436,882 Issued on 10/14/2008 to Momtaz

Title: Per-bin DFE for advanced OQAM-based multi-carrier wireless data transmission systems
Patent Number: 7,436,881 Issued on 10/14/2008 to Nedic,   et al.

Title: Adaptive filtering using fast affine projection adaptation
Patent Number: 7,436,880 Issued on 10/14/2008 to Ding

Title: Spread communication system and mobile station thereof
Patent Number: 7,436,879 Issued on 10/14/2008 to Iwamoto,   et al.

Title: Method and apparatus for efficient carrier bin search for a composite spreading code
Patent Number: 7,436,878 Issued on 10/14/2008 to Harris,   et al.

Title: Method and apparatus to perform surgical reactive jamming while maintaining simultaneous tactical communications
Patent Number: 7,436,877 Issued on 10/14/2008 to Karlsson

Title: System and method for fast acquisition of ultra wideband signals
Patent Number: 7,436,876 Issued on 10/14/2008 to Fisher,   et al.

Title: Laser module having controlled optical power density at exposed surfaces
Patent Number: 7,436,875 Issued on 10/14/2008 to Miura

Title: Laser device
Patent Number: 7,436,874 Issued on 10/14/2008 to Onishi,   et al.

Title: Optical device and semiconductor laser oscillator
Patent Number: 7,436,873 Issued on 10/14/2008 to Sugitatsu,   et al.

Title: High frequency discharge excited gas laser oscillator
Patent Number: 7,436,872 Issued on 10/14/2008 to Egawa,   et al.

Title: Method and device for performing wavelength modulation with Distributed Bragg Reflector (DBR) laser
Patent Number: 7,436,871 Issued on 10/14/2008 to Hu,   et al.

Title: Semiconductor laser device and method for manufacturing the same
Patent Number: 7,436,870 Issued on 10/14/2008 to Ono,   et al.

Title: Laser circuit substrate
Patent Number: 7,436,869 Issued on 10/14/2008 to Aoki

Title: Modular diode laser assembly
Patent Number: 7,436,868 Issued on 10/14/2008 to Schulte,   et al.

Title: Hermetically sealed external cavity laser system and method
Patent Number: 7,436,867 Issued on 10/14/2008 to McDonald,   et al.

Title: Combination optical isolator and pulse compressor
Patent Number: 7,436,866 Issued on 10/14/2008 to Vaissie,   et al.

Title: Tunable optical oscillator
Patent Number: 7,436,865 Issued on 10/14/2008 to Tibbitts

Title: Self-similar laser oscillator
Patent Number: 7,436,862 Issued on 10/14/2008 to Ilday,   et al.

Title: Asynchronous control circuit with symmetric forward and reverse latencies
Patent Number: 7,436,861 Issued on 10/14/2008 to Jones

Title: Method of advertising DNS server address and routing method thereby
Patent Number: 7,436,860 Issued on 10/14/2008 to Lee,   et al.

Title: Demultiplexing device
Patent Number: 7,436,859 Issued on 10/14/2008 to Notoya,   et al.

Title: Mapping information in wireless communications systems
Patent Number: 7,436,857 Issued on 10/14/2008 to Fong,   et al.

Title: Method for transmitting voice data packets
Patent Number: 7,436,856 Issued on 10/14/2008 to Lipp

Title: Transmitter device for controlling data transmission
Patent Number: 7,436,854 Issued on 10/14/2008 to Miyake,   et al.

Title: Reducing memory accesses in processing TCP/IP packets
Patent Number: 7,436,853 Issued on 10/14/2008 to Basso,   et al.

Title: Resource allocation method for providing load balancing and fairness for dual ring
Patent Number: 7,436,852 Issued on 10/14/2008 to Nam,   et al.

Title: Ultra-wideband (UWB) transparent bridge
Patent Number: 7,436,850 Issued on 10/14/2008 to Mowery,   et al.

Title: System and method for partitioning a DSLAM network
Patent Number: 7,436,849 Issued on 10/14/2008 to Amrany,   et al.

Title: Method for mobile node registration management
Patent Number: 7,436,848 Issued on 10/14/2008 to Lewis,   et al.

Title: Input and output buffering
Patent Number: 7,436,845 Issued on 10/14/2008 to Rygh,   et al.

Title: System and method for controlling packet transmission in a communication network
Patent Number: 7,436,844 Issued on 10/14/2008 to Wang,   et al.

Title: Method for access selection
Patent Number: 7,436,843 Issued on 10/14/2008 to Gustafsson,   et al.

Title: Outlet with analog signal adapter, a method for use thereof and a network using said outlet
Patent Number: 7,436,842 Issued on 10/14/2008 to Binder

Title: Presence functionality in the H.323 protocol
Patent Number: 7,436,841 Issued on 10/14/2008 to Pavlak,   et al.

Title: Network system manager for telecommunication carrier virtual networks
Patent Number: 7,436,840 Issued on 10/14/2008 to Hoffman,   et al.

Title: Systems and methods for providing services through an integrated digital network
Patent Number: 7,436,839 Issued on 10/14/2008 to Kafka,   et al.

Title: Automatic prioritization of BGP next-hop in IGP
Patent Number: 7,436,838 Issued on 10/14/2008 to Filsfils,   et al.

Title: Packet forwarding device and method
Patent Number: 7,436,837 Issued on 10/14/2008 to Chou,   et al.

Title: Method and apparatus for detecting support for a protocol defining supplemental headers
Patent Number: 7,436,836 Issued on 10/14/2008 to Mushtaq,   et al.

Title: Forced bearer routing for packet-mode interception
Patent Number: 7,436,835 Issued on 10/14/2008 to Castleberry,   et al.

Title: Communication system, router, method of communication, method of routing, and computer program product
Patent Number: 7,436,833 Issued on 10/14/2008 to Jimmei

Title: Wireless network load generator dynamic MAC hardware address manipulation
Patent Number: 7,436,831 Issued on 10/14/2008 to Miller,   et al.

Title: Method and apparatus for wire-speed application layer classification of upstream and downstream data packets
Patent Number: 7,436,830 Issued on 10/14/2008 to Ben-Nun,   et al.

Title: Methods and apparatus for reconfiguring packets to have varying sizes and latencies
Patent Number: 7,436,829 Issued on 10/14/2008 to Chen,   et al.

Title: Method and apparatus for label switching data packets
Patent Number: 7,436,828 Issued on 10/14/2008 to Betts,   et al.

Title: System and method for detecting and indicating communication protocols
Patent Number: 7,436,826 Issued on 10/14/2008 to Celebioglu,   et al.

Title: Method and apparatus for distinguishing between services of all frequency bands and specific frequency band
Patent Number: 7,436,825 Issued on 10/14/2008 to Jeong,   et al.

Title: Distributed switch architecture including a growth input/output bus structure
Patent Number: 7,436,824 Issued on 10/14/2008 to Pepenella

Title: Method for transmitting data
Patent Number: 7,436,823 Issued on 10/14/2008 to Laumen,   et al.

Title: Method and apparatus for providing fault tolerance to intelligent voice-over-IP endpoint terminals
Patent Number: 7,436,820 Issued on 10/14/2008 to Beck,   et al.

Title: Communication apparatus and control method thereof
Patent Number: 7,436,819 Issued on 10/14/2008 to Ezumi

Title: Packet switched network voice communication
Patent Number: 7,436,818 Issued on 10/14/2008 to Nakhla,   et al.

Title: Method and system for transmission-based billing of applications
Patent Number: 7,436,816 Issued on 10/14/2008 to Mehta,   et al.

Title: Switching system and method having low, deterministic latency
Patent Number: 7,436,815 Issued on 10/14/2008 to Caldara

Title: Selecting transport addresses to route streams between endpoints
Patent Number: 7,436,814 Issued on 10/14/2008 to Bell

Title: Method and system for acquiring time synchronization between base stations in a broadband wireless access communication system
Patent Number: 7,436,813 Issued on 10/14/2008 to Kim,   et al.

Title: System for oderwire modulation
Patent Number: 7,436,812 Issued on 10/14/2008 to Geile

Title: Multicasting data method in a radio communication system
Patent Number: 7,436,811 Issued on 10/14/2008 to Putcha,   et al.

Title: Determination of wireless link quality for routing as a function of predicted delivery ratio
Patent Number: 7,436,810 Issued on 10/14/2008 to Ma,   et al.

Title: Communicating system, communicating method, base station, and mobile station
Patent Number: 7,436,809 Issued on 10/14/2008 to Harada,   et al.

System and method for testing memory while an operating system is active Number:7,155,645 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: System and method for testing memory while an operating system is active

Abstract: A system for testing a memory page of a computer while an operating system is active. The system includes a hook function and a pattern generator. The hook function has software instructions that takes the place of a memory allocation/release scheme of the operating system. The system stores a test pattern generated by the pattern generator in the memory page upon receiving a request to release the memory page. Upon receiving a request to allocate the memory page, the system verifies the test pattern is correct to ensure the memory page is not defective. If the test pattern is incorrect, the defective memory page is removed from service.

Patent Number: 7,155,645 Issued on 12/26/2006 to Korhonen


Inventors: Korhonen; Aki (Davis, CA)
Assignee: PC-Doctor, Inc. (Reno, NV)
Appl. No.: 10/853,788
Filed: May 24, 2004


Related U.S. Patent Documents

Application NumberFiling DatePatent NumberIssue Date
09800119Mar., 20016742148
60187183Mar., 2000

Current U.S. Class: 714/718 ; 365/201; 711/134
Current International Class: G06F 11/00 (20060101); G11C 29/00 (20060101); G11C 7/00 (20060101); H04L 9/00 (20060101)


References Cited [Referenced By]

U.S. Patent Documents
5239635 August 1993 Stewart et al.
5299202 March 1994 Vaillancourt
5396619 March 1995 Walton
5559980 September 1996 Connors et al.
5627995 May 1997 Miller et al.
5784699 July 1998 McMahon et al.
5812472 September 1998 Lawrence et al.
5881221 March 1999 Hoang et al.
6081817 June 2000 Taguchi
6085296 July 2000 Karkhanis et al.
6088758 July 2000 Kaufman et al.
6092168 July 2000 Voigt
6202134 March 2001 Shirai
6233668 May 2001 Harvey et al.
6311290 October 2001 Hasbun et al.
6640290 October 2003 Forin et al.
6742148 May 2004 Korhonen
Primary Examiner: Chung; Phung My
Attorney, Agent or Firm: Fliesler Meyer, LLP

Parent Case Text



CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation application of U.S. patent application Ser. No. 09/800,119, filed Mar. 5, 2001, now U.S. Pat. No. 6,742,148, entitled "Testing a System Memory While an Operating System is Active" which in turn, claims priority from U.S. Provisional Patent Application No. 60/187,183, filed Mar. 6, 2000, entitled "Testing a System Memory While an Operating System is Active".
Claims



What is claimed is:

1. A method for testing a memory page of a computer system with a generated test pattern while an operating system is active, comprising: detecting a memory allocation/deallocation request for said memory page; determining whether said memory allocation/deallocation request is for allocation or deallocation of said memory page; if allocation of said memory page is requested, verifying said generated test pattern with a test pattern, if any, stored in said memory page; and if deallocation of said memory page is requested, storing said generated test pattern in said memory page.

2. The method according to claim 1, further comprising: if said generated test pattern does not match said test pattern stored in said memory page, indicating said memory page as defective.

3. A method using a test pattern for testing a memory page of a computer system while an operating system is active, the method comprising: determining a function for allocating the memory page used by the operating system; hooking the function for allocating the memory page; upon receiving a request to allocate the memory page, determining whether the memory page has the test pattern; and if the memory page has the test pattern, verifying the test pattern is correct to ensure the memory page is not defective, if the test pattern is correct, allocating the memory page as requested, if the test pattern is incorrect, removing the memory page from service.

4. The method of claim 1 wherein the step of hooking the function is by replacing the function for allocating the memory page.

5. The method of claim 1 wherein the step of hooking the function is by installing a module to access the function for allocating the memory page.

6. The method of claim 1 wherein the test pattern is dynamic.

7. The method of claim 1 wherein the test pattern is static.

8. The method of claim 1 wherein the test pattern is both dynamic and static.

9. A method using a test pattern for testing a memory page while an operating system is active, the method comprising: determining a deallocation scheme for deallocating the memory page by the operating system; hooking the deallocation scheme for deallocating the memory page; and upon receiving a request to deallocate the memory page, storing the test pattern in the memory page.

10. The method of claim 9, upon receiving a request for allocating the memory page, further comprising; determining a function used by the operating system for allocating the memory page; hooking the function for allocating the memory page; and verifying the test pattern is correct to ensure the memory page is not defective, if the test pattern is correct, allocating the memory page as requested, if the test pattern is incorrect, removing the memory page from service.
Description



BACKGROUND OF THE INVENTION

The present invention relates generally to the field of testing computer system components, and more specifically, to a system and method for testing memory in a computer system while an operating system is active.

Conventional schemes for performing diagnostic tests on computer memory systems are well known. The importance of testing a computer's memory cannot be overemphasized. Costs and defects associated with memory defects are relatively high due to user downtime and loss of information. Many software applications are memory intensive and it is important to ensure that defective memory which impacts the performance of such software applications are detected and removed.

While most software applications are stored on the hard disk, an application must be loaded into memory first in order to execute the application. Initially, the operating system assigns a memory block (e.g. 64 kb) for the application. The operating system then copies the application from the hard disk to the allocated memory block. The application is thereafter executed within the allocated memory. While the application is active, it may require more memory blocks, which it will allocate from the operating system by calling a memory allocation routine that is part of the operating system; and from time to time the application releases the memory blocks thus allocated using a memory deallocation routine that is part of the operating system. Thereafter, upon completion of the application, the operating system relinquishes the memory block that it initially allocated for the application, and any memory blocks that the application might have allocated while it was active, for use by other applications. This allocation/deallocation of memory is constantly occurring within the computer system.

Operating systems typically allocate memory at two levels. At a lower level the operating system allocates physical memory, while virtual memory is allocated at a higher level. Further, in today's faster and efficient processors, operating systems are capable of multitasking and can execute multiple programs simultaneously. This results in increased memory requirements which are typically more than the available amount of physical memory. Consequently, virtual memory is employed to ensure that adequate memory is available. Virtual memory is a memory allocation scheme in which a computer with a lesser amount of physical memory appears as if it had a much higher amount of memory. Typically, when applications allocate memory, the operating system automatically allocates virtual memory. When an application starts to read or write to virtual memory, the operating system and the CPU detect the read or write operation and automatically verify if physical memory has been allocated to the virtual memory address that the application is accessing, and if not, the operating system allocates physical memory to the virtual memory address that is being accessed. Although an application may be allocated a large amount of virtual memory with a large number of virtual memory addresses, those addresses are mapped to physical memory only as needed. Allocation of physical memory is done in an allocation unit known as pages. The size of a physical memory page can vary with the capabilities of the CPU. In this manner, the memory allocation/deallocation routine of the operating system ensures that large memory requirements for software applications are met.

As noted, conventional schemes for performing diagnostic tests on memory in a computer system are well known. One example of such a scheme is a POST (power on self test) computer program embedded in system memory. Because POST executes every time a computer is booted on, there is a desire to minimize the time that a user has to spend waiting for the computer to boot. Therefore, POST runs quick diagnostic tests on the computer memory as well as other system components. Rather than limit testing to system memory, POST typically tests all of the components within the computer system. Moreover, the sophistication of POST is limited in order to effectively reduce the booting period when the computer system is turned on. In any event, POST is limited to the booting process and failures occurring while the operating system is active are not detected.

Other schemes include various diagnostic programs typically stored on media such as the computer's hard disk drive or floppy disk. Such diagnostic programs are commercially available for purchase by users, and are employed to detect faults related to computer components, such as memory, video, optical storage, hard disk drive, serial ports and virtual memory. In some instances, the user can select which components on which diagnostic programs should be performed. Typically, diagnostics programs test memory by writing specific data patterns to memory and then reading back these patterns for verification. That is, a deviation from the expected data pattern indicates the portion of memory as being defective.

Disadvantageously, if processes are running which occupy portions of system memory, many diagnostic programs cannot test the occupied portions. Attempts to access these portions of memory will result in a system crash. Further, diagnostic programs are typically complicated and cannot be run by a computer novice.

Another disadvantage relates to the length and complexity of diagnostic programs which have significant processor performance and memory requirements. In addition, many diagnostic programs will have a significant impact on system performance, and thus it is not advantageous to run these diagnostic programs in anticipation of failures, but rather only after it appears that a failure has occurred and only the exact cause of the failure remains to be determined.

Further, the accuracy of the results of some diagnostic programs are somewhat doubtful because the diagnostic programs when executed do not simulate the full range of operating environments in which the computers are employed. A further disadvantage of such diagnostic programs is that memory failures are not automatically detected. In fact, by the time a system failure occurs, data loss has already taken place and it is almost always too late to manually execute a diagnostic program to prevent loss of valuable information.

Moreover, computers traditionally rely on hardware components such as parity error checking and Error Checking and Correcting (ECC) mechanisms to monitor system memory for errors while the system is running. These solutions increase system cost, as they require extra hardware components, and extra memory to store error detection information.

Therefore, it would be desireable to provide a system and method which is capable of resolving the aforementioned problems relating to the conventional approaches for performing diagnostic tests on system memory.

SUMMARY OF THE INVENTION

The present invention generally integrates memory testing at the operating system level to make memory testing a continuous background task. In a first embodiment, memory is tested when it gets deallocated by placing a test pattern in the memory. The accuracy of the test pattern is verified when the memory is required by another software application. In an alternate embodiment, the present invention discloses a method using a test pattern for testing a memory page of a computer system while an operating system is active.

The method comprises the steps of determining a function for allocating the memory page used by the operating system, and hooking the function for allocating the memory page. Upon receiving a request to allocate the memory page, the method involves determining whether the memory page has the test pattern; and if the memory page has the test pattern, verifying the test pattern is correct to ensure the memory page is not defective. If the test pattern is correct, the memory page is allocated as requested, and if the test pattern is incorrect, the memory page is removed from service.

In a further embodiment, the present invention teaches a method using a test pattern for testing a memory page while an operating system is active. The method comprises the steps of determining a deallocation scheme for deallocating the memory page by the operating system, hooking the deallocation scheme for deallocating the memory page; and upon receiving a request to deallocate the memory page, storing the test pattern in the memory page.

In addition, one aspect of the present invention teaches a system for testing a memory page of a computer while an operating system is active. The system includes software code having, one or more software instructions that takes the place of a memory allocation/release scheme of the operating system, and having one or more software instructions for storing a test pattern in the memory page upon receiving a request to release the memory page.

In a further aspect, the software code includes one or more software instructions for determining whether the memory page has the test pattern upon receiving a request to allocate the memory page, and one or more software instructions for verifying the test pattern is correct to ensure the memory page is not defective. If the test pattern is correct, the code includes one or more software instructions for allocating the memory page as requested, and if the test pattern is incorrect, for removing the memory page from service.

A further embodiment of the present invention discloses a system for testing a memory page of a computer system while an operating system is active. The system includes a means for determining a deallocation scheme for deallocating the memory page by the operating system; a means for hooking the deallocation scheme for deallocating the memory page; and upon receiving a request to deallocate the memory page, a means for storing the test pattern in the memory page.

In an alternate aspect, the system includes a means for determining a function used by the operating system for allocating the memory page upon receiving a request to allocate the memory page; a means for hooking the function for allocating the memory page; and a means for verifying the test pattern is correct to ensure the memory page is not defective, if the test pattern is correct, means for allocating the memory page as requested, if the test pattern is incorrect, means for removing the memory page from service.

Advantageously, unlike the related art, the present invention makes memory testing a continuous background task, automatically and accurately detects memory failure and ultimately reduces user down time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an exemplary block diagram of a computer system for enabling memory testing in accordance with a first embodiment of the present invention; and

FIG. 2 is an exemplary flow chart for testing a physical memory page in accordance with a first embodiment of the present invention.

A further understanding of the nature and advantages of the present invention herein may be realized by reference to the remaining portions of the specification and the attached drawings. Reference to the remaining portions of the specification, including the drawings and claims, will realize other features and advantages of the present invention. Further features and advantages of the present invention, as well as the structure and operation of various embodiments of the present invention, are described in detail below with respect to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.

DETAILED DESCRIPTION OF THE INVENTION

Generally, the present invention integrates memory testing at the operating system level to make memory testing a continuous background task. In one embodiment, memory is tested when it gets deallocated by placing a test pattern in the memory. The test pattern is verified when the memory is required by another software application.

FIG. 1 is an exemplary block diagram of a computer system 100 for enabling memory testing in accordance with a first embodiment of the present invention. In FIG. 1, computer system 100 comprises a processor 104 for controlling operations within the computer system 100, an operating system 106 having a memory routine 108 for allocating/deallocating memory to software applications, a bus 102 for forwarding signals between system components, a plurality of software applications 110, a user interface 116 coupled to a buffer 114 initiating the software applications 110, one or more hook functions 112 for hooking memory routine 108, and a pattern generator 118 that generates test patterns for testing selected memory pages.

In operation, a test program (not shown) designed to test system memory (not shown) within computer system 100 begins by installing one or more hook functions 112. Installing the hook function 112 allows the test program to gain access to memory allocation/deallocation requests. More specifically, processor 104 in conjunction with operating system 106 hooks memory routine 108, that is, memory routine 108 is replaced with hook function 112.

Thereafter, hook function 112 is automatically initiated when memory allocation/deallocation requests to allocate or deallocate physical memory (not shown) are made. The user may be given control over the test program using the user interface 116 or when the computer system 100 is booted up. One of ordinary skill in the art will realize that other techniques for temporarily obtaining access to memory allocation/deallocation requests are possible. Alternatively, for example, the hooking functions 112 may cooperate with the memory routine 108 to gain access to the memory allocation/deallocation requests (rather than replacing the memory routines 108 entirely). Hook function 112 may be a driver (software), hardware or a combination of both.

Upon initiating one or more software applications 110, a memory allocation request may be generated to request a memory page. Before passing the memory allocation request to the operating system 106, hook functions 112 check whether the requested memory page was marked with a test pattern. If so, hook function 112 verifies the test pattern after which the requested memory page is allocated to software application 110.

Similarly, when a memory deallocation request is requested, hook function 112 calls operating system 106 to deallocate the requested memory page. Thereafter, pattern generator 118 generates a test pattern which is to be stored in the deallocated memory page.

In one exemplary mode, a test pattern that combines the physical memory address with static test patterns, forming dynamic test data that is more likely to catch cross-linked memory, signal skew and bus noise is stored.

In a second exemplary mode, a collection of alternating static patterns, which are not dynamic are stored. It should be observed that either of these modes is selectable by the user. Therefore, the test pattern may be static or dynamic. In this fashion, the present invention implements runtime memory testing while the operating system is active, wherein memory is marked with a test pattern when deallocated, and tested prior to allocation.

FIG. 2 is an exemplary flow chart illustrating a method for testing a physical memory page in accordance with a first embodiment of the present invention. The present embodiment employs a test pattern which may be a series of psuedorandom numbers for testing a memory page while operating system 106 is active.

In FIG. 2, at block 202, the initialization of hook function 112 begins. This involves determining a function used by operating system 106 for allocating memory pages. That is, the method and routines encompassed by memory routine 108 are determined.

At block 204, memory routine 108 is hooked. That is, memory routine 108 is replaced by hook function 112. Hook function 112 is then able to gain access to any memory allocation/deallocation requests issued by the computer system 100.

At block 206, the computer system 100 awaits a request for memory allocation or deallocation.

At block 208, a memory allocation request is received requesting allocation of a memory page.

At decision block 210, upon receiving the request to allocate the memory page, it is determined whether the memory page has been marked with the test pattern. If the memory page has been marked with the test pattern, the test pattern is verified. As will be explained below, a test pattern is stored in a memory page during deallocation. A copy of the stored test pattern for the specific memory page is maintained by the test program for subsquent verification purposes.

At block 212, the test pattern is verified to be correct to ensure the memory page is nor defective.

At decision block 214, if the test pattern is correct, the memory page is thereafter allocated as requested, and normal operating system routines continue as shown at block 218.

At block 216, if the test pattern is incorrect, the memory page is considered defective and is removed from service. Thereafter, normal operating system routines continue as shown at block 218.

At decision block 210, if the memory page has not been marked with the test pattern, normal operating system routines continue as shown at block 218. It should be observed that after the test program hooks the memory routines 108, it can also choose to place the test pattern in all unused memory pages in anticipation of them being allocated at a future time.

At block 222, a request to deallocate (release) the memory page is received.

At block 224, the test pattern is stored in the deallocated memory page after which normal operating system routines continue as shown at block 218. A copy of the test pattern is maintained the test program to allow subsequent verification when a memory allocation request for the same memory page is detected.

In this manner, the present invention provides a system for testing memory while the operating system is active. Unlike the related art, one embodiment of the present invention enables runtime memory testing wherein memory testing is a continuous background task so that physical memory is tested prior to its allocation to an application. It should be observed that although the invention has been described with regard to memory testing at the physical page level, one of ordinary skill in the art will realize that other levels of testing may be implemented.

While the above is a complete description of exemplary specific embodiments of the invention, additional embodiments are also possible. Thus, the above description should not be taken as limiting the scope of the invention, which is defined by the appended claims along with their full scope of equivalents.

*


Free Web Sudoku Puzzles.
Solve with your browser.
6   1     5 2    
  8     1     4  
9         2 6    
    3           6
    7 9   1 8    
1           5    
    9 7         3
  2     3     5  
    5 1     7   8
What is it?



Add Your Site · Terms Of Service · Privacy Policy


DISCLAIMER
Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

For More Specific Information VIEW OUR TERMS OF SERVICE.

Thank you and Enjoy!