03第三节 用户界面.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 用户界面 3.1.2 系统生成和系统启动 系统生成(p47): 是指为满足物理设备的约束和需要的系统功能,通过组装一批模块来产生一个清晰的、使用方便的操作系统的过程。包括: 确定系统构造的参数 编辑系统模块的参数 连接系统模块为可执行的程序 3.1.2 系统生成和系统启动 模块是内核的一部分(通常是设备驱动程序),但是并没有被编译到内核里面去。它们被分别编译并连接成一组目标文件,这些文件能被插入到正在运行的内核,或者从正在运行的内核中移走 。 在Linux系统中,查看系统当前已加载的模块,可用lsmod命令或查看/proc/modules,对于查看某一模块的信息,可通过modinfo来查看。可利用modprobe和rmmod来加载或卸载模块。 3.1.2 系统生成和系统启动 编译Linux内核可以做些什么事情? 根据实际的硬件条件构造合适大小的内核 添加中断服务和系统功能调用 为新硬件扩展设备驱动模块 定制合适的用户环境 …… 3.1.2 系统生成和系统启动 系统启动(三阶段)p48 1、初始引导(自我引导) Step1:BIOS加电自检 Step2:读取引导区记录,执行引导装载程序 Step3:读取并装载内核程序 2、核心初始化:启动各种程序和初始化数据 3、系统初始化:初始化用户环境,启动命令解释程序。 3.1.2 系统生成和系统启动 Linux的启动过程: 1、 BIOS加电自检(POST,Power-On Self Test) BIOS的全名是基本输入输出系统(Basic Input Output System)。它的主要任务是提供CPU所需的启动指令。 BIOS中启动程序的主要任务:首先是上电自检,然后是对系统内的硬件设备进行监测和连接,并把测试所得的数据存放到BIOS数据区,以便操作系统在启动时或启动后使用。 POST程序包含的检测项目有:CPU处理器内部寄存器测试、8259中断控制器测试、8253定时器测试、硬盘设备测试、键盘复位和测试。 3.1.2 系统生成和系统启动 2、执行引导装载程序: 在BIOS自检并完成基本的硬件检测后, BIOS读取主引导记录(MBR,零柱面零磁道上的1扇区 ),执行引导装载程序(boot loader)。 Boot Loader通常是一段汇编代码,存放在MBR中,它的主要作用就是将系统启动代码读入内存常用的引导装载程序有GRUB和LILO。 用户可以通过向boot loader传递特定参数以控制启动过程。 3.1.2 系统生成和系统启动 3、 装载内核 引导装载程序根据用户的选择,从MBR中确定Linux内核的所在位置。 Linux的内核分为压缩部分(bzImage )和未被压缩部分(vmlinux)。通过调用BIOS的功能过程,引导装载程序把内核映像的头512k的内容装载到内存中(0)。 然后,将剩余的内核映像加载到低位地址(小内核映像,0)或高位地址(大内核映像,0)上。 3.1.2 系统生成和系统启动 4、硬件的初始化 装载程序跳转到setup过程(0。 setup过程用于初始化计算机基本设备环境,以支持内核程序的运行。例如内存、显卡、键盘等设备的基本设置和初始化。同时对中断的数据结构以及控制器进行必要的初始化。 3.1.2 系统生成和系统启动 5、内核的解压 在完成必要的寄存器及内存的初始化后,startup_32 (arch/i386/boot/compressed/head.S )过程便会对已经装载在内存的内核映像进行解压(decompress_kernel ),如果之前内核装载在低端地址 0,则直接解压放置在高位地址0如果之前内核装载在高位地址,则需要在缓冲区解压后在复制到高位地址0 3.1.2 系统生成和系统启动 6、为0号进程初始化运行环境 另一个startup_32 过程(arch/i386/kernel/head.S )运行在内存地址0。主要负责为0号(idle process )进程初始化运行环境,建立必要的数据结构,包括了中断描述表的建立。 3.1.2 系统生成和系统启动 7、开始对内核的基本初始化 过程start_kernel (init/main.c,515)开始对各个内核部件及其数据结构进行初始化,包括了对调度器的初始化(sched_init ),内存区域的初始化(build_all_zonelists ),中断服务的初始化(init_IRQ ,softirq_init ),系统时间和日期的初始化(time_init)。而最关键的,是通过kernel_thread (440)过

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档