操作系统课程ucore实验 lab1

本文详细介绍了Ucore实验lab1的内容,包括通过make生成ucore.img的过程,理解BIOS执行,设置断点调试代码,分析从实模式到保护模式的转换,ELF文件加载过程,以及中断处理和中断向量表的初始化。通过实践操作,加深了对操作系统启动流程的理解。
摘要由CSDN通过智能技术生成

Ucore实验lab1

练习一:理解通过make生成执行文件的过程。
在Makefile中生成ucore.img的代码是:
$(UCOREIMG): $(kernel) $(bootblock) $(V)dd if=/dev/zero of=$@ count=10000 $(V)dd if=$(bootblock) of=$@ conv=notrunc $(V)dd if=$(kernel) of=$@ seek=1 conv=notrunc
在执行Makefile时对应的输出为:
dd if=/dev/zero of=bin/ucore.img count=1000010000+0 records in10000+0 records out5120000 bytes (5.1 MB) copied, 0.0540315 s, 94.8 MB/sdd if=bin/bootblock of=bin/ucore.img conv=notrunc1+0 records in1+0 records out512 bytes (512 B) copied, 0.000110706 s, 4.6 MB/sdd if=bin/kernel of=bin/ucore.img seek=1 conv=notrunc138+1 records in138+1 records out70775 bytes (71 kB) copied, 0.000472623 s, 150 MB/s
从Makefile中可以看出要生成ucore.img首先要拥有kernel和bootblock两个可执行文件所以继续在Makefile中找到kernel的相关代码段
kernel = $(call totarget,kernel) $(kernel): tools/kernel.ldw$(kernel): $(KOBJS) @echo + ld $@ $(V)$(LD) $(LDFLAGS) -T tools/kernel.ld -o $@ $(KOBJS) @$(OBJDUMP) -S $@ > $(call asmfile,kernel) @$(OBJDUMP) -t $@ | $(SED) '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $(call symfile,kernel) $(call create_target,kernel)
查看文件中的文件得出,生成kernel需要以下文件:
kernel.ld init.o readline.o stdio.o kdebug.o kmonitor.o panic.o clock.o console.o intr.o picirq.o trap.o trapentry.o vectors.o pmm.o printfmt.o string.o
在Makefile中bootblock的相关代码:# create bootblockbootfiles = $(call listf_cc,boot)$(foreach f,$(bootfiles),$(call cc_compile,$(f),$(CC),$(CFLAGS) -Os -nostdinc)) bootblock = $(call totarget,bootblock) $(bootblock): $(call toobj,$(bootfiles)) | $(call totarget,sign) @echo + ld $@ $(V)$(LD) $(LDFLAGS) -N -e start -Ttext 0x7C00 $^ -o $(call toobj,bootblock) @$(OBJDUMP) -S $(call objfile,bootblock) > $(call asmfile,bootblock) @$(OBJCOPY) -S -O binary $(call objfile,bootblock) $(call outfile,bootblock) @$(call totarget,sign) $(call outfile,bootblock) $(bootblock) $(call create_target,bootblock)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值