欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ICS第七章习题答案.pdf

    • 资源ID:88138891       资源大小:1.18MB        全文页数:5页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ICS第七章习题答案.pdf

    习题1.给出以下概念的解释说明。CPU的控制流正常控制流异常控制流进程逻辑控制流物理控制流并 发(concurrency)并 行(parallelism)多任务时间片进程的上下文系统级上下文用户级上下文寄存器上下文进程控制信息上下文切换内核空间用户空间内核控制路径异常处理程序中断服务程序故 障(fault)陷 阱(trap)陷阱指令终 止(abort)中断请求信号中断响应周期中断类型号开中断/关中断可屏蔽中断不可屏蔽中断断点程序状态字寄存器程序状态字向量中断方式中断向量中断向量表异常/中断查询程序中断描述符表I/O 中断时钟中断处理器中断现场信息I/O 中断服务程序中断服务例程系统调用系统调用号系统调用处理程序系统调用服务例程2.简单回答下列问题。(1)引起异常控制流的事件主要有哪几类?(2)进程和程序之间最大的区别在哪里?(3)进程的引入为应用程序提供了哪两个方面的假象?这种假象带来了哪些好处?(4)“一个进程的逻辑控制流总是确定的,不管中间是否被其他进程打断,也不管被打断几次或在哪里被打断,这样,就可以保证一个进程的执行不管怎么被打断其行为总是一致的。”计算机系统主要靠什么机制实现这个能力?(5)在进行进程上下文切换时,操作系统主要完成那儿项工作?(6)在 IA-32/Linux系统平台中,一个进程的虚拟地址空间布局是怎样的?(7)简述异常和中断事件形成异常控制流的过程。(8)调试程序时的单步跟踪是通过什么机制实现的?(9)在异常和中断的响应过程中,CPU(硬件)要保存一些信息,这些信息包含哪些内容?(1 0)在执行异常处理程序和中断服务程序过程中,(软件)要保存一些信息,这些信息包含哪些内容?(1 1)普通的过程(函数)调用和操作系统提供的系统调用之间有哪些相同之处?有哪些不同之处?(1 2)在 IA-32中,中断向量表和中断描述符表各自记录了什么样的信息?3.根据下表给出的4 个进程运行的起、止时刻,指出每个进程对P1P2、P 1-P 3、P 1-P 4、P2P3、P3一P 4 中的两个进程是否并发运行?参考答案:P 1和 P2并发;P1和 P3并发;P1和 P4并发;P2和 P3并发;P3和 P 4并发。进程开始时刻结束时刻P117P246P338P4254.假设在IA-32/linux系统中-个maui函数的C 语言源程序P 如下:1 unsigned short b2500;2 unsigned short k;3 main()4 5 b1000=1023;6 b2500=2049%k;2497 b l 1 0 0 0 0 J=2 0 0 0 0;8 )经编译、链接后,第5、6和7行源代码对应的指令序列如下:1m o v w$0 x 3 f f,0 x 8 04 9 7 d 0/b 1 000=1 02 32m o v w0 x 8 04 a 3 2 4,%c x/R c x =A:3m o v w$0 x 8 01,%a x/R L a x J=2 04 94x o r w%d x,%d x/R d x =O5d i v%c x/R l d x =2 04 9%J t6m o v w%d x,0 x 8 04 a 3 2 4/b 2 5 00=2 04 9%i t7m o v w$0 x 4 e 2 0,0 x 8 04 d e 2 0/b 1 0000=2 0000假设系统采用分页虚拟存储管理方式,页大小为4KB,第1行指令对应的虚拟地址为0 x 8 04 8 2 c 0,在运 行P对应的进程时,系统中没有其他进程在运行,回答下列问题。(1)对于上述7条指令的执行,是否可能在取指令时发生缺页异常?(2)执 行 第1、2、6和7行指令时,在访问存储器操作数的过程中是否会发生页故障或其他什么问题?哪些指令中的问题是可恢复的?哪些指令中的问题是不可恢复的?分别画出第1行 和 第7行指令所发生故障的处理过程示意图。(3)执行第5条指令时会发生什么故障?该故障能否恢复?参考答案:因为L i n u x在初始化时,通常将所有段的段基址都设为0,所以,虚拟(逻辑)地址就是线性地址。(1)第1行指令的虚拟地址为0 x 8 04 8 2 c 0,其线性地址为O x 8 O 4 8 2 c O,而页大小为4KB,因此,第1行指令不是一个页面的起始地址,所以,在执行第1行指令前面的指令时,上述7条指令被同时装入主存,因而,上述7条指令的执行过程中都不会在取指令时发生缺页。(2)执 行 第1行指令过程中,数据访问时会发生缺页,但是是可恢复的故障。因为,对于地址为0 x 8 04 9 7 d 0的b 1 000的访问,是对所在页面(起始地址为0 x 8 04 9 000,是一个4KB页面的起始位置)的第一次访问,因而对应页面不在主存。当CPU执行到该指令时,检测到缺页异常,即发生了页故障,此时,CPU暂 停P对应的用户进程的执行,将控制转移到操作系统内核,调出内核中的“页故障处理程序”执行。在页故障处理程序中,检查是否地址越界或访问越权,显然这里没有发生越界和越权情况,故将地址0 x 8 04 9 7 d o所在页面从磁盘调入内存,处理结束后,再回到这条m o v l指令重新执行,此时,再访问数据就没有问题了。处理过程如下图所示。页故障80482c0:movl$0 x3ff,0 x80497d0OS的页故障处理程序用户讲程返回到故障指令执行装入起始虚拟地址为0 x8049000所在页面到主存,并修改页表对于第2行指令的执行,数据访问时会发牛缺页,因为在地址0 x 8 04 a 3 2 4位于起始地址为0 x 8 04 a 000的页面中,对地址0 x 8 04 a 3 2 4的访问是该页的第一次访问。与第1行指令的数据访问一样,是可恢复的故障。对于第6行指令的执行,数据访问时不会发生缺页,因为地址0 x 8()4 a 3 2 4所在的页面(其起始地址为0 x 8 04 a(X)0的页面)一经在主存中。但是,该指令的执行会破坏原来存放在地址0 x 8 04 a 3 2 4中的变量k的值。对于第7行指令的执行,数据访问时很可能会发生页故障,而且是不可恢复的故障。显然,a 1 0000并不存在,不过,C编译器生成了对应的指令“m o v l$0 x 4 e 2 0.0 x 8 04 d e 2 0”,其中的地址0 x 8 04 d e 2 0偏离数组首地址0 x 8 04 9 00()已达2 x 1 0000+2=2 0002个单元,即偏离了4、5个页面,很可能超出了可读写数据区范围,因而当C P U执行该指令时,很可能发生地址越界或访问越权。若是这样的话,C P U就通过异常响应机制转到操作系统内核,即调出内核中的页故障异常处理程序执行。在页故障处理程序中,检测到发生了地址越250界或访问越权,因而页故障处理程序发送一个“段错误”信 号(SIGSEGV)给用户进程,用户进程接受到该信号后就调出个信号处理程序执行,该信号处理程序根据信号类型,在屏幕上显示“段故障(segmentation fault)”信息,并终止用户进程。处理过程如下图所示。用户讲程movl$0 x4e20,0 x804de20-页故障OS的页故障处理程序*检测到地址越界或访问越权,发送SIGSEGV”信号给用户进程(3)因为这里忘记给k 赋值,目 4是未初始化的变量,所以A/E.bss节中。通常.bss节中的变量初值都自动设为0,因而,执行第5 条指令时,会发生“整除0”故障,该故障是不能恢复的。5.若用户程序希望将字符串“hello,world!n”中的14个字符显示在标准输出设备文件stdout匕 则可以使用系统调用write对应的封装函数write。,“hello,world!n”,14),在IA-32/Linux系统中,可以用以下机器级代码(用汇编指令表示)实现。1movl$4,%eax调用号为4,送EAX2movl$1,%ebx/标准输出设备stdout的文件描述符为1,送EBX3movl$string,%ecx字符串“hello,world!n”的首地址等于string的值,送ECX4movl$14,%edx字符串的长度为1 4,送EDX5ini$0 x80系统调用针对上述机器级代码,回答下列问题或完成下列任务。(1)执行该段代码时I系统处于用户态还是内核态?为什么?执行完第5 行指令后的下一个时钟周期,系统处于用户态还是内核态?(2)第 5 行指令是否属于陷阱指令?执行该指令时:通过5 种 类 型(中断门、系统门、系统中断门、陷阱门和任务门)门描述符中的哪种类型门描述符来激活异常处理程序?对应的中断类型号是多少?对应门描述符中的字段P、DPL、TYPE的内容分别是什么?根据对应门描述符中的段选择符取出的GDT中的段描述符中的基地址、限界、字段G、S、TYPE(包 含 A)、DPL、D 和 P分别是什么?(3)参考第7.2.7节的内容,详细描述第5 行指令的执行过程。参考答案:(I)因为该段代码执行的是用户程序的功能,因此,在执行第5 行软中断指令(int$0 x80)进行系统调用之前,系统处于用户态,执行完第5 行指令后的下一个时钟周期,系统从用户态陷入到内核态执行。(2)第 5 行指令属于陷阱指令。执行该指令时,通过系统门(system gate)描述符来激活异常处理程序,对应的中断类型号是128。对应门描述符中的P=1(Linux总是把P 设成1),DPL=3,TYPE=1111B根据对应门描述符中的段选择符取出的GDT中的段描述符应该是内核代码段对应的段描述符(Linux下设定为表6.2 中所示的内核代码段,因为执行系统调用后应调出内核代码执行),所以,其基地址为0,限界为 FFFFFH,G=l,S=l,TYPE=1010,DPL=0,D=l,P=l。(参看 6.1.1 节和 7.2.8 节)有关TYPE的含义参见下图。251type=80 寸十进制值)3Ew。A-数据段,*TYPE说明,、1CT的郭 心:OP只读,十进制值pRpA。代码段户VMM电、I*3只读、已访问,8ag2(P只执行一2-OPa、32读 手务a(POPa只执行、已访问。3-2gW读写、已访问|10Pw1*(P执行、可读。OPwOP只读、向下扩展1W(P2执行、可读、已访问,Nw3只读、向下扩展、已访问/12PaWOPa只执行、一致i3NOP读写、向下扩展-13Pi*33OPw只执行、一致、已访问7。O3W读写、向下扩展、已访问。14wwI*3g执行、可读、一致15PawWw执行、可读、一致、已访问,(3)第 5 行指令的执行过程如下:确定中断类型号为128(0 x80),从 IDTR指向的IDT中取出第128个表项,这个表项实际上就是 Linux初始化时在ID T的 第 128项中设定的系统门描述符,其 中 P=l,DPL=3,TYPE=1111B,段选择符为0 x 6 0,指向GDT中的内核代码段描述符(kernel_code)(Linux全局描述符表(GDT)如下。Unux全局描述符袤段选择符加 以全局描述符表段选H_ _ _ _ _ _ 蛆0 x0TSS0 x80reservedLDT(W_ reservedPNPBIOS 32-biuode0 x90reservedPNPBIOS 16-bitcode0 x98not used PNPBIOS 1 丽dataOxaO_not usedPNPBIOS 16-bitdaia0 xa8TLS#10 x33PNPBIOS 16-bit dataOxbOTLS#20 x3bAPM8IOS32-bitcode0 xb8TLS#30 x43APMBI0S16-bilcodeOxcOreservedAPMBIOSdata0 xc8reservednot usedreservednot usedkernel code0 x60(_KERNEL_G)|not usedkernel data0 x68(_KERNEL_DS)not useduser codeOx73(_USER_CS)not useduser dataOx7b(_USER_DS)double fault TSS0 xf8 根据ID T中的段选择符,从 GDTR指向的G D T中取出相应的段描述符,得到对应异常处理程序或中断服务程序所在段的DPL、基地址等信息。Linux下即为内核代码段,所 以 DPL为 0,基地址为0。将当前特权级CPL(C S 寄存器最低两位,0 0 为内核特权级,11为用户特权级)与段描述符中的DPL比较。若 CPL小于D P L,则产生13号 异 常(#GP)。因为,Linux内核代码段的DPL总是0,因此不管怎样都不会发生CPL小于DPL的情况。检查是否发生了特权级变化,即判断CPL是否与相应段描述符中的DPL不同。因为执行第5 行指令时处于用户态,因此CPL=3,而 DPL=0,故需要从用户态切换至内核态,以使用内核对应的栈。通过以下步骤完成栈的切换:a)读 T R 寄存器,以访问正在运行进程的TSS段;b)将 TSS段中保存的内核栈的段选择符和栈指针分别装入寄存器SS和 E S P,然后在内核栈中保存原来的用户栈的SS和 ESPo 将 第 5 行后面一条指令的逻辑地址写入C S和 E IP,以保证内核程序处理后回到卜条指令执行。在当前栈中保存EFLAGS、C S和 EIP寄存器的内容。将 IDT中的段选择符(0 x60)装入C S,将 ID T中的偏移地址装入E IP,它指向内核代码段中的系统调用处理程序syslem_caU的第一条指令。这样,从下一个时钟开始,就执行系统调用处理程序system_call的第一条指令。在内核完成系统调用服务后,通过执行最后一条指令IR E T,以回到第5 行指令的下一条指令继续执行。2526.IA-32和L inux分别代表了硬件和软件(操作系统内核),根据它们各自在整个异常和中断处理过程中所做的具体工作,归纳总结出硬件和软件在异常和中断处理过程中分别完成哪些工作。253

    注意事项

    本文(ICS第七章习题答案.pdf)为本站会员(文***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开