3-系统调用要领.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux 作为一个典型的现代网络型操作系统,其中所涉及到的技术实现涵盖了操作系统技术的最新成果。它是一个多用户多任务操作系统,支持分时处理和软实时处理,并带有微内核特征,具有很好的定制特性。由于它是开放源码的,全世界很多科学技术人员都在不断对它完善和改进. linux启动流程 初始化流程 加电或复位 BIOS的启动 Boot Loader 操作系统初始化 1 加电或复位 冷启动过程开始,中央处理器进入复位状态,将内存中的所有数据清零,对内存进行校验,如果没错,CS寄存器置数,IP寄存器置入0000,这个CS:IP组合指向的是BIOS的入口。系统就是这样进入BIOS启动过程的。 2 BIOS启动 上电自检POST(Power On Self Test) 对系统内的硬件设备进行监测和连接 最后,BIOS将从软盘或硬盘上读入Boot Loader.如果从硬盘启动,BIOS将读入该盘的零柱面零磁道1扇区(MBR),读取Boot Loader. 2 BIOS启动 除了启动程序,BIOS还提供了一组中断以便于对硬件设备的访问。 在操作系统没有被装入以前(Bootsect.S还没有被读入),中断的响应程序由BIOS提供。 3 Boot Loader Boot Loader是一段汇编代码,存放在MBR中,它的主要作用就是将系统启动代码读入内存。 因为在启动过程中,BIOS会把Boot Loader读入内存,并把控制权交给它。MBR(硬盘启动)内的代码就是Boot Loader或者它的一部分。 3 Boot Loader 如果是硬盘启动,Boot Loader将查找主分区表中标记为活动分区的表项,把该表项对应的分区的引导扇区读入,然后将控制权交给该扇区内的引导程序。 如果计算机上装有不只一个操作系统,仅仅MS-DOS的Boot Loader无法完成这种工作,需要一个可以多重起动的工具:LILO或GRUB. 3 Boot Loader LILO实际上是一个在Linux环境下编写的Boot Loader程序,主要功能是引导Linux操作系统的启动。 LILO的功能实际上是有几个程序共同实现的,它们是: 1)Map Installer 这是LILO用于管理启动文件的程序。它将boot loader写入引导分区,创建纪录文件以映射内核的启动。 2)The boot loader 负责把Linux内核或其他操作系统的引导分区读入内存。还提供命令行接口,让用户选择从哪个操作系统启动和加入启动参数。 3)其他文件:主要包括用于存放Map Installer记录的map文件和存放LILO配置信息的配置文件。 4 进入操作系统 Boot Loader 完成的工作:把操作系统的代码调入内存,所以当它执行完后,自然该把控制权交给操作系统,由操作系统的启动程序来完成剩下的工作。 4 进入操作系统 把控制权交给Setup.S这段程序 进入保护模式,同时把控制权交给Head.S Head.S调用/init/main.C中的start_kernel函数,启动程序从start_kernel()函数继续执行 4 进入操作系统(1)Setup.S 首先,Setup.S对已经调入内存的操作系统代码进行检查,如果没错,它会通过BIOS中断获取内存容量,硬盘等信息(实模式),准备让CPU进入保护模式 完成基本设置后,Setup.S设置保护模式的标志,重取指令,再用一条跳转指令jmpi 0x100000,KERNEL_CS。进入保护模式下的启动阶段,控制权交给Head.S. 4 进入操作系统 (2)Head.S 先做屏蔽中断一类的工作 然后对中断向量表做一定的处理 Boot Loader读入内存的启动参数和命令行参数,Head.S把它们保存在empty_zero_page页中 检查CUP类型 对协处理器进行检查 页初始化,调用setup_paging这个子函数 4 进入操作系统 (3)main.c中的初始化 Head.S调用/init/main.c中的start_kernel函数,把控制权交给它,这个函数是整个操作系统初始化的最重要的函数,一旦它执行完,整个操作系统的初始化也就完成了。 4 进入操作系统 (3)main.c中的初始化 计算机在执行start_kernel前进入了保护模式,使处理器完全进入了全面执行操作系统代码的状态。 Start_kernel执行后,就可以以一个用户的身份登陆和使用 4 进入操作系统 (3)main.c中的初始化 较为重要的函数如下 Setup_arch() 最基本硬件的初始化 Paging_init() 线性地址空间映射 Trap_init()中断向量表初始化 Int_IRQ与中断有关的

文档评论(0)

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

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

1亿VIP精品文档

相关文档