 Hello everyone, today we are going to see the introduction to the loaders learning outcome. At the end of this session, students will be able to explain the loader concept, its basic functions and types of loaders and also will be able to differentiate between the linker and the loader. Now first we see the loader definition. A loader is a system software program that performs the loading function. It brings the object program into the memory and starts its execution. The role of the loader is as shown in the figure. In the figure the source program is converted by the translator. Here the translator may be assembler or compiler which generates the object program that is machine language code and then that object program is given as a input to the loader. Then the loader loaded the object program into the primary memory for the execution. Now this is the simple figure of loader. Here the source program is given as a input to the translator. Then translator translate that code into the object program and that object program is given as a input to the loader. Then loader loads that object program into the main memory for the execution. Now next we see the basic loading principles. Before going to see the basic loading principles first we see the loading operation. The mechanism for loading the program it uses the program load address that is PLA as a pointer and it stores the content of the machine operation code in the memory at the address specified by the program load address. We know the loader is a system program that performs the loading process for a given input program for the same target machine. The output of this process is that the program is loaded into the allocated primary memory after proper relocation and then it submits the starting allocated address of the program to the hardware. Then the hardware starts the execution of this program. So there are two basic principles of loading operations. First is to make the program ready for execution means in this the loader brings an object or we can say that executable program into the primary memory for execution with proper relocation and the second is the start execution of the program means the first instruction in the program or the starting address of the program will pass to the computer hardware that is the target machine for the execution and this process is shown in the figure. This figure shows the simple loading process of the program. Now here in figure the loader first reads the size of the executable program from the header record of the file then it requests to the memory manager of the operating system for requisite space to load the executable program in the primary memory. When the loader and the operating system are both in the primary memory then the loader loads the executable program after completing the proper relocation when the whole executable program is loaded into the primary memory from the secondary storage that is disk then the loader sends the starting address to the memory address register or to the program counter of the target computer hardware so that the computer can start the execution of the loaded program. Now next we see the functions of loader the loader is a system software which is responsible for the activities such as allocation, linking, relocation and the loading. Now first function is the allocation it allocates the space in the memory where the object program would be loaded for the execution it allocates the space for the program in the memory by calculating the size of the program and this activity is called as allocation. Second function is the linking which combines the two or more separate object programs and it supplies the necessary information. It results the symbolic references either code or data between the object modules by assigning on the user subroutine and the library subroutine addresses and this activity is called as linking. Third is the relocation it modifies the object program by changing the certain instructions so that it can be loaded at the different addresses from the location originally specified. There are some address dependent locations present in the program such address constant must be adjusted according to the allocated space such activity is done by the loader is called as relocation. The last is the loading it brings the object program into the memory for the execution it places all the machine instructions and the data of the corresponding programs and the subroutines into the memory. Thus the program now becomes ready for the execution and this activity is called as loading. So basically there are four functions of loader allocation, linking, relocation and loading. Now after studying the concept of loader can you tell me which is not a function of loader. The options are allocation, translation, relocation and loading pause the video and answer the question. The answer is translation. Translation is not a function of a loader. Now next we see the loader procedure. The loader procedure is a sequence of operations that is described in the following step. The first step is it reads the header of the executable file to find out the size of the text and the data. The second step is it creates an address space which is a large enough to load the executable instructions into the memory. Step number three it copies the instructions and the required data into the primary memory. Step four it copies the parameters of the main program onto the stack. Fifth step after that it initializes the machine registers and it sets the stack pointer. Step number six it jumps to the startup procedure that copies the parameters into the argument registers and it calls the main procedure. In this way the loader performs the different operations during loading the program into the memory. Based on the different functionalities of the loader there are different types of loaders. They are compile and go loader, general loader, absolute loader, relocating loader, direct linking loader and dynamic loading. Now next we see the difference between the linker and loader. Here there are three columns. First is the basis for comparison. Next column is the for linker and third is for loader. The key difference between the linker and loader is that linker generates the executable file of the program whereas the loader loads the executable file that is obtained from the linker into the main memory for the execution. Now this is the first difference. The second difference is that the linker takes as a input the object code of the program and that is generated by the assembler. However the loader takes the executable module as a input. It is generated by the linker. Third difference is that the linker combines all the object module of the program to generate the executable modules. It also links the library functions in the object module to build in the libraries of the high level programming language and on the other hand the loader allocates the space to an executable module in the main memory for the execution. And the last difference is that the linker can be classified as linkage editor and dynamic linker whereas the loader can be classified as absolute loader, relocatable loader and dynamic runtime loader. These are the references. Thank you.