您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 11级《操作系统原理实验》试卷A及答案
1《中山大学授予学士学位工作细则》第六条考试作弊不授予学士学位计算机科学系2012第二学期《操作系统原理实验》期末考试试题(A)任课教师:李才伟考试形式:开卷考试时间:2小时年级:11班别:3专业:计科姓名:________学号:____成绩____注意:答案一定要写在答卷中,写在本试题卷中不给分。本试卷要和答卷一起交回。一.填空题(每小题2分,共30分)1.在我们的操作系统实验中,C与汇编语言混合编程的操作系统环境为___,其所用的虚拟机为___。2.测试用软盘映像文件的大小为___MB,使用的文件系统格式为___。3.Intel80386新增加的两个段寄存器分别为___和___。4.Intel处理器实模式下的中断向量表包含___个中断向量,每个中断向量有___位。5.Linux中挂载磁盘映像的命令为___,C语言的编译器为___。6.将程序的入口安排在指定位置的汇编操作符为___、LD的链接选项为___。7.ELF的英文原文是___,中文译文为___。8.在FAT的文件条目中,普通文件和子目录的文件属性值分别为___和___。9.在IA-32的保护模式下,分段用于___,分页用于___。10.IA-32处理器的4个系统地址寄存器分别为___。11.IA-32中的描述符和选择符大小分别为___位和___位。12.TSS的主要功用为___,TSS描述符只能位于___描述符表中。13.控制保护模式的寄存器为___,激活保护标志位于其___位。14.IA-32的三种特权级类型分别为___、___和___。15.在Make文件中,$@和$分别表示___和___。二.问答题(每小题5分,共30分)1.在实模式下的进程调度中是如何实现堆栈切换的?2.IA-32的保护模式相比实模式的主要优点有哪些?3.给出IA-32保护模式下的段寄存器的内容、组成和功用。4.给出GDT和LDT的英文原文和中文译文,它们有哪些主要功用和区别?5.启动分页机制的主要步骤有哪些?6.给出IA-32段页式保护模式下(采用4KB页面大小与两级分页方式的)逻辑地址和线性地址的构成及转换成物理地址的方法。警示2三.编码题(每小题10分,共40分)1.编写一个引导扇区汇编程序,在文本屏幕的中央显示黑底亮绿字的个性化字符串:XXXloveOS!。其中的XXX为你自己姓名(如张三丰)的拼音(如ZhangSanfeng)。2.编写满足如下要求的完整汇编程序:在(利用DiskWrite/FloppyWriter)写入(C/H/S=80/4/63的)10MB硬盘映像文件后,可创建(不含引导代码的)分离的主引导扇区和(序列号为你学号的)FAT12的分区引导扇区,初始化两个FAT表,并在根目录中添加名为“10MBOSHD”卷标条目。3.编写可生成COM文件的完整汇编程序,要求在文本屏幕顶行中央,每间隔一秒钟,交互显示黑底亮白字的字符O和S。4.已知已经初始化好的GDTR指针为GdtPtr,已知32位代码段的选择符为SelectorCode32,写出进入保护模式汇编程序的剩余代码部分。3《操作系统原理实验》试题参考答案一.填空题(每小题2分,共30分)1.虚拟机中的Linux(Ubuntu)、VMware2.1.44、FAT123.FS、GS4.256、325.mount、GCC6.org、-Ttext7.ExecutableandLinkableFormat、可执行与可链接格式8.0、10h9.内存(访问)保护、虚拟内存(管理)10.GDTR、LDTR、IDTR、TR11.64、1612.保存任务运行现场(用于任务切换)、全局(GDT)13.CR0、最低/0/PE14.CPL、DPL、RPL15.目标、首个先决条件(源代码文件)二.问答题(每小题5分,共30分)1.实模式下的进程调度涉及三种不同的栈:应用程序栈、进程表栈、内核栈。其中的进程表栈,只是为了保存和恢复进程的上下文寄存器值,而临时设置的一个伪局部栈,不是正常的程序栈。在时钟中断发生时,实模式下的CPU会将FLAGS、CS、IP先后压入当前被中断进程(应用程序)的堆栈中。为了及时保护中断现场,进程调度程序将所有上下文寄存器也保存在被中断程序的堆栈中。在调度程序中,再切换到进程表栈,将这些寄存器值复制到内核进程表中的对应PCB中。为了能够同时完成进程切换和栈切换,先切换到下一进程的栈,再将返回指令RETF所需的IP和CS的值,预先压入此栈中,在恢复上下文寄存器值后,再使用RETF指令进行进程切换。2.可访问大容量内存、提供内存保护、支持内存分页/虚拟内存管理。保护模式下可访问32位的地址空间,突破了实模式的20位地址空间限制;在保护模式下,提供了段长和特权级,通过特权级验证、访问限制和越界检查,可以保护操作系统和应用程序的代码和数据不被非法访问和修改。而实模式下无任何访问控制,一个程序都可以访问和修改任何其他程序的代码和数据,无任何安全可言;保护模式下提供了建立在基本的带保护的分段机制之上的内存分页机制,支持虚拟内存管理。而实模式下只有无保护的分段机制;大容量内存的访问、内存的保护和分页,是构建现代操作系统的基础。3.在保护模式下,16位的段寄存器的内容,不再是实模式下(最大64KB段长的)段基址,而是指向段描述符的一种数据结构段——选择符,包含段描述符表(GDT或LDT)的索引(偏移值,因为描述符的大小为8字节,所以该偏移值的低3位为0)和特权级等设置。其低2位为特权级别,第3位为0/1对4应于全局/局部描述符表,高13位为在描述符表中的偏移值(的高13位)。其实在IA-32处理器中,为了避免地址转换时的频繁内存访问,除了6个可见的段寄存器外,还有隐藏不可见的与每个段寄存器对应的64位影子结构(内容来自段描述符),包含段的基地址、界限和访问信息,用于实现分段管理中的定位和保护功能,它们会在(用MOV指令)装入选择符时被CPU由对应描述符来同步设置。4.GDT:GlobalDescriptorTable,全局描述符表,可含有(系统程序的代码段和数据段的)段描述符和LDT、IDT、TSS、任务门和调用门等描述符表项,用于程序和LDT、IDT、TSS、任务等的寻址。LDT:LocalDescriptorTable,局部描述符表,可含有(应用程序的代码段、数据段和堆栈段的)段描述符、任务门和调用门描述符表项,一般用于应用程序的寻址。区别:GDT可包含LDT、IDT和TSS等描述符表项,可用于访问操作系统内核及LDT、IDT和TSS等系统数据结构,LDT不能可包含LDT、IDT和TSS等描述符表项,只能用于访问应用程序的各种段。整个系统只有一个GDT,而每个应用程序一般都有一个自己的LDT(但是CPU中只有一个LDTR寄存器,用于存放当前应用程序的LDT)。GDT本身不是一个段,而LDT本身是一个段(为LDT类型的系统段),GDT中必须包含指向每个LDT段的段描述符,使用对应的段选择符访问。5.1)准备页目录PD和页表PT(分配内存空间、在描述符表中增加PD和PT的段描述符)2)让控制寄存器CR3指向PD的起始地址3)置控制寄存器CR0的最高位PG为14)短跳转启动分页机制6.逻辑地址:a)构成:在IA-32的分段保护模式下,48位的逻辑地址由一个16位的段选择符和一个32位的偏移量构成b)转换:由段选择符定位指定描述符表中对应段描述符,再由段描述符中的段基地址加上逻辑地址中的偏移量,可得到线性地址(如果没有分页,该线性地址就是物理地址)线性地址a)构成:采用4KB页面大小与两级分页方式时,32位的线性地址由一个10位的页目录序号、一个10位的页表序号和一个12位的页偏移量构成b)转换:由线性地址中的页目录序号定位CR3所指的页目录中的对应页目录项,再由页目录项所指的页表和线性地址中的页表序号定位页表中的页表项,最后由页表项所含的页基地址加上线性地址中的页偏移量,可得到物理地址三.编码题(每小题10分,共40分)1.源代码org7c00h;告诉编译器程序加载到7C00H处movax,cs;置DS和ES=CSmovds,axmoves,axcallDispStr;调用显示字符串函数jmp$;无限循环DispStr:;显示字符串例程movax,BootMsgmovbp,ax;ES:BP=串地址5movcx,18;CX=串长movah,13h;AH=BIOS中断的功能号moval,01h;AL=1表示光标放到串尾movbh,0;BH=页号movbl,0ah;BL=颜色(黑底亮绿字)movdh,12;DH=行号movdl,31;DL=列号int10h;调用10h号中断ret;函数返回BootMsg:;显示用的字符串dbLiCaiweiloveOS!times510-($-$$)db0;用0填充剩下的扇区空间db55h,0aah;引导扇区结束标志2.源代码times446db0;用0填充分区表前的剩余空间;下面是首个分区表项DPTI_Activedb80h;分区已激活DPTI_StartHeaddb0;开始磁头号=0DPTI_StartSectdb1;开始扇区号=1(首个物理扇区)DPTI_StartCyldb1;开始柱面号=1DPTI_PartTypedb1;分区类型=1(FAT12)DPTI_EndHeaddb3;结束磁头号=3DPTI_EndSectdb63;结束扇区号=63=3FhDPTI_EndCyldb79;结束柱面号=79=4FhDPTI_StartAddrdd63*4;分区起始扇区序号=63*4=252=0FChDPTI_Sizedd20160-63*4;分区大小(扇区总数)=20160-252=19908=4DC4htimes510-($-$$)db0;用0填充剩下的扇区空间db55h,0aah;引导扇区结束标志times512*(63*4-1)db0;用0填充分区前的空间;分区头jmpshortLABEL_END;跳转到代码起始处nop;这个nop(无操作指令)不可少(占位字节);下面是FAT12磁盘的头BS_OEMNameDB'MyOS1.0';OEMString,必须8个字节(不足补空格)BPB_BytsPerSecDW512;每扇区字节数BPB_SecPerClusDB8;每簇多少扇区BPB_RsvdSecCntDW1;Boot记录占用多少扇区BPB_NumFATsDB2;共有多少FAT表BPB_RootEntCntDW512;根目录文件数最大值6BPB_TotSec16DW19908;逻辑扇区总数BPB_MediaDB0xF8;介质描述符(软盘为0xF0、硬盘和U盘为0xF8)BPB_FATSz16DW8;每FAT扇区数BPB_SecPerTrkDW63;每磁道扇区数BPB_NumHeadsDW4;磁头数(面数)BPB_HiddSecDD0;隐藏扇区数BPB_TotSec32DD0;BPB_TotSec16为0时这个值记录扇区数BS_DrvNumDB80h;中断13的驱动器号BS_Reserved1DB0;未使用BS_BootSigDB29h;扩展引导标记(29h)BS_VolIDDD11348123h;卷序列号BS_VolLabDB'MyOSSystem';卷标,必须11个字节(不足补空格)BS_FileSysTypeDB'FAT12';文件系统类型,必须8个字节(不足补空格)LABEL_END:times512*(63*4+1)-2-($-$$)db0;用0填充分区表前的剩余空间db55h,0aah;引导扇区结束标志;填充两个FAT表的头两个项(每个FAT占8个扇区)db0f8h,0ffh,0ffh;介质描述符(F8h)和Fh、结束簇标志项FFFhtimes512*8-3db0;用0填充FAT#1剩下的空间db0f8h,0ffh,0ffh;介质描述符(F0h)和Fh、结束簇标志项FFFhtimes512*8-3db0;用0填充FAT#2剩下的空间;根目录中的卷标条目db'10MBO
本文标题:11级《操作系统原理实验》试卷A及答案
链接地址:https://www.777doc.com/doc-3096666 .html