I was wondering what the loaders in Linux and Windows are called, i.e., their command names? Loaders' definitions are
In computing, a loader is the part of an operating system that is responsible for loading programs.
Software Engineering Stack Exchange is a question and answer site for professionals, academics, and students working within the systems development life cycle. It only takes a minute to sign up.Sign up to join this community
There's at least 3 things that you could call "loaders" in Linux. The "ld" part of a compile, that puts together various object (.o) and archive (.a) files into a single executable is one. "ld" also checks shared object (.so) files to see if the dynamic linker can work correctly.
The dynamic linker (do
man ld.so for details) gets run by the Linux kernel as part of starting up an ELF format executable. It reads linking information from the ELF file, and then (at least) maps in shared object files (.so suffix). The details are rather involved, and at least sometimes involve updating the GOT, a section in memory that maps a compiled-in branch destination to the actual, as-loaded address of the library code. See: http://netwinder.osuosl.org/users/p/patb/public_html/elf_relocs.html for a lot of details.
There's also a piece of the Linux kernel that reads in executable files, that's sometimes called a "loader". When you configure a linux kernel, you can choose to include or exclude some of these executable file formats (a.out, mainly) loaders. I had the code of linux 22.214.171.124 lying about, and I found "loaders" for different executable formats in linux-126.96.36.199/fs/: binfmt_aout.c, binfmt_elf.c, binfmt_script.c, and a few others.
I know next to nothing of how Windows does this same process, but it must do most or all of the same things.
As @falcon noted, the Linux loader is called "ld." In Windows, I don't know how much of the details of program loading and execution are actually made public.
The crux of the idea here is that the OS is driving the program loading. There isn't a direct command to load a program in either Linux or Windows, this is all handled by the OS itself. In this process the OS allocates memory, stack/heap space, any registers that are needed, and a program status register - that keeps track of all of this for when processes are suspended/interrupted. This is how "protected/user" mode saves us from blowing up a computer because we constantly triple-fault because we're using commands that shouldn't be being used (most of this is done in ring 0 - ie real mode, much removed from us).
The item that others are pointing you to are .exe's .bin's and the linker/loader for gcc/asm/etc which only set up a file for when the OS calls the loading of the program, these still do not directly affect the loading of the program (because you can call ld to actually toss the program in RAM and set up the registers, although you can call it to tell the program how to compile so that it says I want to load registers x, y, and z and start in memory location 0x0000FFFF....) and diety / os willing it'll put that there.
Strictly answering: Nothing.
Commands to load programs do not exist as commands. For simple reason, that typically, any OS command is actually a program. Then how can you load the program, which is supposed to load other programs, when the program itself needs to be loaded in first place ?
If you drill through sematics of definition... Then the best answer is "shell". Shell is the command to load other programs (which are commands).
In Windows it is: explorer.exe, cmd.exe, debug.exe and may be few more