操作系统原理实验考试成绩计算:平时40分[考勤问答(5分)+平时作业(15分)+大作业(20分)]+期末60分[笔试(30分)+机考(30分)]=100分考试形式:开卷笔试+上机操作(都可使用实验室或自己的电脑)机考:考试时间:2015年6月25日(周四)上午10:30~12:30考试地点:实验中心B401笔试:考试时间:2015年6月23日(周二)下午2:00~4:00考试地点:实验中心B401笔试题型:填空(15题,每题2分,共30分)、问答(6题,每题5分,共30分)、编程(4题,每题10分,共40分)操作题型:操作磁盘映像和文件(30分)、编写简单的汇编程序(30分)、编写较复杂的汇编或/和C程序(40分,二选一)复习重点与考试要求1实验环境1)要求熟悉虚拟机、编译软件和各种开发工具的使用,会创建软硬磁盘的磁盘映像和FAT12文件结构、编写和编译简单的汇编和C语言程序、将引导程序写入磁盘映像的引导扇区、将可执行程序和各种文件写入带FAT文件结构的磁盘映像。2)重点虚拟机:VMware(Linux/Ubuntu、混合编程)、Bochs(运行测试)编译器:Windows—NASM(汇编),Linux—NASM(汇编)、GCC(C)、LD(链接)开发工具:Windows—NotePad++(源代码编辑)、WinHex(二进制编辑)、DiskWriter/FloppyWriter(写磁盘映像)、WinImage(复制文件到FAT磁盘映像),Linux—gedit(源代码编辑)测试环境:虚拟机Bochs、DOS系统软盘映像、磁盘映像文件(带FAT12结构的1.44MB软盘和10MB硬盘)、可执行文件格式COM/BIN/ELF、虚拟机配置文件bochsrc.bxrc2引导1)要求了解PC机的引导过程,掌握引导扇区的结构,会编写和编译带清屏和显示Hello串功能的简单汇编引导程序、将引导程序写入磁盘映像的引导扇区、修改Bochs虚拟机的配置文件、用该磁盘映像启动Bochs虚拟机进行测试。2)重点引导过程:PC机加电或重启→CPU复位→内存清零→内存奇偶校验→跳转到地址为FFFF0h处的系统BIOS入口指令,执行主板ROM中的例程→检查各个端口,识别并初始化设备,然后将这些设备连接到计算机上,并提供在设备上的I/O服务→创建两个数据区(中断向量表和BIOS数据区)→读启动盘的第一个物理扇区(主引导扇区),如果其最后两个字节为55h和AAh(引导记录标识符),则装入该扇区到内存地址7C00h处,并跳转到7C00h处执行[主]引导扇区([Master]BootSector)是磁盘的第一个物理扇区(512B),内容为:主引导记录(MBR=MasterBootRecord):446B,一般为装入操作系统的引导程序(通常负责加载OS的装载模块)磁盘分区表(DPT=DiskPartitionTable):4*16=64B,4个分区表项,每个16B,软盘没有DPT引导记录标识符(BRID=BootRecordIdentifier):2B,内容为55hAAh引导实验用NotePad++编写汇编源代码用org操作符设置程序的入口地址为7C00h设置DS和ES=CS(调用清屏例程)调用显示字符串例程进入无限循环定义显示字符串例程——用10h号中断的13h号功能实现(彩色)字符串显示(定义清屏例程——用10h号中断的6号功能实现上滚整个文本显示页)定义字符串常量(如“Hello,OSworld!”或其他特定字符串)及其长度(*lenequ$-*)用times伪指令将剩余空间填充为0将引导扇区的最后2个字节设置为55h和AAh用NASM将源程序编译成二进制文件boot.bin用Bochs工具创建1.44MB软盘映像a.img用FloppyWriter/DiskWriter将boot.bin写入软盘映像a.img修改Bochs虚拟机的配置文件,使用a.img作为软盘A的映像文件,并用软盘启动启动Bochs虚拟机进行测试3可执行文件格式1)要求掌握常用可执行文件格式,掌握ELF的具体结构,会编写和生成COM和ELF格式的可执行文件、运行COM程序、分析ELF文件的结构。2)重点BIN(binary,二进制)——二进制裸格式,无org指令时程序的入口地址为0,引导程序需用org7C00h指令来指定入口地址。文件的扩展名一般为binCOM(commandfile,命令文件)——DOS的二进制裸格式,不分段,会被装载到当前段的100h处(需使用org100h指令,DS=SS=CS、SP=100h-4),文件大小必须≤64KB-256B。文件的扩展名必须为comELF(ExecutableandLinkableFormat,可执行与可链接格式)——类Unix操作系统的标准二进制文件格式。ELF文件由ELF头、程序头表、若干节(section)和节头表组成。程序头表记载了运行时所需的节,节头表则记载了二进制文件中各节的首地址,它们在ELF文件中都是可选的。ELF文件可以没有扩展名,也可以使用下列扩展名:.o、.so、.elf、.prx、.puff、.bin4FAT文件系统1)要求掌握DPT及分区表项的结构,了解常用分区类型和磁盘寻址方式,熟悉1.44MB软盘和10MB硬盘的FAT12/16分区的具体格式和[E]BPB的概念与结构,掌握主引导扇区和分区引导扇区的区别,了解FAT文件系统的目录结构和表示方法,掌握文件条目的格式(包括首字节含义和文件属性)和FAT项值的含义(包括FAT头两项的特殊值——介质描述符),会编写生成软硬盘FAT12文件结构的汇编程序并将其写入磁盘映像、能人工识别和手工编辑文件条目及FAT项(WinHex)。2)重点磁盘分区磁盘分区表(DPT=DiskPartitionTable)位于(主)引导扇区,含4个分区表项,每一项占16B。只有硬盘(U盘/固态盘)才有磁盘分区表,软盘无。如果DPT全为0,则表示无磁盘分区;有几个非0分区表项,就有几个磁盘分区(卷);一个磁盘最多可有4个物理分区(卷)分区类型(CHS/LBA)——如0x01=FAT12、0x06/0x0E=FAT16、0x0B/0x0C=FAT32、0x07=NTFS、0x05/0x0F=扩展、0x83=Linux、0xEE=GPT(GUIDPartitionTable,全局唯一标识符分区表,一种新的磁盘分区表标准,由Intel公司于2010年推出,可突破传统MBR的2TB限制)磁盘寻址方式——传统的CHS(Cylinder/Head/Sector,柱面/磁头/扇区)、现代的线性寻址方式LBA(LogicalBlockAddressing,逻辑块寻址),1996年以后推出的硬盘一般都支持LBA。CHS(512MB)、LBA28(128GB)、LBA48(128PB=128KTB)1KB(千/kilo,103/210)=1024B、1MB(兆/mega,106/220)=1024KB、1GB(吉/giga,109/230)=1024MB、1TB(太/tera,1012/240)=1024G、1PB(拍/peta,1015/250)=1024TB、1EB(艾/exa,1018/260)=1024PB、1ZB(泽/zetta,1021/270)=1024EBFAT分区FAT(FileAllocationTable,文件分配表)是微软公司为其操作系统DOS和老式Windows所定义的一套文件系统,包括FAT12(≤32MB)、FAT16(≤32MB/2GB)、FAT32(≤2TB)和FAT64/exFAT(≤64ZB)等多种具体格式FAT12:在我们的OS实验中,使用1.44MB软盘映像和10MB硬盘映像作为测试介质,它们都采用FAT12文件系统1.44MB软盘的格式:CHS=80/2/18、每个扇区有512(200h)B、共2880扇区=1440KB=1.44MB每个FAT项占12位(1.5B)、每个簇只有1个扇区、每个FAT表占9个扇区根目录区有224条目,占14扇区无磁盘分区起始地址——主引导扇区:0(0#扇区)、FAT#1:200h(1#扇区)、FAT#2:1400h(10#扇区)、根目录区:2600h(19#扇区)、数据区:4200h(33#扇区)10MB硬盘的格式:CHS=80/4/63、每个扇区有512(200h)B、共20160扇区=10080KB≈9.84MB每个FAT项占12位(1.5B)、每个簇有8个扇区、每个FAT表占8个扇区根目录区有512条目,占32扇区主引导扇区的DPT中有唯一分区表项,分区从第2个(1号)柱面的首个扇区(4*63=252)开始起始地址:——主引导扇区:0(0#扇区)、分区引导扇区:1F800h(252#扇区)、FAT#1:1FA00h(253#扇区)、FAT#2:20A00h(261#扇区)、根目录区:21A00h(269#扇区)、数据区:25A00h(301#扇区)分区引导扇区是分区的第一个扇区(512B)。因为软盘无DPT,整个磁盘都是一个分区,所以其分区引导扇区与主引导扇区重合,都是磁盘的首个物理扇区;而硬盘必须有DPT,且其各个分区必须都从第2个柱面及其之后的某个柱面的首个扇区开始。所以我们的10MB硬盘的唯一分区,也从第2个(1号)柱面的首个扇区开始,分区的首个扇区(即分区引导扇区)的序号为252,主引导扇区到分区引导扇区之间的251个扇区(125.5KB)都浪费了FAT分区引导扇区的结构:跳转指令(3B)、OEM名串(8B)、BPB(BIOSParameterBlock,BIOS参数块,25B)、EBPB(ExtendedBPB,扩展BPB,26B)、引导程序代码(448B)、有效结束标志(2B:55AA)FAT文件系统:采用多级目录结构,子目录用文件表示。文件数据块的大小为簇,采用链式存储(FAT项为指向下一簇的链指针/下一簇号),磁盘的空闲空间管理采用空闲块列表(FAT项为0表示对应簇为空闲)。目录为文件条目的列表,每个条目占用32B(20h字节)文件条目格式:8+3文件名(11B,英文字母必须大写)、文件属性(1B)、保留(10B)、时间(2B)、日期(2B)、开始簇号(2B)、文件大小(4B)首字节含义:0—未使用、2Eh—点条目、E5h—已删条目、05—E5h文件属性(可位或):00—普通文件、01—只读、02—隐藏、04—系统、08—卷标、10h—子目录、20h—档案FAT项FAT是映射到分区中每个簇(cluster)的项(entry)列表FAT12的每个项占12位(1.5B)FAT项取值的含义:000—空闲簇、001—保留簇、002~FEF—被占用簇(值为下一簇的序号)、FF0~FF6—保留值、FF7—坏簇、FF8~FFF—文件最后簇(一般取FFF)FAT表的前两个项保存特殊的值:项0的低8位(首字节)为介质描述符(软盘为F0h、硬盘/U盘/固态盘为F8h)、其余位全为1,项1=结束簇标记,FAT12的前两项(3B)的值(十六进制)为F0FFFF5DOS1)要求了解DOS操作系统的特点、组成、版本和系统盘映像文件,掌握常用的DOS内外部命令的使用方法,会用TYPE和EDIT生成文本文件、用XCOPY复制文件目录。2)重点DOS(DiskOperatingSysytem,磁盘操作系统)是PC机的传统操作系统,单用户、单任务、字符界面,运行在16位实模式(没有保护功能,最大RAM内存空间只有640KB),命令行不区分字母的大小写。FreeDOS是一种自由开源的兼容DOS操作系统,由JimHall领导一个团队于1994年中开始开发,目前最新的是2012年1月2日推出的1.1版,其系统软盘映像文件为FDOS11.img。MS-DOS6.22是微软公司于1994年6月推出的一