2014级本科《操作系统》实验报告(实验1) 学生姓名 任课教师 实验地点 实验题目 郭阳 学号 范国祥 软件学院三楼实验室 系统初始化 1143730212 院系 实验TA 实验时间 实验学时 软件学院 2016年05月20日 星期五 1学时 实验目的: ? 熟悉hit-oslab实验环境; ? 建立对操作系统引导过程的深入认识; ? 掌握操作系统的基本开发过程; ? 能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 实验内容及要求: (1)阅读《Linux内核完全注释》的第6章,对计算机和Linux 0.11的引导过程进行初步的了解; (2)尝试改写Linux0.11的引导程序bootsect.s,使其主要完成功能:bootsect.s能在屏幕上打印一段提示信息“XXX is booting...”,其中XXX是你给自己的操作系统起的名字; (3)修改build.c,以便可以使用make BootImage命令。 实验过程描述、结果及思考: 简要描述实验过程(含操作步骤及看到的结果)。 实验过程: 1. 修改bootsect.s中的提示信息及相关代码; 2. 在目录linux-0.11\\boot下,分别用命令as86 -0 -a -o bootsect.o bootsect.s和ld86 -0 -s -o bootsect bootsect.o编译和链接bootsect.s,生成bootsect文件; 3.
用命令dd bs=1 if=bootsect of=Image skip=32去掉bootsect的文件头生成Image文件,并复制Image到linux-0.11目录下; 4. 运行run命令验证运行结果是否正确;
5. 重新用make命令生成BootImage,结合提示信息和makefile文件修改build.c; 把build.c文件中的和system有关的代码全部注释掉。重新写setup.s文件。最后编译运行,得到如下结果。
其中在改写setup.s文件时,遇到两个小错误,一个是忘记标记程序入口了,还有一个是没有把setup的段地址写入es,因为在BIOS中断输出的时候要用到。解决这两个问题,程序就能正常运行了。
6.
验证:用make是否能成功生成BootImage。
最终运行结果:
问题回答:操作系统的引导程序都完成哪些功能?你知道几个操作系统引导程序?分别是什么?
有两个程序,引导(boot strapping,简称boot)和BIOS(基本输入输出程序)
在计算机开机时,boot被自动执行,指引CPU把操作系统从大容量存储器中传送到主存储器的易失区 。一旦操作系统放到了主存储器中,boot要求CPU执行一条转移指令,转到这个存储区域,在这个时候,操作系统接管并且开始控制整个机器的活动。
在操作系统变成可用之前,boot可以执行BIOS,完成基本的输入输出活动。
开机执行BIOS(基本输入输出系统)引导程序,这个过程叫做系统自检,标识和配置所有的即插即用设备,并配置DMA通道;完成加电自检,测试内存,端口,键盘,视频适配器,磁盘驱动器等基本设备,以及CD-ROM驱动器;对引导驱动器可引导分区定位:在CMOS(complementary metal oxide semiconductor,互补金属氧化物半导体)中,可以自行设置引导顺序,一般顺序是软驱,磁盘,光驱;加载主引导记录以及引导驱动器的分区表,执行主引导记录MBR,主引导记录在硬盘上找到可引导分
区,将其分区引导记录装入内存,并将控制权交给分区引导记录,由分区引导记录定位根目录,然后装入操作系统。
2014级本科《操作系统》实验1报告-1143730212+郭阳



