2022年操作系统原理实验复习考试 .pdf
《2022年操作系统原理实验复习考试 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统原理实验复习考试 .pdf(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统原理实验笔试复习重点与考试要求成绩计算 :平时 40 分 考勤问答( 5 分) + 平时作业( 15 分) + 大作业( 20 分) + 期末 60 分 笔试( 30 分) + 操作( 30 分) = 100 分考试形式: 开卷笔试(可以带电脑)考试时间: 20XX 年 6 月 10 日(周日)下午2:304:30 考试地点 :东新区教学楼B203(信安 /网工)和B204(计科)题型: 填空( 15 题,每题 2 分,共 30 分) 、问答( 6 题,每题 5 分,共 30 分) 、编程( 4题,每题 10 分,共 40 分)1 实验环境与引导参见“ 01 操作系统的实验环境与引导.
2、doc”和“ 03FAT 文件系统与文件装载.doc”中的3.1 和 2.3。1.1 环境1.1.1 基本环境硬件平台: PC 机( IA-32 )操作系统: Windows XP/7 、虚拟机中的Linux ( Ubuntu)虚拟机:Virtual PC (已淘汰)VMware (Ubuntu、编程)Bochs(测试)在 VMware 中创建 Ubuntu 虚拟机,并安装 Ubuntu Linux(包括另外安装GCC、 NASM和 Samba) ,供以后C 与汇编混合编程时使用1.1.2 编译环境与工具汇编语言操作系统: Windows XP/7 编译器: NASM C 语言与汇编混合编程精
3、选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 47 页操作系统:虚拟机中的Linux (Ubuntu)编译器: GCC 与 NASM 链接器: LD 1.1.3 其他开发工具Windows 平台NotePad+源代码编辑,编写汇编和C 语言源程序、配置文件等文本文件WinHex 二进制编辑,文件、软盘映像、磁盘FloppyWriter 将引导扇区等写入软盘映像WinImage 用于将文件复制进FAT12 软盘映像Debug调试汇编程序Linux 平台Samba Linux 与 Windows 进行网络共享的工具(已淘汰)gedit图形界
4、面的文本编辑器,用于编写汇编和C 语言源程序1.1.4 测试环境虚拟机: Bochs 操作系统: DOS(MS-DOS 6.22 或 FreeDOS 1.1)系统软盘映像外存: (带 FAT12 的) 1.44MB 软盘映像、 U 盘文件格式: COM 、BIN 、 ELF 1.2 引导1.2.1 引导过程计算机加电或重启CPU 复位内存清零内存奇偶校验跳转到地址为FFFF0h 处的系统BIOS 入口指令,执行主板ROM 中的例程检查各个端口, 识别并初始化设备,然后将这些设备连接到计算机上,并提供在设备上的I/O 服务创建两个数据区中断向量表和BIOS 数据区读启动盘的第一个物理扇区,如果其
5、最后两个字节为55h 和 AAh ,则装入该扇区到内存地址7C00h 处,并跳转到7C00h 处执行(引导扇区里面的指令,一般是装入操作系统的引导程序)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 47 页1.2.2 引导扇区引导扇区( Boot Sector)是磁盘的第一个物理扇区(512B) ,构成:主引导记录( MBR = Master Boot Record ,446B)磁盘分区表( DPT = Disk Partition Table , 4*16=64B )引导记录标识符(BRID = Boot Record IDenti
6、fier,2B,55h AAh )1.3 引导实验1.3.1 编写引导汇编代码用 NotePad+编写汇编源代码(参见“01 操作系统的实验环境与引导.doc”的 3.3)用 org 操作符设置程序的入口地址为7C00h 设置 DS 和 ES=CS 调用后面定义的显示字符串函数进入无限循环定义显示字符串函数用10h 号中断的13h 功能实现(红色)字符串显示定义字符串常量“Hello, OS world!”用 times 伪指令将剩余空间填充为0 将引导扇区的最后2 个字节设置为55h 和 AAh 将写好的汇编程序用文件名boot.asm 保存到 NASM 程序所在的目录中用 NASM 将程序
7、编译成二进制文件boot.bin:nasm boot.asm -o boot.bin 1.3.2 创建软盘映像参见“ 03FAT 文件系统与文件装载.doc”的 3.1 运行 Bochs 程序组中的“Disk Image Creation Tool ”程序( bximage.exe)在“ Please type ha or fd. hd ”后键入fd(指软盘,默认为硬盘hd)后回车在下面的选项中用回车选择默认的1.44MB 软盘在下面的选项中键入软盘映像文件的名称“bt.img ” (默认为“ a.img” )后回车再按任意键完成创建新建的软盘映像文件会被存放在Bochs 程序的主目录中将软盘
8、映像文件移动到Bochs 程序的“ dlxlinux ”子目录1.3.3 将 boot.bin写入软盘映像运行 FloppyWriter.exe 程序单击“ Write File to Image ” (写文件到映像)按钮在弹出的 “打开文件” 对话框中, 选中 NASM 程序目录中的boot.bin 文件后按 “打开”按钮精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 47 页在新弹出的 “打开文件” 对话框中, 选中 Bochs 程序的“dlxlinux ” 子目录中的bt.img文件后按“打开”按钮弹出含字符串“成功! ”的表示写
9、入成功的消息框1.3.4 用软盘映像启动虚拟机参见“ 03FAT 文件系统与文件装载.doc”的 2.3。修改 Bochs 虚拟机的配置文件用记事本或NotePad+打开 Bochs 程序的“ dlxlinux ”子目录中的虚拟机配置文件 bochsrc.bxrc 将其中的“ floppya: 1_44=floppya.img, status=inserted”行中的“ floppya.img ”改为我们自己的软盘映像文件“bt.img”将“ boot: c”行中的硬盘“c”改为“ floppy ” (软盘)保存 bochsrc.bxrc 文件重新启动Linux Demo in Bochs 2
10、.5.1虚拟机1.3.5 用 WinHex 编辑启动 U 盘注意!下面的操作可能会破坏U 盘的分区结构。插入(空白或闲散的)U 盘运行 WinHex 打开 boot.bin 文件选中“工具 /打开磁盘” 菜单项, 在弹出的 “编辑磁盘”对话框中, 选择下部的 “物理驱动器”中U 盘对应项,按“确定”钮打开U 盘选中 boot.bin 文件前面的非0 内容,按 Ctrl+C 复制到剪接板定位到 U 盘的开始处, 按 Ctrl+B(并在弹出的确认菜单中按“确定”钮) , 将 boot.bin中的代码复制到U 盘的启动扇区确保 U 盘的第一个物理扇区(即引导扇区)的最后两个字节为55h AAh 重启
11、计算机,选择用U 盘启动2 汇编程序与代码块装载2.1 CPU Intel 8086(16 位,实模式)、80286(16 位,保护模式) 、80386(32 位,保护模式+分页机制)IA-32(Intel Architecture-32 ,因特尔 32 位体系结构) = x86-32,包括 80386 和 80486 IA-64 = 指 Intel 公司的 64 位 CPU 安腾( Itanium)架构(与IA-32 不兼容)x64 = Intel 64 / IA-32e = AMD64 / x86-64 =( AMD 发明,与 IA-32 兼容) ,包括奔腾(Pentium) 、酷睿( C
12、ore) 、赛扬( Celeron) 、凌动( Atom )精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 47 页2.2 寄存器2.1.1 8086 寄存器Intel 8086 有 14 个 16 位寄存器。8 个通用寄存器4 个数据寄存器:AX (累加)、BX(基址)、CX(计数)、DX (数据)4 个指针变址寄存器:SP (堆栈指针) 、BP(基址指针) 、SI(源变址)、DI(目的变址)4 个段寄存器:CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段)2 个专用寄存器:IP(指令指针)、FLAGS (标志)2.1.2
13、 标志寄存器8086 的 16 位标志寄存器FLAGS 中一共定义了9 个标志位,其中的6 个状态标志位可用于条件代码,3 个控制标志位可影响指令的执行结果。6 个状态标志位:零标志 ZF(第 6 位)指明算术或比较运算的结果,可被JZ/JNZ 指令利用符号标志SF(第 7位)运算结果的符号,可被JS/JNS指令利用进位标志 CF(第 0 位)包含算术运算操作后最高位的进位或移位/循环操作后最后位的内容,可被JC/JNC 指令利用溢出标志 OF(第 11 位)指出算术运算后最高位溢出,可被JO/JNO 指令利用奇偶标志PF(第 2 位)指明在操作产生的结果中,低字节里为1 的位的数量的奇偶,可
14、被JPE/JNP 或 JPO 指令利用辅助进位标志AF(第 4 位)在字操作时发生低字节向高字节进位或借位时、在字节操作时发生低4 位向高 4 位进位或借位时, AF=1 , 否则为 0,无相关的 CPU指令3 个控制标志位:方向标志 DF(第 10 位)确定传送或比较字符串数据时的方向,默认DF=0 为左/上 /索引增加方向,可以用指令STD/CLD 来设置成递减/递增方向中断允许标志IF (第 9 位) 指明是否处理外部可屏蔽中断,可以用指令STI/CLI来设置要 /不处理中断2.1.3 80386 寄存器在 Intel 80386 CPU 中,8 个通用寄存器和2 个专用寄存器都从16
15、位扩展到了32 位(命名前增加了一个字母E=Extended ,扩展 ) ,但 4 个段寄存器仍然保留为16 位的,另外还增加了 2 个新的 16 位附加段寄存器FS 和 GS,使程序可同时操作的段达到6 个。80386( 80286)新增加的寄存器还有:4 个系统地址寄存器全局描述符表寄存器GDTR (32 位) GDT 的线性基址,相关的装入/保精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 47 页存寄存器的特权指令为LGDT/SGDT 局部描述符表寄存器LDTR (16 位) LDT 的段选择符, 相关的装入 /保存寄存器的特权
16、指令为LLDT/SLDT 中断描述符表寄存器IDTR (32 位) IDT 的线性基址,相关的装入/保存寄存器的特权指令为LIDT/SIDT 任务寄存器TR (16 位) TSS 的段选择符,相关的装入/保存寄存器的特权指令为LTR/STR 4 个 32 位的控制寄存器CR0 80286 的 16 位 MSW(Machine Status Word,机器状态字) 的 32 位扩展, 其最低位为PE (Protection Enable, 启用保护 模式 ) , 最高位为PG (Paging,分页)用于启动分页机制CR1未使用CR2存放引起页故障的线性地址CR3 页目录基址寄存器8 个调试寄存器
17、DR0DR7 8 个测试寄存器TR0TR7 2.3 BIOS 中断2.3.1 调用格式BIOS 中断调用的一般格式为:mov ah,功能号精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 47 页; 设置各种入口参数int 中断号2.3.2 常用 BIOS 中断显示字符 int 10h 的 0Eh 功能显示字符串int 10h 的 13h 功能读按键 int 16h 的 00h 功能读扇区 int 13h 的 02h 功能2.3.3 MY-OS 例引导扇区程序(boot1.asm) :显示 3个字符串( MY-OS 1.0 、(C) 20
18、12 Li Caiwei 、Please Key in characters (Esc to quit):+ 响铃换行回车) 、接受用户键入字符并回显到屏幕上。汇编代码参见“02 汇编程序与代码块装载.doc ” 中的 2.2 的 3。2.4 装载代码块将 boot1.asm 的第一行代码改为:org 7E00h,另存为boot2.asm 用 NASM 将 boot2.asm 编译为 boot2.bin 利用 WinHex 将 boot2.bin 写入 bt.img 的第二个扇区在原来的boot.asm 的基础上,增加装载第二个扇区到7E00h 处的汇编代码,保存为 boot3.asm,参见“
19、 02 汇编程序与代码块装载.doc”中的 3 用 NASM 将 boot3.asm 编译成 boot3.bin 利用 WinHex 或 FloppyWriter 将 boot3.bin 写入 bt.img 的第一个扇区用 bt.img 启动 Bochs 虚拟机2.5 Debug 常用的 debug 命令:R(Register 寄存器)查看、修改CPU 寄存器D(Dump 转储)查看内存中的内容E(Enter 键入)改写内存中的内容A(Assemble 汇编)以汇编指令的格式,在内存中写入一条机器指令U(Unassemble 反汇编)将内存中的机器指令翻译成汇编指令P( Proceed 继续进
20、行)单步执行,类似于Step Over T(Trace 跟踪)执行一条机器指令,类似于Step Into N(Name 名称)指定文件名,供L 和 W 命令使用L(Load 装入)读磁盘文件中的指定扇区到内存W(Write 写入)写内存数据到磁盘文件的指定扇区Q(Quit)退出debug 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 47 页?(帮助)显示命令清单2.6 COM 文件2.6.1 可执行文件格式BAT(batch file ,批处理文件)DOS/Windows 的一种基于ASCII 文本的脚本型可执行文件(扩展名为.ba
21、t 或.cmd,后者为Windows NT 引进)COM (command file,命令文件)DOS 的二进制裸格式,不分段,会被装载到当前段的 100h 处(需使用org 100h 指令, SP=100h-4) ,文件大小必须64KB-256B EXE(executable file ,可执行文件)DOS/Windows的主要可执行文件类型,有三种格式:MZ(Mark Zbikowski ,MS-DOS 的开发者之一) 原始的DOS 可执行文件格式,以字母串“ MZ ” (5A 4D)开头NE (New Executable , 新可执行)老式 16 位 Windows 可执行文件格式 (
22、包括 .exe和.dll 扩展名),1985 年由 Windows 1.0 引进。 NE 是一种分段的可执行文件,为了向后兼容,保留了MZ 文件头PE (Portable Executable,可移植可执行) Windows NT 3.1 于 1993 年引进的32位可执行文件格式(包括.exe、.dll 、.cpl、.ocx、.sys、.scr、.drv 扩展名),现在支持 x86、x64 和 IA-64 指令集架构和 .NET 框架。 PE格式是 Unix 的老式可执行文件格式 COFF(Common Object File Format ,公共对象文件格式)的修改版ELF (Execut
23、able and Linkable Format ,可执行与可链接格式)类Unix 操作系统的标准二进制文件格式2.6.2 生成和运行 COM 文件将 org 7C00h 改为 org 100h (如果需要用到堆栈如有函数调用 ,还需设置SS=CS、SP=100h-4)例子: Hello (boot.asm-hello.asm) 、MY-OS (boot1.asm- my-os.asm)用 NASM 编译成 com 文件:nasm *.asm -o *.com 在 DOS 命令行 /Windows 的命令窗口(如NASM 运行界面、“开始 /运行”的cmd)中,使用hello 或 my-os
24、启动运行2.6.3 COM 文件例 hello 下面是可以生成COM 文件的例子使用BIOS 的 10h 号中断的13h 号功能,在文本屏幕的左上角,显示黑底红字的字符串“Hello, OS world! ” 。源代码( hello.asm)org 100h ; 告诉编译器程序加载到100H 处mov ax,cs ; 置 DS 和 ES = CS 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 47 页mov ds,ax mov es,ax call DispStr ; 调用显示字符串函数jmp $ ; 无限循环DispStr: ; 显
25、示字符串例程mov ax,BootMsg mov bp,ax ; ES:BP=串地址mov cx,16 ; CX= 串长mov ah,13h ; AH=BIOS 中断的功能号mov al,01h ; AL=1 表示光标放到串尾mov bh,0 ; BH= 页号mov bl,0ch ; BL= 颜色(黑底红字)mov dh,0 ; DH= 行号mov dl,0 ; DL= 列号int 10h ; 调用 10h 号中断ret ; 函数返回BootMsg: ; 显示用的字符串db Hello, OS world! 用 NASM 编译成 com 文件: nasm hello.asm -o 在 NASM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统原理实验复习考试 2022 操作系统 原理 实验 复习 考试
限制150内