您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 10级《操作系统原理实验》试卷A及答案
1《中山大学授予学士学位工作细则》第六条考试作弊不授予学士学位计算机科学系2011第二学期《操作系统原理实验》期末考试试题(A)任课教师:李才伟&凌应标考试形式:开卷考试时间:2小时年级:10班别:AB网安专业:计科&网工&信安姓名:_____学号:_成绩_注意:答案一定要写在答卷中,写在本试题卷中不给分。本试卷要和答卷一起交回。一.填空题(每小题2分,共30分)1.实验中使用过的虚拟机软件有___。2.引导扇区是磁盘的第___个物理扇区,其最后两个字节的十六进制值为___。3.Windows下可用于写软盘映像的软件工具有___。4.创建软盘映像文件的Bochs程序为___,Bochs虚拟机的配置文件为___。5.FAT的英文原文是___,中文译文为___。6.通常FAT12软盘的每个簇有___个扇区,每个扇区有___个字节。7.PC机的中断控制器和可编程计时器的型号分别为___和___。8.IA-32中描述符和选择符的大小分别为___B和___B。9.IA-32的特权级有__个级别和___种类型。10.段选择符的低三位全为0表示___,全为1表示___。11.打开和关闭可屏蔽中断的CPU指令分别为___和___。12.在实模式和保护模式下,默认的时钟中断号分别为___和___。13.IA-32采用的主要虚拟内存管理方法为___,基本的页面大小为___。14.将程序的入口安排在指定位置的汇编操作符为___、链接选项为___。15.在Make文件中,$@和$分别表示___和___。二.问答题(每小题5分,共30分)1.列出在Windows下OS编程实验所用的软件工具,并给出它们各自的主要功用。2.说明用WinHex将大小为800字节的文件hello.com写入FAT12软盘映像a.img中的主要步骤和参数。3.给出GDT、LDT、IDT、TSS的英文原文和中文译文及其主要功用。4.进入保护模式的主要步骤有哪些?5.给出在保护模式下从特权级0的内核程序切换到特权级3的用户进程的思路、步骤和代码段。6.写出在Linux中,先创建挂载目录/mnt/floppy、再挂载软盘映像a.img、然后将当前目录中的b.com文件复制到挂载目录、接着列出挂载目录中的文件、最后卸载软盘映像的系列命令。警示2三.编程题(每小题10分,共40分)1.编写可编译成COM文件的完整汇编程序,利用BIOS中断实现在屏幕中央显示黑底红字的字符串“OSPrinciples”。2.编写创建只含FAT12分区BPB与EPBP数据(不显示字符串)的引导扇区,并设置名为“OSTest”的卷标条目的完整汇编程序。3.编写将时钟中断号设置成40h,再将时间间隔设置成每秒24次的汇编代码段。4.从下面的两个小题中任选一题:1)编写可编译成COM文件的完整汇编程序,获取并显示当前系统的内存信息,要求只保存和显示OS可用类型的部分,8字节整数用高位在前的十六进制数显示。2)编写定义和装入GDT的相关汇编代码段。其中的GDT含3个段描述符:空白(系统要求)、CODE(代码段)和VIDEO(彩色文本窗口对应的显存数据段),代码段的基址和长度分别为SegCodeBase和SegCodeLen。表示代码段、可读写数据段、32位段的符号常量分别为DA_C、DA_DRW和DA_32。3《操作系统原理实验》试题参考答案一.填空题(每小题2分,共30分)1.VMware、Bochs2.1、55AA3.DiskWriter/FloppyWriter、WinImage、WinHex4.DiskImageCreationTool(bximage.exe)、bochsrc[.bxrc]5.FileAllocationTable、文件分配表6.1、5127.8259A、82538.8、29.4、310.GDT/特权级0、LDT/特权级311.STI、CLI12.8、32(20h)13.段页式、4KB14.org、-Ttext15.目标、首个先决条件(源代码文件)二.问答题(每小题5分,共30分)1.NotePad++:编写源程序、NASM:编译汇编程序、WinHex:编辑软盘映像和U盘、DiskWriter/FloppyWriter:将引导扇区等写入软盘映像、WinImage:将文件复制进FAT12软盘映像、Debug:调试汇编程序、Bochs虚拟机:运行测试、DOS软盘映像:运行测试2.操作步骤和参数:a)启动WinHex、打开hello.com和a.img文件b)创建文件条目:在a.img中定位到根目录区(起始地址为2600h),找到一个空白的文件条目(每个条目20h/32B,起始字节的值为0的为空白条目),在条目开始处写入8+3的文件名(全大写,不足的补空格符20h)“HELLOCOM”、接着是文件属性20h(普通档案文件)、保留10B(全设为0)、时间、日期、首簇号(?)、文件大小800(20h03h)等c)设置FAT项:定位到a.img的FAT#1区(起始地址为200h),找到2个相连的空白FAT项(每项12位/1个半字节,值为0的为空白项),置第1个FAT项的值=第2个FAT项的序号,置第2个FAT项的值=FFh(表示文件结束)。FAT项的序号的计算方法:项序号=项首地址相对于FAT#1区起始地址的偏移量/1.5。例如,若第1个FAT项的地址为203h,则序号=3/1.5=2,第2个FAT项的序号自然=3(4.5[4的高4位]/1.5)。再定位到a.img的FAT#2区(起始地址为1400h),将对应的FAT项填上同样的值d)填写文件条目的首簇号:再一次定位到a.img的根目录区(起始地址为2600h),在刚才创建的文件条目的偏移1Ah处,填上上面算得的第1个FAT项的序号e)写入文件数据:由首簇号计算文件数据区的首地址=(首簇号+31)*512[=(3+31)*512=17408=44400h],定位到a.img的该地址处,(切换到hello.com文件)选中并复制(Ctrl+A、Ctrl+C)hello.com的全部内容,(再切换回a.img文件)粘贴到文件数据区的首地址处(Ctrl+B)f)保存a.img文件,关闭WinHex3.a)GDT:GlobalDescriptorTable,全局描述符表,含有(系统程序的代码段和数据段的)段描述符和LDT、IDT、TSS、任务门等描述符表项,用于(系统)程序和LDT、IDT、TSS、任务等的寻址b)LDT:LocalDescriptorTable,局部描述符表,含有程序代码段、数据段和堆栈段的段描述符,用于应用程序的寻址c)IDT:InterruptDescriptorTable,中断描述符表,包含中断向量的入口地址,用于中断处理d)TSS:Task-StateSegment,任务状态段,包含用于保护任务运行现场的数据结构,用于任务切换4.准备GDT、用LGDT指令将GDT参数加载到寄存器GDTR、打开A20地址线、置CR0寄存器的PE位、跳转进入保护模式5.思路:利用远程调用的返回过程来实现从高特权级0到低特权级为3的代码转移步骤:先将用户进程的SS、ESP、CS和EIP依次压栈,再利用远调用返回指令RETF实现代码转移,同时也完成了从特权级0的内核程序到特权级3的用户进程的转换代码:pushSelectorStack3;SSpushTopOfStack3;ESPpushSelectorCodeRing3;CSpush0;EIPretf;Ring0-Ring36.sudomkdir/mnt/floppy、sudomount-oloopa.img/mnt/floppy、sudocpb.com/mnt/floppy、dir/ls/mnt/floppy、sudoumount/mnt/floppy三.编码题(每小题10分,共40分)1.源代码:org100h;告诉编译器程序加载到100H处movax,cs;置DS和ES=CSmovds,axmoves,axcallDispStr;调用显示字符串函数jmp$;无限循环DispStr:;显示字符串例程movax,BootMsgmovbp,ax;ES:BP=串地址movcx,13;CX=串长movah,13h;AH=BIOS中断的功能号moval,01h;AL=1表示光标放到串尾movbh,0;BH=页号movbl,0ch;BL=颜色(黑底红字)movdh,12;DH=行号movdl,33;DL=列号int10h;调用10h号中断5ret;函数返回BootMsg:;显示用的字符串dbOSPrinciples2.源代码;引导扇区jmpshortLABEL_START;Starttoboot.nop;这个nop不可少;FAT12的BPB与EPBPBS_OEMNameDB'MY-OS1.0';OEMString,必须8个字节(不足补空格)BPB_BytsPerSecDW512;每扇区字节数BPB_SecPerClusDB1;每簇多少扇区BPB_RsvdSecCntDW1;Boot记录占用多少扇区BPB_NumFATsDB2;共有多少FAT表BPB_RootEntCntDW224;根目录文件数最大值BPB_TotSec16DW2880;逻辑扇区总数BPB_MediaDB0xF0;介质描述符BPB_FATSz16DW9;每FAT扇区数BPB_SecPerTrkDW18;每磁道扇区数BPB_NumHeadsDW2;磁头数(面数)BPB_HiddSecDD0;隐藏扇区数BPB_TotSec32DD0;wTotalSectorCount为0时这个值记录扇区数BS_DrvNumDB0;中断13的驱动器号BS_Reserved1DB0;未使用BS_BootSigDB29h;扩展引导标记(29h)BS_VolIDDD12345678h;卷序列号BS_VolLabDB'MyOSSystem';卷标,必须11个字节(不足补空格)BS_FileSysTypeDB'FAT12';文件系统类型,必须8个字节(不足补空格)LABEL_START:times510-($-$$)db0;用0填充剩下的空间db55h,0aah;引导扇区结束标志;填充两个FAT表的头两个项(每个FAT占9个扇区)db0f0h,0ffh,0ffh;介质描述符(F0h)和Fh、结束簇标志项FFFhtimes512*9-3db0;用0填充FAT#1剩下的空间db0f0h,0ffh,0ffh;介质描述符(F0h)和Fh、结束簇标志项FFFhtimes512*9-3db0;用0填充FAT#2剩下的空间;根目录中的卷标条目db'OSTest';卷标,必须11个字节(不足补空格)db8;文件属性值(卷标条目的为08h)dw0,0,0,0,0;10个保留字节dw0,4070h;创建时间,设为2012年3月16日0时0分0秒dw0;开始簇号(卷标条目的必需为0)dd0;文件大小(也设为0)63.源代码:;初始化8259A,将时钟中断号设置成40h-------------------------------------------------------------------Init8259A:moval,11hout20h,al;主8259A,ICW1.callio_delayout0A0h,al;从8259A,ICW1.callio_delaymoval,40h;IRQ0对应中断向量0x20out21h,al;主8259A,ICW2.callio_delaymoval,48h;IRQ8对应中断向量0x28out0A1h,al;从8259A,ICW2.callio_delaymoval,4;IR2对应从8259Aout21h,al;主8259A,ICW3.callio_delaymoval,2;对应主8259A的IR2out0A1h,al;从8259A,ICW3.callio_delaymoval,1out21h,al;主8259A,ICW4.callio
本文标题:10级《操作系统原理实验》试卷A及答案
链接地址:https://www.777doc.com/doc-3057177 .html