COP 3402 System Software
Euripides Montagne University of Central Florida (summer 2011)
COP 3402 Systems Software
Loaders
COP 3402 System Software
1.- Absolute Loader 2.- Bootstrap Loader 3.- Operating System: Loading application programs 3.1- The Process concept. 3.2- Creating a process. 4.- Relocating Loaders 4.1- Relocation bits 4.2- Relocation maps (modification records)
COP 3402 System Software
Assembly program
Label 01 02 03 start 04 here 05 06 07 08 09 0A 0B 0C 0D 0E sum 0F a 10 b 11 one 12 opcode address ; This is ; a comment .begin x200 LOAD sum ADD a STORE sum LOAD b SUB one STORE b SKIPZ JMP here LOAD sum HALT .data x000 .data x005 .data x003 .data x001 .end start
object code file
Program name: start Starting address text: x200 Length of text in bytes: x14 Starting address data: x20A Length of data in bytes: 8 0001000000001001 0010000000001001 0011000000000111 0001000000001000 0100000000001000 0011000000000110 1001000000000000 1000111111111000 0001000000000001 0111000000000000 0000000000000000 0000000000000101 0000000000000011 0000000000000001
H e a d e r
Text
Data
COP 3402 System Software
Assembler object code file Program name: start
Starting address text: x200 Length of text in bytes: x14 Starting address data: x20A Length of data in bytes: 8 0001000000001001 0010000000001001 0011000000000111 0001000000001000 0100000000001000 0011000000000110 1001000000000000 1000111111111000 0001000000000001 0111000000000000 0000000000000000 0000000000000101 0000000000000011 0000000000000001
Absolute loader: Header The absolute loader will load the program at memory location x200: 1.- The header record is checked to verify that the correct program has been presented for loading. Text section 2.- Each text record is read and moved to the indicate address in memory 3.- When the end record (EOF) is encountered, the loader jumps to the specified address to begin execution.
Data section
Loading object code into memory
Object code file (disk)
Program name: start Starting address text: x200 Length of text in bytes: x14 Starting address data: x20A Length of data in bytes: 8 0001000000001001 0010000000001001 0011000000000111 0001000000001000 0100000000001000 0011000000000110 1001000000000000 1000111111111000 0001000000000001 0111000000000000 0000000000000000 0000000000000101 0000000000000011 0000000000000001
Run time environment Header Text
Data Heap
Text section
Data section Stack
COP 3402 System Software
Bootstrapping:
Computers execute programs stored in main memory, and initially the operating system is on the hard disk. When the computer is turned on it does not have an operating system loaded in memory and the hardware alone cannot do the operations of an OS. To solve this paradox a special program called bootstrap loader is created.
Bootstrapping continued
n
This program does not have the full functionality of an operating system, but it is capable of loading into memory a more elaborated software (i.e. loader2) which in its turn will load the operating system. Once the OS has been loaded the loader transfers the control of the computer system to the operating system.
Bootstrapping continued
n
Early programmable computers had toggle switches on the front panel to allow the operator to place the bootloader into the program store before starting the CPU. In modern computers the bootstrapping process begins with the CPU executing software contained in ROM at a predefined address whose elementary functionality is to search for devices eligible to participate in booting, and load a small program from a special section of a device.
Bootstrapping continued
CPU MEMORY
I/O OPERATIONS
BOOT PROG
I/O
ROM OS
LOADER 2
Bootstrapping continued
CPU MEMORY LOADER2
I/O OPERATIONS
BOOT PROG
I/O
ROM OS
LOADER 2
Bootstrapping continued
n
In earlier computers data had to be hand loaded as specified before, but nowadays a small piece of software called loader helps us to avoid the manual loading.
0 99998 100000
OS will be loaded here STORE LC
LC = 0
LC = Location Counter
READ
LOADER 2 0
LC
LC + 1
IF (EOF) PC
ELSE JMP 100000
Bootstrapping continued
CPU OS LOADER2
I/O OPERATIONS
BOOT PROG
I/O
ROM OS
LOADER 2
Bootstrapping continued
n
The above diagram can be explained in the following steps. 1. Check hardware 2. Initiate I/O to load the loader 2 program into memory 3. Loader 2 loads the OS and passes control to it
Conclusion
n
We have seen that once the OS has control over the system , it can create an environment for programs to run. The operating system will load device drivers and other programs that are needed for the normal operation of the computer system.
Operating system
COP 3402 Systems Software
The Process Concept
COP 3402 Systems Software
Programs and processes
Once the operating system takes control of the computer system, an applications program (object module or ELF) can be loaded into memory to be executed. When the program is loaded into memory a process is created. What is a process?
COP 3402 System Software
Process
n
Definition:
A program in execution An asynchronous activity The locus of control of a procedure in execution It is manifested by the existence of a process control block (PCB) in the operating system.
COP 3402 Systems Software
Process Continued
n
The activity of a process is controlled by a data structure called Process Control Block(PCB). A PCB is created every time a program is loaded to be executed. So, a process is defined by a PCB-Program couple.
COP 3402 Systems Software
Structure of the PCB
Pointer to next PCB Process name or ID Base code
PROGRAM
..
Limit . Code IP or PC Stack Pointer
S T A C K
Registers State MODE Interrupt Flags ..
COP 3402 Systems Software
Program
Load PCB
OS
code
stack
Process Creation
Create
COP 3402 Systems Software
Create OS PCB stack Load object file Process Creation
heap bss data code Process working space Memory
header data code symbol table
Disk
COP 3402 Systems Software
Process working space (run-time environment)
stack
Dynamic link, return address, Local variables, function Parameters, Dynamically allocated variables static Global and variables / initialized data Constants Program text (write protected)
malloc(n); int z; int y = 7; x = 4;
heap bss data code
Process working space or Run-time environment
COP 3402 Systems Software
Process working space sum Local
bss: means block started by symbol and has that name for historical reasons.
Local Local Local
void sub(float total, int part ) { int List[5]; float sum; }
stack
Local Local Parameter
malloc(n); int z; int y = 7; x = 4;
heap bss data code
Parameter Dynamic Link Return Address
COP 3402 Systems Software
Relocating Loaders
Absolute loaders loads a program on a specific memory location but it is often desirable to have two or more programs residing in memory sharing the different resources of a computer system. It would be impractical to assign starting addresses to each program to plan program execution. A loader able to load a program into memory wherever there is room for it is called a relocating loader.
COP 3402 Systems Software
Relocation bits Assemblers generate code that starts at address zero but it can also emit with each line of text (code) relocation bits indicating what fields in the object code must be modified when the program is loaded in an address different from zero. For example, if the program will be loaded at address 40, a relocation bits equal to 1 indicates what part of the instruction must be modified:
Loc# 00
Len reloc 3 011
text 13 33 35
Loc# 40
text 13 73 75
COP 3402 System Software
source program
Label 00 03 06 08 10 comp 12 14 16 18 20 22 25 28 30 final 32 33 zero 34 0ne 35 older 36 old 37 new 38 limit opcode copy copy read write load add old store sub limit brpos write copy copy finalL new old older new old address address
before relocation
Loc# 00 03 06 08 10 12 14 16 18 20 22 25
28
after relocation
Loc# 40 43 46 48 50 52 54 56 58 60 62 65 68 70 text 13 13 12 08 03 02 07 06 01 08 73 75 74 76 78 76 75 76 77 78 70 77
Len 3 3 2 2 2 2 2 2 2 2 3 3 2
reloc
text 33 35 34 36
zero older one old limit old older new
br comp write limit stop CONST CONST SPACE SPACE SPACE SPACE 0 1
30 32 33 34 35 36 37 38
011 13 011 13 01 12 38 01 08 36 01 03 35 01 02 36 01 07 37 01 06 38 01 01 30 01 08 37 011 13 011 13 01 00 10 2 01 08 2 01 11 1 0 00 1 0 01
36 35 37 36 38
13 76 75 13 77 76 00 50 08 78
72 11 73 00 74 01 75 76 77 78 Relocation constant to be added is 40
COP 3402 Systems Software
2.- Relocation maps (modification records)
Interleaving relocation bits with the program text makes cumbersome the process of loading the text directly into memory. This problem can be resolve by collecting all relocation bits into a single contiguous relocation map that we will call the relocation section of the object code file (ELF). The relocation section will be appended to the text and data sections. The header will contain the entry point and length of the relocation section in the object module.
COP 3402 System Software
Program name: start Starting address text Length of text in bytes Starting address data Length of data in bytes Starting address reloc. Sect. Length of relocation section
Header
Text section
Data section
Relocation section
COP 3402 Systems Software
The end