操作系统原理实验复习考试.docx
- 文档编号:11929181
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:181
- 大小:1.57MB
操作系统原理实验复习考试.docx
《操作系统原理实验复习考试.docx》由会员分享,可在线阅读,更多相关《操作系统原理实验复习考试.docx(181页珍藏版)》请在冰点文库上搜索。
操作系统原理实验复习考试
操作系统原理实验考试
●成绩计算:
平时40分[考勤问答(5分)+平时作业(15分)+大作业(20分)]
+期末60分[笔试(30分)+机考(30分)]=100分
●考试形式:
开卷笔试+上机操作(使用实验室或自己的电脑)
●机考:
⏹考试时间:
2014年6月17日(周二,三班)&20日(周五,二班)上午10:
30~12:
30
⏹考试地点:
实验中心B401
●笔试:
⏹考试时间:
2014年6月26日(周四)晚上19:
00~21:
00
⏹考试地点:
教学楼C101
●笔试题型:
填空(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.bxrc
2引导
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!
”或其他特定字符串)
◆用times伪指令将剩余空间填充为0
◆将引导扇区的最后2个字节设置为55h和AAh
⏹用NASM将源程序编译成二进制文件boot.bin
⏹用Bochs工具创建1.44MB软盘映像a.img
⏹用FloppyWriter/DiskWriter将boot.bin写入软盘映像a.img
⏹修改Bochs虚拟机的配置文件,使用a.img作为软盘A的映像文件,并用软盘启动
⏹启动Bochs虚拟机进行测试
3CPU与指令
1)要求
了解x86CPU的结构,熟悉其寄存器,掌握常用的CPU指令和NASM指令,会编写简单的汇编程序。
2)重点
●8086[80386]寄存器
⏹8个16[32]位通用寄存器
◆4个数据寄存器:
[E]AX(累加)、[E]BX(基址)、[E]CX(计数)、[E]DX(数据),其中的低16位寄存器(如AX)又可以进一步分成低8位(如AL)和高8位(如AH)两个部分
◆4个指针变址寄存器:
[E]SP(堆栈指针)、[E]BP(基址指针)、[E]SI(源变址)、[E]DI(目的变址)
⏹4[6]个16位段寄存器(保护模式下为段选择符,有与对应段描述符类似的64位隐藏结构):
CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段)、[FS(附加段)、GS(附加段)]
⏹2个16[32]位专用寄存器:
[E]IP(指令指针)、[E]FLAGS(标志,其中的第6位为零标志ZF、第9位为中断允许标志IF、第10位为方向标志DF)
⏹[4个48或80位系统地址寄存器]:
GDTR(全局描述符表寄存器,48位:
16位界限+32位基址)、LDTR(局部描述符表寄存器,80位:
16位段选择符+32位基址+20位界限+12位属性)、IDTR(中断描述符表寄存器,48位:
16位界限+32位基址)、TR(任务寄存器,80位:
16位段选择符+32位基址+20位界限+12位属性)
⏹[4个32位的控制寄存器]:
CR0(机器状态字,其最低位PE用于进入保护模式,最高位PG用于启动分页机制)、CR1(未使用)、CR2(引起页故障的线性地址)、CR3(页目录基址)
●常用CPU指令:
算术运算(四则、增减)、位运算(逻辑、移位)、赋值(MOV)、比较测试、跳转、调用返回、中断、循环重复、栈操作、串操作、端口IO、标志位设置、装入/保存系统寄存器、无操作
●常用NASM指令:
DB/DW/DD,RESB/RESW/RESD,EQU,TIMES,BITS16/BITS32,SECTION/SEGMENT,EXTERN、GLOBAL,ALIGN/ALIGNB,%macro/%endmacro、%rep/%endrep、%define、%if/%ifdef/%elif/%else/%endif,ORG,$、$$
4BIOS中断
1)要求
掌握常用BIOS中断及其调用格式,会编写使用BIOS中断进行字符[串]显示、清屏、读按键和读扇区等操作的汇编程序。
2)重点
●常用BIOS中断:
显示字符——int10h的0Eh号功能、显示字符串——int10h的13h号功能、清屏(上滚整个文本显示页)——int10h中断的6号功能、读按键——int16h的00h号功能、读扇区——int13h的02h号功能
●调用格式:
movah,功能号
……;设置各种入口参数
int中断号
5可执行文件格式
1)要求
掌握常用可执行文件格式,掌握ELF的具体结构,会编写和生成COM和ELF格式的可执行文件、运行COM程序、分析ELF文件的结构。
2)重点
●BIN(binary,二进制)——二进制裸格式,无org指令时程序的入口地址为0,引导程序需用org7C00h指令来指定入口地址。
文件的扩展名一般为bin
●COM(commandfile,命令文件)——DOS的二进制裸格式,不分段,会被装载到当前段的100h处(需使用org100h指令,DS=SS=CS、SP=100h-4),文件大小必须≤64KB-256B。
文件的扩展名必须为com
●ELF(ExecutableandLinkableFormat,可执行与可链接格式)——类Unix操作系统的标准二进制文件格式。
ELF文件由ELF头、程序头表、若干节(section)和节头表组成。
程序头表记载了运行时所需的节,节头表则记载了二进制文件中各节的首地址,它们在ELF文件中都是可选的。
ELF文件可以没有扩展名,也可以使用下列扩展名:
.o、.so、.elf、.prx、.puff、.bin
6FAT文件系统
1)要求
掌握DPT及分区表项的结构,了解常用分区类型和磁盘寻址方式,熟悉1.44MB软盘和10MB硬盘的FAT12分区的具体格式和[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
●FAT分区
⏹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)的值(十六进制)为F0FFFF
7DOS
1)要求
了解DOS操作系统的特点、组成、版本和系统盘映像文件,掌握常用的DOS内外部命令的使用方法,会用TYPE和EDIT生成文本文件、用XCOPY复制文件目录。
2)重点
●DOS是PC机的传统操作系统,单用户、单任务、字符界面,运行在16位实模式(没有保护功能,最大RAM内存空间只有640KB),命令行不区分字母的大小写。
●FreeDOS是一种自由开源的兼容DOS操作系统,由JimHall领导一个团队于1994年中开始开发,目前最新的是2012年1月2日推出的1.1版,其系统软盘映像文件为FDOS11.img。
●MS-DOS6.22是微软公司于1994年6月推出的一个DOS最后销售版本,其系统软盘映像文件为MSDOS622.img。
●组成:
⏹FreeDOS:
内核文件KERNEL.SYS和命令文件COMMAND.COM。
⏹MS-DOS:
内核文件MSDOS.SYS、设备管理文件IO.SYS和命令文件COMMAND.COM
⏹它们须用DOS的外部命令SYS.COM复制到其他磁盘,才能生成DOS的启动盘
⏹配置文件CONFIG.SYS,初始化批处理文件AUTOEXEC.BAT。
●内部命令:
指COMMAND.COM中包含的命令,提供DOS的一些基本功能。
其中常用的有:
X:
(改变当前卷为X)、CD(改变当前目录)、DIR(列出目录)、MD(创建目录)、DEL(删除文件)、REN(修改文件名)、PATH(设置路径)、TYPE(显示文件内容)、CLS(清屏)、VER(版本)等,可用“命令/?
”获取命令格式和使用方法的帮助信息。
●外部命令:
操作系统提供的独立的可执行文件,常用的有:
SYS(传递系统文件)、FDISK(创建分区)、FORMAT(格式化磁盘)、XCOPY(复制目录)、DELTREE(删除目录)、MOVE(移动文件)、EDIT(仿图形界面的文本编辑器)、MOUSE(启用鼠标)等。
●生成文本文件
⏹TYPE内部命令和I/O重定向:
typecon>*.txt,按Ctrl+C组合键退出。
⏹Edit外部命令:
仿图形界面的文本编辑程序edit.exe。
⏹XCOPY外部命令:
如A:
\>xcopytestb:
\/s
8文件加载
1)要求
掌握根目录文件加载的方法和步骤,会编写加载FAT12软硬盘根目录中的LOADER.BIN文件的汇编代码。
2)重点
●引导扇区的主要功能是加载操作系统的装入程序LOADER.BIN
●LOADER.BIN一般位于磁盘文件系统的根目录中
●引导程序中加载LOADER.BIN文件到内存的主要步骤
⏹在根目录中查找LOADER.BIN文件所对应的条目
1.设当前扇区号为根目录的起始扇区号
2.读根目录的当前扇区到内存中的加载地址
3.依次比较当前扇区中各个文件条目(共16个)中的文件名串与“LOADER.BIN”
4.若无相等的文件条目,前扇区号加1,转到2
5.若找到相等的文件条目,从该条目获取起始簇号N
⏹利用文件的首簇号及FAT项来确定文件各数据块的位置,并利用磁盘中断将数据块复制到指定内存
6.计算出簇号N所对应的装载文件的扇区号
7.调用读扇区函数将装载文件的当前扇区读到内存中加载地址的当前扇区
8.由当前簇号值N计算其对应FAT项在FAT表中的偏移地址D(=N*1.5B),由D值计算出FAT项所在扇区的序号K(=FAT起始扇区号+D/512)和偏移值O(=D%512)
9.调用读扇区函数将磁盘的(FAT表中的)K号和K+1号两个扇区(因为一个FAT项可能跨越两个扇区)读入内存缓冲区(8F000h)
10.利用偏移值O获取FAT项值N(=文件下一个簇的序号)
11.若N 12.若N>=FF8h,则文件已经读完,跳转到装载程序 9实模式下的中断处理 1)要求 了解PC机中断的分类、IVT、CPU响应和IRET的功能,掌握中断控制器8259A的初始化和操作方法,了解计时器8253的组成、输入频率、初始节拍和工作过程,掌握通过8253的I/O端口设置计时器时钟中断频率的方法,会编写初始化8259A和设置其起始中断号、屏蔽中断请求和发送EOI的汇编代码,会编写设置计时器8253的时钟中断频率的汇编代码。 2)重点 ●分类 ⏹屏蔽(x86处理器有两条外部中断请求线): NMI(NonMaskableInterrupt,不可屏蔽中断)和INTR(InterruptRequest,中断请求[可屏蔽中断]),不可屏蔽中断的优先级要高于可屏蔽中断的。 ⏹软硬: 硬件中断——由两个级联的8259A芯片所代理的可屏蔽外设中断、软件中断——BIOS中断或由操作系统定义的系统服务中断(用inti指令调用)。 ●IVT: x86计算机在启动时会自动进入实模式状态,并由主板上的系统BIOS初始化8259A的各中断线的类型(0号为时钟中断),同时在内存的低位区(地址范围为0~1023[3FFH],1KB)创建含256个中断向量(存放中断处理程序的入口地址)的表IVT(InterruptVectorTable,中断向量表),其中每个中断向量[地址]占4个字节,格式为: 16位段值: 16位偏移值,字节序为: IP、CS。 ●CPU响应: 在实模式下,每当中断发生时,CPU都会中止当前程序的运行,并先后将寄存器FLAGS、CS和IP的当前值压入当前程序栈,接着清除IF标志(IF=0以禁止中断),最后转换程序控制到IVT中的中断号i所对应(4*i处)的向量所指定的中断处理程序的入口位置。 ●中断返回指令: IRET=POPIP、POPCS、POPF ●可编程中断控制器8259A ⏹PC机中有两个级联的8259A ⏹每个8259A有8根中断请求线IR0~IR7,从8259A被级联到主8259A的第3根中断请求线IR2上。 ⏹每个8259A都有两个I/O端口,主8259A所对应的端口地址为20h和21h,从8259A的为A0h和A1h。 程序员可通过in/out指令来读写这些端口,从而操作这两个中断控制器。 ⏹初始化: 8259A的初始化由有严格顺序的4步组成 1.往端口20h(主片)[或A0h(从片)]写入ICW1 2.往端口21h(主片)[或A1h(从片)]写入ICW2(设置起始中断向量号) 3.往端口21h(主片)[或A1h(从片)]写入ICW3 4.往端口21h(主片)[或A1h(从片)]写入ICW4 ⏹操作: 在初始化8259A后,可在任何时候,以任何顺序向8259A发送OCW(OperationCommandWord,操作控制字) ◆OCW1(21h或A1h端口)——屏蔽中断请求 ◆OCW2(20h或A0h端口)——发送EOI(EndofInterrupt,中断结束) ◆OCW3(20h或A0h端口)——(=10或11)设置下一个读端口的动作将要读取IRR(未处理中断)或ISR(正在处理的中断)寄存器的内容。 ●计时器/可编程时钟8253 ⏹组成: 由石英晶体振荡器、计数器和寄存器三部分组成 ⏹输入频率: 1.19MHz(1,193,181.8181Hz) ⏹工作过程: 计时器在启动时,将保持寄存器中的值复制到计时器中。 在晶振每来一个脉冲时,计时器的值减1。 当计时器的值减至0时,引发一个中断。 然后,寄存器将自动把其中的值复制到计时器中,再重新开始计数。 这样会产生周期性的中断,称为时钟节拍 ⏹计数器: 8253中有3个16位计数器,作用各不相同。 ◆计数器0——输出到IRQ0,产生(18.2Hz的)周期性时钟中断 ◆计数器1——产生输出间隔为15μs的脉冲,用于DMA刷新 ◆计数器2——输出不同频率的方波,经75477电流驱动器放大后,推动扬声器发出不同频率的声音 ⏹初始时钟中断频率=1193182/65535≈18.2(为时钟的最低频率值) ⏹I/O端口: 8253有4个I/O端口——40h(计数器0)、41h(计数器1)、42h(计数器2)、43h(控制字寄存器)。 不能直接写计数器端口,须先向控制字寄存器写入8位的控制字来确定8253的工作方式(mode)和选择计数器 ⏹设置计时器的时钟中断频率: 对应于8253中计数器0的工作方式2,对应的控制字值为34h。 通过修改8253中计数器0的值(=1193182/n,每秒n次中断),可设置自己的计时器中断的频率(为n) 10实模式下的进程调度 1)要求 掌握实模式下进程调度的方法和步骤,包括编写应用程序(直接改写显存来显示字符)、重写装入程序以加载内核和各应用程序、定义PCB表数组、设置时钟中断频率、在时钟中断处理程序中保存上下文寄存器值并调用进程调度程序、三种栈及栈的切换、进程切换,会编写(多个)应用程序、(软硬盘)装入程序、时钟中断处理程序和(多个)进程间的调度程序的汇编代码。 2)重点 ●方法和功能: 采用汇编语言,利用计时器,实现实模式下多个进程间的简单切换 ●用户进程: 编写三个功能相同的应用程序,分别在各自行的当前位置重复显示字符A、B、C ●显示字符的方法: 为了以避免中断重入,不调用显示中断int10h,而是采用直接改写文本窗口所对应显存内容的方法来显示字符 ●延时: 为便于测试观察,(因为CPU速度太快)需使用延时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 原理 实验 复习 考试