新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 操作系统研究。UEFI
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机理论与工程『 操作系统原理 』 → Linux操作系统下关于引导和初始化的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6235 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: Linux操作系统下关于引导和初始化的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 操作系统原理 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 Linux操作系统下关于引导和初始化的问题

    系统引导和初始化概述

      相关代码(引导扇区的程序及其辅助程序,以x86体系为例):

      linux-2.4.22archi386ootootsect.S:Linux引导扇区的源代码;512字节

      linux-2.4.22archi386ootsetup.S:辅助程序;

      linux-2.4.22archi386ootvideo.S:辅助程序,用于引导过程中的屏幕显示.

      linux-2.4.22archi386ootcompressedhead.S,

      linux-2.4.22archi386ootcompressedmisc.c :用于对内核映像解压缩

      -----------------------------------------

      linux-2.4.22archi386kernelhead.s系统初始化入口

      linux-2.4.22initmain.c 系统初始化入口

      参考文档:linux-2.5.75Documentationi386oot.txt

      过程描述

      系统加电,CPU RESET

      跳到地址0xFFFFFFF0,此处是BIOS

      BIOS完成它的操作把第一扇区的内容读入到0x7c00

      就是bootsect.S

      把自己移到绝对地址0x90000处,并调转到那里继

      续执行

      通过BIOS提供的读磁盘调用"int 0x13"从磁盘上读

      入setup和内核的映像

      将(boot/setup.S)2kB字节的代码读入内存0x90200处,

      然后跳转到setup的代码中做执行内核映像的准备

      从0x100000开始执行startup_32()进行初始化(head.s)

      ---〉start_kernel()[main.c]-cpu_idle()

      start_kernel()创建的进程init()被调度执行,完成

      1.指令的跳转及其机理

      l 80x86/Pentium的地址映射

      0–640 KB MS-DOS Area.

      640–768 KB Video Buffer Area.

      768–896 KB in 16-KB sections (total of eight sections) - Expansion Area.

      896 -960 KB in 16-KB sections (total of four sections) - Extended System BIOS Area.


      960-KB–1-MB memory (BIOS Area) - System BIOS Area.

      扩展内存区:由1M到4GB-1

      — High BIOS area from 4 GB to 4 GB–2 MB

      Intel 82875P Memory Controller Hub (MCH)

      memery的监测和初始化:在对内存接口做操作前,必须初始化MCH DRAM寄存器.MCH必须配制成针对所安

      装的内存的类型进行操作.对内存类型和大小的检测是通过ICH5上的System Management Bus (SMBus)来

      完成.这个两线的总线通过DRAM DIMM上的Serial Presence Detect端口获得DRAM的类型和大小信息.

      BIOS需要确定每行内存的大小和类型来配置MCH内存接口.

      2.x86MPU 启动时的初始化

      复位输入提供一种初始化的硬件手段.通过复位接口电路向mpu提供信号,Reset要保持1至少15个

      CLK2周期,当返回0后,MPU启动内部初始化程序,进入实地址模式.初始化完成后,标志寄存器设为

      0xUUUU0002(u代表未定义,实模式下9位标志可用,这里是奇偶标志为1);指令指针设为0x0000FFF0,CS

      寄存器设为0xF000,DS,SS,ES,FS和GS寄存器都设为0x0000,指令队列清空.

      实模式下地址的形成:段基址+指令指针偏移

      MPU在识别出Reset信号后把数据总线设在高阻状态,地址线强行设为1.由于清空中断标志是初始化

      的一部分,外部中断被禁止.因为代码段寄存器为0xF000,指令指针为0x0000FFF0,地址线A20-A31全部

      是1,从而复位后实模式程序从地址0xFFFFFFF0开始(只用于实模式高地址位忽略,从地址0xFFFF0开始.

      该地址处可以包含一条转移指令跳到启动程序处.

      物理地址为0xfffffff0的代码将被执行.这个地址被存储在一个只读存储器(ROM)里.BIOS(基本

      输入/输出系统)实际上是一段存储在ROM里的程序.它包含了一系列可以被某些操作系统调用,用于处理


      计算机各种硬件设备的中断驱动和低级程序.其中微软的DOS就是这样的一种操作系统.

      所有的BIOS程序都是在实模式下运行的.但是,Linux内核是在保护模式下运行,而不是在实模式下.

      因此,一旦初始化完成后,Linux就不再使用BIOS,而是完全由自己来为计算机上的所有硬件提供驱动程

      序.

      那么什么时候Linux使用保护模式 为什么BIOS不能使用相同的模式 BIOS使用实模式是因为其在

      操作过程中使用的是实模式地址,并且在计算机刚打开电源时,只有实模式地址可用.一个实模式地址由

      段地址和偏移地址组成,因此,相应的物理地址就为段地址×(2×8)+偏移.

      这是不是意味着在整个启动过程中,Linux就从来不使用BIOS了呢 答案是否定的.在启动阶段,Linux

      从硬盘或者其它外部设备加载内核时,需要使用BIOS.

      3.BIOS的作用:

      BIOS要对硬件进行一系列彻底的检测.这个步骤主要是检查系统安装有哪些设备,以及它们工作是否

      正常.通常把这个步骤叫做自检(Powe


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/7 8:18:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 操作系统原理 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/6/29 5:20:28

    本主题贴数5,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  Linux操作系统下关于引导和初始化的问题(3788字) - 卷积内核,2007年9月7日
        回复:  e设备,重定向stdin,stdout和stderr到控制台,最后,搜索文件系统中的init ..(3583字) - 卷积内核,2007年9月7日
        回复:  址,则内核会被先解压到一个临时缓冲区中,待完  成后再将其加载到物理地址为0x00100000..(3795字) - 卷积内核,2007年9月7日
        回复:  是就去启动其他介质.  一般来说,Linux是从硬盘启动的.这就需要不同的自举程序.在Inte..(4053字) - 卷积内核,2007年9月7日
        回复:  r-On Self-Test,POST),这时会显示版本及其它很多相关的硬件信  息. BIO..(3870字) - 卷积内核,2007年9月7日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms