你的位置:首页 > 操作系统

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

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

学习内容:启动, 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.textbegtext.textBOOTSECT=0X07C0entry 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  0x10loopl:   jmp  looplmsgl:  .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)