Solved

Keeping a program loaded in RAM only.

Posted on 2000-02-17
8
185 Views
Last Modified: 2010-04-02
Using VC++ 6 on WinNT40.
Is there a way to:
a) Load an application into RAM only and "lock" it so that it never gets pagged to disk?

b) Alloc RAM only?  i.e. if there is not enough RAM to load the entire program into, fail to alloc it.
0
Comment
Question by:snifong
  • 2
  • 2
  • 2
  • +1
8 Comments
 
LVL 3

Expert Comment

by:GlennDean
ID: 2533844
snifong:
  I know for device driver code you can tell NT to lock it's code in memory (but that's because the driver executes in a kernel context).  BUT, for any 'ol application I seriously doubt you could do that.
   Glenn
0
 
LVL 3

Accepted Solution

by:
ufolk123 earned 100 total points
ID: 2533861
a) Following function does that.
The VirtualLock Win32  function locks the specified region of the process’s virtual address space into memory, ensuring that subsequent access to the region will not incur a page fault.

BOOL VirtualLock( LPVOID lpAddress,
 // address of first byte of range to lock
 DWORD dwSize
 // number of bytes in range to lock );
 
b) VirtualLock() will give you an error if it can not allocate that much required for your address range from OS but definitely this can not be done at load time .

ufolk123
0
 
LVL 3

Expert Comment

by:GlennDean
ID: 2533891
ufolk123:
  I agree that VirtualLock guarantees that the specified pages will be in RAM when any thread from the app executes.  BUT this does NOT mean the pages are always in memory!  VirtualLock stores the pages into the app's Working Set, i.e. those pages the app requires to be in memory when any thread from the app executes.  BUT, if another process executes, NT is free to page out any page in the app's Working Set.
   Glenn  
0
 
LVL 3

Expert Comment

by:ufolk123
ID: 2534412
Sorry, Yeh I missed that point.
But  i do not feel applicaiton can do more than that from win32 layer.
Yes it is not possible for user app to control RAM that way.
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 22

Expert Comment

by:nietod
ID: 2534596
>> VirtualLock guarantees that the specified pages
>>  will be in RAM when any thread from the app
>> executes.  BUT this does NOT mean the pages
>> are always in memory!
Are you sure about that?  Where did you find that?  That makes the function nearly useless.  (You are practicaly given that guarantee anyways.)

snifong, why do you want to do this?  Most people try this in order to speed up performance.  But there is a flaw in their thinking so they usually end up makeing performance worse!
0
 
LVL 1

Author Comment

by:snifong
ID: 2534677
The company that I am with is trying to figure out if they want to go to a web based configuration tool to configure firmware settings for Natural Microsystems boards.  Enable for this to happen there must be a web server on the box in order to connect.  The app we are configuring needs to be as close to realtime as possible.  We want to make sure when paging happens that it is the server and not the other app.
0
 
LVL 22

Expert Comment

by:nietod
ID: 2534991
Locking memory can reduce performance, not improve it.  The system swaps memory based on its frequency of use.  So if you use the memory frequenly, it is not likely to be swapped out, if you use it less frequently it might be.  If you lock the memory it won't be.  Is that faster?  Well, if the OS needs to swap memory out it will, if it can't swap out yout memory it will swap out other memory.  This means it may swap out more frequently used memory and leave your less frequently used memory swapped in.  Do you think that will increase performance?  
0
 
LVL 1

Author Comment

by:snifong
ID: 2535061
GlennDean, you were right. Thanks.
nietod, Thanks as always for your comments.
ufolk123, Thanks for the push in the right direction.

Article ID: Q94996  
SUMMARY
VirtualLock() causes pages to be locked into an application's working set (virtual memory); it does not lock them absolutely into physical memory. VirtualLock() essentially means "this page is always part of the process's working set."

The system is free to swap out any virtually locked pages if it swaps out the whole process. And when the system swaps the process back in, the virtually locked pages (similar to any virtual pages) may end up residing in different real pages.

For part a) there is no way to do it 100%.  For b) VirtualLock() will return false if the pages cannot be locked.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now