Re: Turkeys and dynamic linking

From: Michael Edenfield (kutulu_at_kutulu.org)
Date: 11/28/03

  • Next message: M. Warner Losh: "Re: panic inserting CF card."
    Date: Thu, 27 Nov 2003 22:46:20 -0500
    To: Kent Stewart <kstewart@owt.com>
    
    
    

    * Kent Stewart <kstewart@owt.com> [031127 17:50]:
    > On Thursday 27 November 2003 12:31 pm, Bill Moran wrote:
    > > walt wrote:
    > > > To all of you who celebrate Thanksgiving today, I wish you a happy one!
    > > >
    > > > And speaking of turkeys, does anyone know how Microsoft handles the
    > > > performance issues associated with dynamic linking? Do they do
    > > > anything special, or just ignore the whole thing?
    > >
    > > Don't they fix the performance hit by moving performance-critical parts
    > > of the application into kernel space (such as IIS and MSSQL)?
    > >
    > > At least, that's what Eric Raymond claims in his latest book. I don't
    > > think that's an approach I would like to see FreeBSD take.
    >
    > It all depends because if you only have 1 dll loaded for multiple
    > applications, which is one of the features I understand is built into
    > Windows, you have real savings. You share the code and own the data.

    Windows' dynamic linker works in a similar way to what Apple does in
    terms of sharing dll code. It makes an attempt to load libraries at the
    same base address in all processes, so that one DLL can be easily mapped
    into multiple processes.

    When you build a DLL, you supply a "preferred address" where it should
    be loaded. If Windows can load the library there, it does so. It also
    tries to load DLL's in thh same order each time.

    Since every process in the system likely relies on kernel32.dll, and
    probably user32.dll and gdi32.dll and others, Windows is almost always
    able to put those libraries at the same place in each process. So it
    doesn't have to read kernel32.dll from disk, since the OS itself has it
    loaded from the beginning. It just needs to do the fixups.

    For user-defined libraries, there's a decent chance that the same thing
    will happen. If not, then you have to pay the penalty to remap the
    library from scratch into a new location.

    As far as moving things into the kernel, I'm not sure what ESR is
    referring to. It's easy to get code into kernel-space by making it a
    device driver, but AFAIK SQL Server code comes all from normal DLL
    libraries, all in user space.

    --Mike

    
    



  • Next message: M. Warner Losh: "Re: panic inserting CF card."

    Relevant Pages

    • Re: Side-by-side installation on Windows 98SE and Windows 2000
      ... I was surprised to find that this is also supported on Windows 98 ... VB6 cannot create them. ... DLL Search algorithm explores at runtime. ... program (and it's libraries in the app folder) leaves behind a broken COM ...
      (microsoft.public.vb.general.discussion)
    • Re: Side-by-side installation on Windows 98SE and Windows 2000
      ... I was surprised to find that this is also supported on Windows 98 ... I think what it basically comes down to is that DLL/COM Redirection should only be used with COM component libraries that were designed to use it, and VB6 cannot create them. ... However assuming that is true would imply that by registering with a relative path means linkage will occur by using the paths that the Windows DLL Search algorithm explores at runtime. ...
      (microsoft.public.vb.general.discussion)
    • Re: SAVE-SYSTEM and DLLs
      ... Albert van der Horst, UTRECHT,THE NETHERLANDS ... Win32Forth uses a system of pointing all Windows DLL calls on ... initialisation to an internal routine that does the load of the DLL ...
      (comp.lang.forth)
    • Re: How to get a .lib from .dll
      ... Using the Borland tools, you should first run "IMPDEF" on the DLL file ... information in it to create ".LIB" import libraries with;)... ... from Windows version to Windows version...so, ...
      (comp.lang.asm.x86)
    • Re: How to get a .lib from .dll
      ... Using the Borland tools, you should first run "IMPDEF" on the DLL file ... information in it to create ".LIB" import libraries with;)... ... from Windows version to Windows version...so, ...
      (alt.lang.asm)