 Hello everyone, today we are going to see the Absolute Loader and Relocation Loader. Learning outcome, at the end of this session, students will be able to explain the concept of Absolute Loader, its advantages and disadvantages and also will be able to explain the concept of Relocation Loader, its advantages and disadvantages. Now, first we see the Absolute Loader. Absolute Loader is one kind of loader in which relocated object files are created, then the loader accepts these files and places them at a specified location in the memory. This type of loader is called Absolute because no relocating information is needed, rather it is obtained from the assembler or the programmer. In the scheme, the translator, either assembler or the compiler, translate the source program and it generates the machine language as a output. Then the translation of the source program in almost same form as in the compile and go loader. Absolute Loader accepts this translated output in the form of records. The records containing the text, either instructions, data or both, that is to be loaded. Next it contains the length of the text and third it contains the starting address. The task of the Absolute Loader is to place these records into the primary memory at the location specified by the assembler during the process of assembly. In this scheme, the programmer or assembler should have knowledge of the memory management. The resolution of the external references or linking of different subroutines are the issues which need to be handled by the programmer. The programmer should take care of the two things. The first thing is the specification of starting address of each model to be used. If some modification is done in some model, then the length of that model may vary and this causes a change in the starting address of the immediate next model. Then the programmer's duty to make the necessary changes in the starting address of the respective model. And the second thing is while branching from one segment to the another, the absolute starting address of the respective model is to be known by the programmer so that such address can be specified at the respective jump instruction. Now next we see the Absolute Loader example. In this example, there are two segments which are independent. At line number 1, the assembler directive starts specifies the physical starting address that can be used during the execution of the first segment main. Then at line number 15, the jump instruction is given which specifies the physical starting address that can be used by the second segment. The assembler creates the object codes for these two segments by considering the starting addresses of these two segments. During the execution, the first segment will be loaded at address 1000 and the second segment will be loaded at address 5000 as specified by the programmer. Thus the problem of linking is manually solved by the programmer itself by taking care of the mutually dependent addresses. As you can notice that the control is correctly transferred to the address 5000 for invoking the other segment. And after that at line number 20, the JMP instruction transfers the control to the location 2000s that is necessarily at location 2000 the instruction store of line number 16 is present. Thus the resolution of mutual references and linking is done by the programmer. The task of the assembler is to create the object codes for the above segments and along with the information such as starting address of the memory means where actually the object code can be placed at the time of execution. The absolute loader accepts these object modules from the assembler and by reading the information about their starting addresses it will actually place them in the memory at specified addresses. The entire process is shown in the following figure. Now this is the figure of the absolute loader. Here we pass the segments to the assembler. Here we pass the n number of segments to the assembler. In this in this figure the segment one is given as a input to the assembler then it generates the object code and along with the object code we pass the starting address to the loader then loader loads that file that object code in the main memory. Similarly we give the segment two as a input to the assembler then assembler generates the object code and along with that we pass the starting address to the loader and loader loads that object code for the segment two in the main memory. Similarly we can pass segments n to the assembler then the assembler generates the object code for the specified segment and along with that we pass the starting address to the loader and the loader loads the specified object code in the memory for the execution. Absolute loader is simple to implement because in this scheme the allocation is done by the programmer. The linking is also done by the programmer. The relocation is done by the assembler and the loading is done by the loader. Now next we see the advantages of absolute loader. The first advantage is it is simple to implement. The second is the task of the loader becomes simpler because as it is simply obeys the instruction regarding where to place the object code in the main memory. Third advantage is that absolute loader allows the multiple programs or the source programs that is written in different languages and the next advantage is the process of execution is efficient. Now next we see the disadvantages of absolute loader. First disadvantage is that programmer must specify the loading address in the assembly program. The loading address means where the program is to be loaded and the second disadvantage is that in the case of multiple subroutines the programmer must remember the address of each subroutine and the assemblers use that absolute address explicitly in other subroutines to perform the subroutine linkage. Now after seeing the concept of absolute loading tell me the answer of this question in an absolute loading scheme which loader function is accomplished by the programmer. The options are linking allocation both linking and allocation and last is the reallocation pause the video and think about it. The answer is linker. Now next we see the relocating loader to avoid the possible reassembly of all the subroutines when a single subroutine is changed and to perform the task of allocation and linking for the programmer then the relocating loaders are used. The execution of the object program is done using any part of the available and the sufficient memory. The object program is loaded into the memory wherever there is room for it. The assembler assembles each procedure segment independently and passes to the loader the text and the information as to relocation and inter-segment references. The assembler will also provide the loader with additional information such as the length of the entire program and the length of the transfer vector. Now first we see the transfer vector. Transfer vector it is used for the linking it is the bringing part of the program and it stores the names of the external subroutines. Initially when we call the subroutine it transfers to the corresponding location of the transfer vector. Finally loader calculates the absolute location. Now next we see the relocation bit. Relocation bit is used for relocation. This bit is present in the object code. This bit is associated with each instruction. If this bit is 1 then relocation is done. If this bit is 0 then relocation is not done. Now next we see the practical relocating loader. Binary symbolic subroutines that is BSS loader such as used in the IBM 7094, IBM 1130 and GE 635. The output of the relocating assembler using a BSS scheme is the object program and the information about all other program its references. The BSS loader allows many procedure segments but only one data segment and it is often used on computers with a fixed length direct address instruction format. Now next we see the advantages of practical relocating loader. It avoids the possible reassembling of all the subroutines when a single subroutine is changed and the second advantage is that it performs the task of allocation and linking for the programmer. Now next we see the disadvantage. It is difficult to implement. Second disadvantage is that the algorithm is depends on the file structure of the object program and the third is the it is the slower than the absolute loader. Now these are the references. Thank you.