华为内部面试题库---(21)

1. Linux内核引导过程,正确包括以下:ABCD

A.CPU自身初始化

B.BIOS加电自检

C.加载内核引导程序

D.加载内核与initrd

解析:X86系统引导系统如下:

Linux内核自上电后,正确包括:CPU自身初始化,bios加电自检,加载内核引导程序,加载内核与initrd

 

2.有关Linux内核引导过程中,CPU初始化与bios自检说法错误的是:D

A.多处理器系统,每个cpu完成自身初始化,主CPU完成初始化后,执行引导过程的剩余工作,内核才会激活其他cpu

B.CPU在某个地址上执行跳转指令,跳到bios代码的首部执行。

C.BIOS加电POST操作,主要完成系统硬件的检测(内存检测、总线检测等)。其后加载内核引导程序。

D.BIOS读取硬盘第一个扇区,即全部512BytesMBR 主引导记录)为MBR,并把内核加载到内核并执行。

-- Linux内核修炼之道——第四章

解析:多处理器系统,每个cpu完成自身初始化,主CPU完成初始化后,执行引导过程的剩余工作,内核才会激活其他cpu,完成其他CPU的引导工作。CPU从某个地址(oxfffffff0),取得跳转指令到BIOS代码首部,执行BIOS代码。BIOS主要功能为上电自检,主要检测系统硬件是否能够工作正常。BIOS执行完POST操作后,自动读取硬盘第一个扇区。512 Bytes=510 Bytes MBR + 2 Bytes(检查MBR是否有效)。

 

3.有关内核引导程序说法错误的是:C

A.MBR内核主引导程序包括:活动分区表、次引导程序。

B.活动分区表,主要记录系统活动分区,通过其查找加载次引导程序。

C.次引导程序为LILOGrub来引导系统。

D.次引导程序加载linux内核镜像与initrd,完成系统的基本加载。

-- Linux内核修炼之道——第四章

解析:510 Bytes MBR主引导记录,64 Bytes分区表 + 446 Bytes引导程序,分区表信息主要记录硬盘活动分区信息,446 Bytes 次引导程序主要为LILOGRUB程序(PC或者服务器为LILOGrub操作,对于嵌入式领域,主要为U-bootRedBoot)。主要功能为负责加载Linux内核映像,并把控制权交给内核。

 

4.有关内核加载说法正确的是:ABCD

A.内核vmlinuz被加载到内存中,不可执行,必须首先自行解压。

B.内核镜像呗调用时,首先执行arch/i386/boot/head.Sstart汇编例程,进行基本硬件设置。

C.接着调用startup_32函数,建立基本运行环境,清除BSS,调用arch/i386/boot/compressed/misc.cdecompress_kernel加压内核。

D.解压内核到制定内存后,执行start_kernel函数,进入体系结构无关的内核部分

-- Linux内核修炼之道——第四章

解析:内核加载到内存中,是不可执行的,必须自行解压(decompress)。--调用arch/i386/boot/compressed/misc.cdecompress_kernel加压内核内核编译时,vmlinuz  >>  zImage (定制化小内核,< 512 KB) vmlinuz  >>  bzImage (大内核,> 512KB)。大内核解压后,arch/i386/boot/head.Sstart汇编例程,执行硬件设置操作,接着调用startup_32函数,建立基本运行环境,清除BSS,并启用内存分页功能,最后在 init/main.c调用start_kernel函数调用。执行与体系结构无关的内核部分代码初始化工作。

 

5.有关内核初始化函数start_kernel说法正确的是:ABCD

A.内核初始化函数start_kernel主要完成了内核子系统各个模块初始化,一直到rest_init()函数创建init进程。B.rest_init()函数创建并启动内核线程kernel_init,并schedule调度并释放CPU时间片。

C.内核线程创建函数kernel_init完成设备驱动驱动程序的初始化,并调用init_post启动用户空间的init进程。

D.用户态init进程,触发执行其他进程,产生getty进程,getty进程产生login进程,login进程产生shell进程等。

-- Linux内核修炼之道——第四章

解析:内核初始化start_kernel函数主要完成以下功能:

 01).初始化同步与互斥环境、屏蔽中断、启动大内核锁、注册时钟通知链、激活第一个CPU、初始化地址散列表、打印内核版本信息

02). 执行setup_arch函数、拷贝可用内存区信息、获得页面数、简历永久内核页面、启动分页管理、简历内存管理架构

03). 设置每个CPU环境

04).  初始化内存管理区列表

05).  利用early_res分配内存

06). 建立虚拟文件系统

07).  初始化异常服务

08).   初始化内存管理、启动伙伴算法、初始化slab分配器、初始化非连续内存区

09).  初始化调度程序

10).  初始化中断处理程序、设置APIC中断服务、初始化本地软时钟、软中断初始化、初始化定时器中断11).start_kernel尾声、启动console、校准CPU时钟速度

12) .安装根文件系统、创建vfs、安装rootfs、安装proc文件系统

13 ).start_kernel启动服务、创建1号进程、子系统初始化、Shell环境。

posted on 2013-05-20 13:05  疯子123  阅读(191)  评论(0编辑  收藏  举报

导航