华为内部面试题库---(21)
2019-04-14 08:34发布
生成海报
1. Linux内核引导过程,正确包括以下:ABCDA.CPU自身初始化B.BIOS加电自检C.加载内核引导程序D.加载内核与initrd解析:X86系统引导系统如下:Linux内核自上电后,正确包括:CPU自身初始化,bios加电自检,加载内核引导程序,加载内核与initrd。 2.有关Linux内核引导过程中,CPU初始化与bios自检说法错误的是:DA.多处理器系统,每个cpu完成自身初始化,主CPU完成初始化后,执行引导过程的剩余工作,内核才会激活其他cpu。B.CPU在某个地址上执行跳转指令,跳到bios代码的首部执行。C.BIOS加电POST操作,主要完成系统硬件的检测(内存检测、总线检测等)。其后加载内核引导程序。D.BIOS读取硬盘第一个扇区,即全部512Bytes(MBR 主引导记录)为MBR,并把内核加载到内核并执行。-- Linux内核修炼之道——第四章解析:多处理器系统,每个cpu完成自身初始化,主CPU完成初始化后,执行引导过程的剩余工作,内核才会激活其他cpu,完成其他CPU的引导工作。CPU从某个地址(oxfffffff0),取得跳转指令到BIOS代码首部,执行BIOS代码。BIOS主要功能为上电自检,主要检测系统硬件是否能够工作正常。BIOS执行完POST操作后,自动读取硬盘第一个扇区。512 Bytes=510 Bytes MBR + 2 Bytes(检查MBR是否有效)。 3.有关内核引导程序说法错误的是:CA.MBR内核主引导程序包括:活动分区表、次引导程序。B.活动分区表,主要记录系统活动分区,通过其查找加载次引导程序。C.次引导程序为LILO、Grub来引导系统。D.次引导程序加载linux内核镜像与initrd,完成系统的基本加载。-- Linux内核修炼之道——第四章解析:510 Bytes MBR主引导记录,64 Bytes分区表 + 446 Bytes引导程序,分区表信息主要记录硬盘活动分区信息,446 Bytes 次引导程序主要为LILO与GRUB程序(PC或者服务器为LILO、Grub操作,对于嵌入式领域,主要为U-boot与RedBoot)。主要功能为负责加载Linux内核映像,并把控制权交给内核。 4.有关内核加载说法正确的是:ABCDA.内核vmlinuz被加载到内存中,不可执行,必须首先自行解压。B.内核镜像呗调用时,首先执行arch/i386/boot/head.S中start汇编例程,进行基本硬件设置。C.接着调用startup_32函数,建立基本运行环境,清除BSS,调用arch/i386/boot/compressed/misc.c中decompress_kernel加压内核。D.解压内核到制定内存后,执行start_kernel函数,进入体系结构无关的内核部分-- Linux内核修炼之道——第四章解析:内核加载到内存中,是不可执行的,必须自行解压(decompress)。--调用arch/i386/boot/compressed/misc.c中decompress_kernel加压内核内核编译时,vmlinuz >> zImage (定制化小内核,< 512 KB) ; vmlinuz >> bzImage (大内核,> 512KB)。大内核解压后,arch/i386/boot/head.S中start汇编例程,执行硬件设置操作,接着调用startup_32函数,建立基本运行环境,清除BSS,并启用内存分页功能,最后在 init/main.c调用start_kernel函数调用。执行与体系结构无关的内核部分代码初始化工作。 5.有关内核初始化函数start_kernel说法正确的是:ABCDA.内核初始化函数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环境。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮