操作系统学习笔记与总结(一),操作系统学习笔记


总结下学习的内容,梳理下思路。

学习内容:启动, dd命令,bochs基本用法,as86,ld86

实验:使用bochs模拟开机启动过程,熟悉常用命令。

总结

  1.机器启动到加载bootsect:

       a,开机进入实模式,实模式主要特点软件可以直接访问硬件和只有20位的寻址空间

       b, 计算机刚刚加电时cs=f000,ip=fff0,机器执行ffff0处的BIOS的第一条指令

         c,BIOS检查计算机的硬件,加载中断向量表和中断服务程序

       d,执行int 0x19中断在读取软盘第一个扇区的512个字节,复制到内存的0x07c00处

  2.dd命令:这里主要用于讲boot写入引导扇区 

        主要应用的参数:if=输入 of=输出 bs(ibs obs)=一次读写的字节数,也是指定的一个块的大小

             count=blocks 拷贝blocks的个数,块大小等于ibs指定的字节数。

             skip=blocks 从输入文件开头跳过blocks个块,在复制

             实验使用的命令 dd bs=32 if=boot of=a.img skip=1(备份什么的以后用的在学)

  3.bochs基本用法 :

      a,必备的资源:bochs执行文件,bios映像文件(BIOS-bochs-latest),vga bios映像文件(VGABIOS-lgpl-latest),引导磁盘的映像文件(a.img),配置文件

      b,配置文件:主要用来寻找磁盘映像,配置模拟机器的一些信息。megs模拟内存容量,romimage,vgaromimage,floppya(1_44=a.img static=inserted(已插入。ejected未插入) )

             log(日志信息)boot(启动的驱动器 =floppy)

       c,启动 bochs -f bochsrc (指定配置文件)

       d,用到的指令 c运行,r查看寄存器内容,b addr 设置断点

  4.as86汇编 

      a,使用了inter语法,Linux中用来创建16位的启动引导扇区程序和初始设置程序

      b,学习语法使用的程序

.global begtext
.text
begtext
.text
BOOTSECT=0X07C0
entry start                ;ld86链接后执行的第一条指令
start:
    jmpi    go,    BOOTSECT       ;执行后 cs=BOOTSECT 
go:
    mov    ax,    cs
    mov    ds,    ax
    mov    es,    ax
    mov    [msgl+17],ah
    mov    cx    #20
    mov    dx,    #0x1004
    mov    bx,    #0x000c
    mov    bp,    #msgl
    mov    ax,    #0x1301
    int    0x10

loopl: jmp loopl msgl: .ascii "Loading System..." .byte 13,10 .org 510 .word 0xAA55          ;引导扇区结尾必须为[510]=55,[511]=AA

 

      c,as86 -0 -a -o boot.o boot.s         ld86 -0 -s -o  boot boot.o(生成的boot为MINIX格式有544b需要除去minix文件头的32b)

相关内容