#lec 3 SPOC Discussion
- 比较UEFI和BIOS的区别。
UEFT不同于BIOS的是:UEFT是统一的可扩展固件接口,它是用模块化、C语言风格的参数堆栈传递方式、动态链接的形式构建系统;BI OS更加快速安全,更加容易实现,容错和纠错能力较强,运行与32位或者64位,而BIOS是16位,这样就能够提高启动速度。
- 描述PXE的大致启动流程。
- 了解NTLDR的启动流程。
当主引导记录被装入内存后,程序开始运行,活动分区和引导扇区被装入内存,此时,NTLDR从引导扇区被装入并初始化,NTLDR开始运行适当的小文件系统驱动程序,然后NTLDR读boot.ini文件,然后NTLDR开始装载系统。
- 了解GRUB的启动流程。
运行后,找到KERNEL,加载到内存,然后通过INITRD镜像文件就可以启动。
- 比较NTLDR和GRUB的功能有差异。
NTLDR是一个系统启动时需要调用的文件,而GRUB是一个多操作系统启动程序,NTLDR功能是系统启动时装载系统功能的一个只读文件,GURB是一个多系统管理程序,用于当计算机有多个系统时允许用户选择使用的系统。
- 了解u-boot的功能。
(1)系统引导支持NFS挂载、RAMDISK形式的根文件系统;支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;
(2)基本辅助功能强大的操作系统接口功能;
-
举例说明Linux中有哪些中断,哪些异常? 中断:I/O中断 时钟中断 和 处理器间的中断 异常:代码运行错误,如除0等。
-
Linux的系统调用有哪些?大致的功能分类有哪些? (w2l1)
(1)进程控制(2)文件系统控制(3)系统控制(4)内存管理(5)网络管理(6)socket控制(7)用户管理
1. 以ucore lab8的answer为例,uCore的系统调用有哪些?大致的功能分类有哪些?(w2l1)
>
ucore lab8的answer的系统调用大约有20多个,
主要有文件操作,进程管理,内存管理等。
## 3.4 linux系统调用分析
1. 通过分析[lab1_ex0](https://github.com/chyyuu/ucore_lab/blob/master/related_info/lab1/lab1-ex0.md)了解Linux应用的系统调用编写和含义。(w2l1)
>
objdump可以分析二进制的可执行文件,可以用来分析程序。 nm命令可以列出目标文件的符号清单,无参数表示列出所有符号,还可以使用参数查看有条件的符号。 file命令可以检测文件类型,并对不同类型显示更详细的信息。
1. 通过调试[lab1_ex1](https://github.com/chyyuu/ucore_lab/blob/master/related_info/lab1/lab1-ex1.md)了解Linux应用的系统调用执行过程。(w2l1)
>
strace常用来跟踪进程执行时的系统调用和所接收的信号,使用-c参数统计每一系统调用的所执行的时间,次数和出错的次数等。首先操作系统确定程序文件的,之后读取用户的文件,设置好内存页、映像,之后运行可执行文件同时管理进程状态,完成一次程序执行,在执行过程中程序还调用了write进行字符串的打印。
## 3.5 ucore系统调用分析
1. ucore的系统调用中参数传递代码分析。
1. ucore的系统调用中返回结果的传递代码分析。
1. 以ucore lab8的answer为例,分析ucore 应用的系统调用编写和含义。
1. 以ucore lab8的answer为例,尝试修改并运行ucore OS kernel代码,使其具有类似Linux应用工具`strace`的功能,即能够显示出应用程序发出的系统调用,从而可以分析ucore应用的系统调用执行过程。
## 3.6 请分析函数调用和系统调用的区别
1. 请从代码编写和执行过程来说明。
1. 说明`int`、`iret`、`call`和`ret`的指令准确功能