Presentation is loading. Please wait.

Presentation is loading. Please wait.

Administrative Overview 6 Projects Design Review: Monday before 6:30pm Lab Friend Center 010 (“Fishbowl”)

Similar presentations


Presentation on theme: "Administrative Overview 6 Projects Design Review: Monday before 6:30pm Lab Friend Center 010 (“Fishbowl”)"— Presentation transcript:

1 Administrative Overview 6 Projects Design Review: Monday before 6:30pm Lab Friend Center 010 (“Fishbowl”)

2 COS 318 Project 1 Bootloader

3 Problem We will write an Operating System  Manages programs, resources, users, etc. How are programs loaded?  The OS takes care of this How is the OS loaded? …

4 Booting a Computer On Startup… The BIOS is loaded  Typically doesn’t know anything about the OS  Minimal functionality The BIOS loads & runs the first sector of a boot device.  An OS cannot fit in just one sector

5 Bootup Details Start at 0xFFFF0 Self test & initialization Search for a boot device  Hard disk  Floppy  Flash  …

6 Bootup Details 1 st sector loaded to 0x7c00 Jump to 0x7c00 512 bytes to load the kernel

7 Bootloader Kernel Disk Memory

8 Entering the Bootloader %dl = Boot device number  Load the kernel from this device %cs = Code segment NO STACK! (%ss, %sp unset) %ds unset (set it to 0x07c0 before fetching from memory!) Other registers unset

9 The kernel might be big Kernel

10 Solution Move the bootloader Kernel

11 Loading the kernel Load to address 0x0000:1000 Set up the stack  %ss = 0x9000, %sp=0xfffe %ds = 0 Long Jump to 0x0000:1000

12 Design Review print_char, print_string Example: _start: jmp past_data welcome_msg:.asciz “OS Project 1\n\rLoading…” past_data: push welcome_msg call print_string jmp somewhere_else

13 Design Review Bootloader  How to find the kernel on disk?  Where to copy the kernel?  How to copy the kernel? Createimage  How do you find the code segments in ELF using header information?  Give a formula for the disk/image address of segment i in the program header.  Where do you use padding?

14 How long will this take? Bootloader  About 80 lines assembly  Simple instructions (int, mov, cld) Createimage  About 200 lines of C  Hardest part: navigating ELF structs Debugging will take the most time.

15 Addressing Real Mode  1 MB  Format: 0x0000:0000  Physical address = (segment << 4)+offset Ex: 0x07c0:0000 = 0x0000:7c00 Protected Mode  4 GB (32-bit)  Format: 0x0000:00000000 (32-bit)  Virtual Addressing (user mode)  Physical address = a bit more complicated…

16 Registers 311680 E_XEAX, EBX, ECX, EDX _XAX, BX, CX, DX _H_LAH, AL, BH, BL, … Segment Registers 16 CS, DS, SS, ES, FS, GS Index Registers 32 BP, SI, DI, SP Status & Control 32 EFLAGS, EIP General Registers

17 AT&T Syntax Registers: %ax, %ah, %eax,… Definitions .equ BOOT_SEGMENT, 0x07c0 Constants: $0x0100, $4 Labels  _start:  print_string: Memory access  movw %ax, (0x40)  movb %dl, (a_label)  movw %es:(%ax), %dx Comments  /* multiline */  # to the end of the line Directives .equ,.byte,.word,.ascii,.asciz

18 Assembly Pitfalls.equ BOOT_SEGMENT, 0x07c0 movw BOOT_SEGMENT, %ds


Download ppt "Administrative Overview 6 Projects Design Review: Monday before 6:30pm Lab Friend Center 010 (“Fishbowl”)"

Similar presentations


Ads by Google