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

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

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

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

    e设备,重定向stdin,stdout和stderr到控制台,最后,搜索文件系统中的init

      程序(或者由init=命令行参数指定的程序),并使用 execve()系统调用加载执行init程序.

      init()函数到此结束,内核的引导部分也到此结束了,这个由start_kernel()创建的第一个线程已经成为一个用户模式下的进程了.此时系统中存在着六个运行实体:

      start_kernel()本身所在的执行体,这其实是一个"手工"创建的线程,它在创建了init()线程以后就进入cpu_idle()循环了,它不会在进程(线程)列表中出现6,模式向保护模式的转换以及内核使用物理地址向虚拟地址的转换CPU在跳转到bootsect时还处于16位实地址模式,然后在setup的执行过程中转入32位保护模式的段式寻址方式.在bootsect和setup中都利用BIOS提供的调用来完成一些比较大的操作,如读磁盘,取得BIOS在加电自检是搜集到的有关内存的信息等等.一旦转入内核映像本身的执行就不再需要BIOS了.


      模式转换的控制:

      x86保护模式比实模式多了几个寄存器:全局描述符表寄存器(GDTR),中断描述符表寄存器(IDTR),

      局部描述符表寄存器(LDTR)和任务寄存器(TR).另外,一些寄存器的功能得到了扩展,例如指令指针成为EIP,长度32位;标志寄存器(EFLAGS)的更多位得到了利用.四个控制寄存器CR0-CR3都得到了利用.

      GDTR(48位)在物理存储器地址空间定义了全局描述符表GDT(每个描述符8字节).

      IDTR(长度同GDTR)定义了中断描述符表IDT.(256个中断,每个中断门8字节)

      在从实模式转到保护模式前必须将GDTR的基址BASE和限长limit(16位)的值装入GDTR;IDTR也是.

      这两个表的装入和保存有特殊的指令LGDT SGDT LIDT SIDT

      16位的LDTR并不直接定义一个局部描述符表,他只是一个指向GDT中LDT描述符的选择符.选择符装入LDTR相应的描述符就能从全局存储器中读出来装入局部描述符表高速缓存,该描述符为当前任务创建了一个LDT。

      控制寄存器

      CR0的低五位是机器状态字MSW,包含保护模式配置和状态信息.PE(保护模式允许)位重启时清零允许实模式操作,为进入保护模式将PE设为1.一旦处于保护模式就不能再设回到实模式,除非重启.MP(数学协处理器存在)设为1表示该系统有一个数学协处理器.如果用到了软件模拟器执行数学运算,那么EM(模拟)位应设为1,一次只能设置其中的1位.R(扩展类型)表示用的是80287还是80387,R为1表示80387.TS(任务切换)在做任务切换的时候自动设置.

      在保护模式下支持分页,CR0的PG位设为1表示允许分页,CR3包含页目录基址寄存器PDBR.

      任务寄存器(TR)是在保护模式下的任务切换中用到.该寄存器存放16位的选择符用来指示全局描述符表中描述符的位置,当选择符装入TR,相应的任务状态段(TSS)描述符自动由存储器读出并装入到任务描述符缓存中.


      几条重要的系统指令:LGDT SGDT LIDT SIDT LMSW SMSW

      指令LMSW和SMSW分别用于装入和保存机器状态字信息.他们是用于从实模式转换到保护模式的指令,需要将MSW的最右位设为1.

      SMSW AX;

      OR AX,1;

      LMSW AX;

      地址的转换

      在正常运行时整个内核映像都应该在系统空间,系统空间地址实连续的线性的,虚拟地址和物理地址间有个固定的位移:0xC0000000.内核影像的起点是_stext,引导核压缩后的整个映像放在内存中从0x100000即1Mb开始的空间.CPU执行内核映像的入口start_32就在内核映像开头的地方,因此物理地址是0x100000,虚拟地址就成了0xC0100000.

      CPU在进入start_32时运行于保护模式下的段式寻址方式.段描述表中与__KERNEL_CS和__KERNEL_DS

      Cr1

      页目录基址寄存器(PDBR)

      缺页线性地址

      保留 保留

      保留

      PG TS EM MP PE R

      31 23 15 7 0

      Cr3

      Cr2

      Cr0

      相对应的描述项所提供的基地址都是0,所以实际产生的是线性地址.其中代码段寄存器CS已在进入start_32之前设置成__KERNEL_CS,数据段寄存器尚未设置为__KERNEL_DS.不过虽然代码段已设置,从而start_32的地址为0xC0100000.但是在转入这个入口时使用的指令是"ljmp 0X10000"而不是"ljmp startup_32",所以装入COU寄存器IP的地址是物理地址0x100000而不是虚拟地址,CPU在进入startup_32后会继续以物理地址取指令.只要不在代码段中引用某个地址,例如项某个地址做绝对转移,或者调用某个子程序,就可以一直这样运行下去,而与CS的内容无关,此外,CPU的中断已在进入startup_32前关闭。

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

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

    本主题贴数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号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    1,689.453ms