1、要想顺利启动系统,bootsect.s必须让在磁盘的固定位置上,这个工作是由谁完成的?()
A.vi
B.makefile
C.gcc
D.ls
正确答案:B
2、启动保护模式以后,指令jmpi 0, 8执行和没有启动保护模式有何区别?()
A.指令的编码格式不一样
B.跳转后的地址肯定不一样
C.没有区别
D.得出跳转地址的方式不一样
正确答案:D
3、在setup中获取内存大小这一个硬件参数的目的是什么?()
A.没有目的
B.为后面的内存管理做准备
printf输出格式linuxC.为读入内核计算内存的大小
D.为GDT表的初始化做准备
正确答案:B
4、在屏幕上打出“Loading System…”等系统Logo的时候,计算机内部没有正在做什么?()
A.读磁盘
B.初始化中断处理程序的地址
C.等待用户输入指令
D.启动保护模式
正确答案:C
5、Windows系统启动和Linux系统启动时,下面哪项工作最不一样?()
A.打印Logo
B.获取硬件参数
C.读入内核
D.初始化内核数据结构
正确答案:A
6、针对课程中的系统启动实例,下面哪个顺序是对的?()
A.BIOS, init, bootsect, setup
B.BIOS, setup, bootsect, init
C.BIOS, bootsect, setup, init
D.BIOS, bootsect, init, setup
正确答案:C
7、根据GDT表,jmpi 0, 8要跳到0地址处去执行,那么能不能执行jmp 0来实现同样的跳转呢?为什么?()
A.能,因为jmp 0会跳到0地址处去执行
B.不能,jmp 0不查GDT表
C.也可能,但首先要设置cs,并且要保证cs指向的那个GDT表项中的基地址为0
D.不能,因为jmp 0是非法指令
正确答案:C
8、针对下面的makefile,最后执行的是哪条指令?()
all: a b c
  ld a b c –o image
a:a.c
  gcc a.c –o a
b:b.c
  gcc b.c –o b
c:c.c
  gcc c.c –o c
A.gcc c.c –o c
B.gcc a.c –o a
C.ld a b c –o image
D.gcc b.c -o b
正确答案:C
9、下面哪项工作不是操作系统启动要完成的工作?()
A.检查硬件设备是否正常
B.初始化LDT表
C.获取硬件参数
D.读入操作系统内核
正确答案:A
10、mem_init就是初始化一个数组,下面哪个论述不对?()
A.初始化时将所有数组项中的内容都设置为0
B.数组中的每个项用来表示内存中一段固定大小的内存
C.mem_init调用之前可以不获得物理内存的大小
D.如果某个数组项中的内容为0,则表示对应的那一段内存空闲
正确答案:C
11、用户程序调用printf(“Hello World!”)最终要通过写显存来完成Hello World!的输出,给出从用户程序到写显存中间经过的顺序。()
A.用户程序;C函数库;sys_write;系统调用;写显存
B.用户程序;C函数库;系统调用;sys_write;写显存
C.用户程序;系统调用;C函数库;sys_write;写显存
D.用户程序;sys_write;C函数库;系统调用;写显存
正确答案:B
12、为什么要将程序的执行分为用户态和内核态?()
A.保护操作系统内核
B.不让用户程序执行某些指令
C.一个用户程序不能干扰另一个用户程序
D.保护用户程序不被随意修改
正确答案:A
13、在系统调用的实现中,在int 0x80指令调用之前,给eax赋值的目的是什么?()
A.表示是0x80号中断,而不是别的中断
B.传递参数
C.传递返回值
D.将来区分是哪个系统调用
正确答案:D
14、为什么要命名为系统调用,下面哪个理由不对?()
A.最终调用了操作系统提供的功能
B.为了和其他的函数调用相区别
C.具体表现为一个函数调用
D.直接跳转到内核中的一个函数
正确答案:D
15、鼓励操作系统实现POSIX接口的真正目的是什么?()