Skip to content

Latest commit

 

History

History
88 lines (70 loc) · 10.6 KB

02-1-spoc-discussion.md

File metadata and controls

88 lines (70 loc) · 10.6 KB

#lec 3 SPOC Discussion

第三讲 启动、中断、异常和系统调用-思考题

3.1 BIOS

  1. 比较UEFI和BIOS的区别。 答:UEFI,全称Unified Extensible Firmware Interface,即“统一的可扩展固件接口”,是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,旨在代替BIOS(基本输入/输出系统)。UEFI抛去了传统BIOS需要长时间自检的问题,让硬件初始化以及引导系统变得简洁快速。换种方式说,UEFI已经把电脑的BIOS变得不像是BIOS,而是一个小型固化在主板上的操作系统一样,加上UEFI本身的开发语言已经从汇编转变成C语言,高级语言的加入让厂商深度开发UEFI变为可能。区别主要有以下几点: 1.通过保护预启动或预引导进程,抵御bootkit攻击,从而提高安全性。 2.支持64位的现代固件设备驱动程序,系统在启动过程中可以使用它们来对超过172亿GB的内存进行寻址。 3.UEFI已具备文件系统的支持,它能够直接读取FAT分区中的文件。 4.可开发出直接在UEFI下运行的应用程序,这类程序文件通常以efi结尾。 5.UEFI是用模块化、C语言风格的参数堆栈传递方式、动态链接的形式构建系统,它比BIOS更易于实现,容错和纠错特性也更强,从而缩短了系统研发的时间。

  2. 描述PXE的大致启动流程。 答: PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。启动过程大致为:客户端个人电脑开机后, 在 TCP/IP Bootrom 获得控制权之前先做自我测试。Bootprom 送出 BOOTP/DHCP 要求以取得 IP。如果服务器收到个人电脑所送出的要求, 就会送回 BOOTP/DHCP 回应,内容包括客户端的 IP 地址, 预设网关, 及开机映像文件。否则,服务器会忽略这个要求。Bootprom 由 TFTP 通讯协议从服务器下载开机映像文件。个人电脑通过这个开机映像文件开机, 这个开机文件可以只是单纯的开机程式也可以是操作系统。开机映像文件将包含 kernel loader 及压缩过的 kernel,此 kernel 将支持NTFS root系统。远程客户端根据下载的文件启动机器。

3.2 系统启动流程

  1. 了解NTLDR的启动流程。 答:NTLDR文件的是一个隐藏的,只读的系统文件,位置在系统盘的根目录,用来装载操作系统。一般情况系统的引导过程是这样的代码:1、电源自检程序开始运行2、主引导记录被装入内存,并且程序开始执行3、活动分区的引导扇区被装入内存4、NTLDR从引导扇区被装入并初始化5、将处理器的实模式改为32位平滑内存模式6、NTLDR开始运行适当的小文件系统驱动程序。小文件系统驱动程序是建立在NTLDR内部的,它能读FAT或NTFS。7、NTLDR读boot.ini文件8、NTLDR装载所选操作系统 如果windows NT/windows 2000/windows XP/windows server 2003这些操作系统被选择,NTLDR运行Ntdetect。对于其他的操作系统,NTLDR装载并运行Bootsect.dos然后向它传递控制。windows NT过程结束。9.Ntdetect搜索计算机硬件并将列表传送给NTLDR,以便将这些信息写进\HKE Y_LOCAL_MACHINE\HARDWARE中。10.然后NTLDR装载Ntoskrnl.exe,Hal.dll和系统信息集合。11.Ntldr搜索系统信息集合,并装载设备驱动配置以便设备在启动时开始工作12.Ntldr把控制权交给Ntoskrnl.exe,这时,启动程序结束,装载阶段开始。

  2. 了解GRUB的启动流程。 答:第一阶段:BIOS启动引导阶段--在该过程中实现硬件的初始化以及查找启动介质;从MBR中装载启动引导管理器GRUB并运行该启动引导管理;第二阶段:GRUB启动引导阶段--装载stage1;装载stage1.5;装载stage2;读取/boot/grub.conf文件并显示启动菜单;装载所选的kernel和initrd文件到内存中;第三阶段:内核阶段--运行内核启动参数;解压initrd文件并挂载initd文件系统装载必须的驱动;挂载根文件系统 第四阶段:Sys V init初始化阶段--启动/sbin/init程序;运行rc.sysinit脚本设置系统环境启动swap分区检查和 挂载文件系统;读取/etc/inittab文件运行在/et/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本;

  3. 比较NTLDR和GRUB的功能有差异。 答:NTLDR是windows nt 4.0/windows 2000/windows xp/windows server 2003的引导文件且只能装在硬盘;GRUB可以装在多种存储介质,引导多种系统。

  4. 了解u-boot的功能。 答:-Boot可支持的主要功能列表:1.系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;2.基本辅助功能强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤以Linux支持最为强劲;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;3.CRC32校验可校验FLASH中内核、RAMDISK镜像文件是否完好;4.设备驱动串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;5.上电自检功能SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;6.特殊功能XIP内核引导。

3.3 中断、异常和系统调用比较

  1. 举例说明Linux中有哪些中断,哪些异常? 答:中断是由硬件产生的异步中断,比如键盘中断,外设中断等;异常是处理器产生的同步中断,比如内存错误,除零异常等。

  2. Linux的系统调用有哪些?大致的功能分类有哪些? (w2l1) 答:Linux系统调用很多地方继承了Unix的系统调用(但不是全部),它相比传统Unix的系统调用做了很多扬弃,所以Linux全部系统调用大概有250多个左右,这些系统调用按照功能逻辑大致可以分为“进程控制”,“文件系统控制”,“系统控制”,“存储管理”,“网络管理”,“Socket控制”,“用户管理”,“进程间通信”几类;详细的系统调用列表见该网址http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html。

  • 采分点:说明了Linux的大致数量(上百个),说明了Linux系统调用的主要分类(文件操作,进程管理,内存管理等)
  • 答案没有涉及上述两个要点;(0分)
  • 答案对上述两个要点中的某一个要点进行了正确阐述(1分)
  • 答案对上述两个要点进行了正确阐述(2分)
  • 答案除了对上述两个要点都进行了正确阐述外,还进行了扩展和更丰富的说明(3分)

1. 以ucore lab8的answer为例,uCore的系统调用有哪些?大致的功能分类有哪些?(w2l1)
	答:lab8有22个系统调用,主要分类有: 1. 文件操作(sys_read,sys_write等); 2. 进程管理(sys_exit, sys_wait,sys_lab6_set_priority等);3. 文件系统操作 (sys_fstat等);4. 系统控制 (sys_gettime等)。
 + 采分点:说明了ucore的大致数量(二十几个),说明了ucore系统调用的主要分类(文件操作,进程管理,内存管理等)
 - 答案没有涉及上述两个要点;(0分)
 - 答案对上述两个要点中的某一个要点进行了正确阐述(1分)
 - 答案对上述两个要点进行了正确阐述(2分)
 - 答案除了对上述两个要点都进行了正确阐述外,还进行了扩展和更丰富的说明(3分)

3.4 linux系统调用分析

  1. 通过分析lab1_ex0了解Linux应用的系统调用编写和含义。(w2l1) 答:分析过程使用了objdump,nm,file三个工具,objdump主要用于反汇编,nm用于列出目标文件符号清单, file用于文件处理,返回文件详细信息。系统调用是指用户程序直接或间接通过系统调用接口使用操作系统提供的服务,调用时通过中断进入内核态,执行完相关代码后将结果返回用户程序。
 + 采分点:说明了objdump,nm,file的大致用途,说明了系统调用的具体含义
 - 答案没有涉及上述两个要点;(0分)
 - 答案对上述两个要点中的某一个要点进行了正确阐述(1分)
 - 答案对上述两个要点进行了正确阐述(2分)
 - 答案除了对上述两个要点都进行了正确阐述外,还进行了扩展和更丰富的说明(3分)

  1. 通过调试lab1_ex1了解Linux应用的系统调用执行过程。(w2l1) 答:strace主要用来跟踪进程执行时的系统调用和所接收的信号,跟踪进程产生的系统调用,包括每一系统调用所执行的时间等。 Linux系统调用执行过程:应用程序调用系统调用接口,中断服务程序根据中断号转系统调用,系统调用根据函数号执行相应函数,函数执行完毕返回用户程序。
 + 采分点:说明了strace的大致用途,说明了系统调用的具体执行过程(包括应用,CPU硬件,操作系统的执行过程)
 - 答案没有涉及上述两个要点;(0分)
 - 答案对上述两个要点中的某一个要点进行了正确阐述(1分)
 - 答案对上述两个要点进行了正确阐述(2分)
 - 答案除了对上述两个要点都进行了正确阐述外,还进行了扩展和更丰富的说明(3分)

3.5 ucore系统调用分析

  1. ucore的系统调用中参数传递代码分析。
  2. ucore的系统调用中返回结果的传递代码分析。
  3. 以ucore lab8的answer为例,分析ucore 应用的系统调用编写和含义。
  4. 以ucore lab8的answer为例,尝试修改并运行ucore OS kernel代码,使其具有类似Linux应用工具strace的功能,即能够显示出应用程序发出的系统调用,从而可以分析ucore应用的系统调用执行过程。

3.6 请分析函数调用和系统调用的区别

  1. 请从代码编写和执行过程来说明。
  2. 说明intiretcallret的指令准确功能