当前位置:  技术问答>linux和unix

开机时,CPU会自动把CS设置为0XF000......

    来源: 互联网  发布时间:2015-11-29

    本文导语:  最近正在看赵炯的《Linux内核完全剖析》,刚刚看不多,遇到一个问题,18页(没看过这本书的朋友也可以解答我的这个问题),书上这么说:    “当计算机系统上电开机或者按了机箱上的复位按钮时,CPU会自动把...

最近正在看赵炯的《Linux内核完全剖析》,刚刚看不多,遇到一个问题,18页(没看过这本书的朋友也可以解答我的这个问题),书上这么说:

   “当计算机系统上电开机或者按了机箱上的复位按钮时,CPU会自动把代码段寄存器CS设置为0XF000,其段基址被设置为0XFFFF0000,段长度设置为64KB。而IP被设置为0FFF0,因此此时CPU代码指针指向0XFFFFFFF0处,即4GB空间最后一个64KB的最后16字节处。”

   我记得在系统上电开机时,CPU应该工作在实方式下,因此此时如果CS被设置为0XF000,那么段基址应该是0XF0000。但是上面这段话却说“段基址被设置为0XFFFF0000”,而且“段长度设置为64KB”,在实方式下怎么设置段长度呢(只有在保护方式下,才能在段描述符中设置段界限,即段长度)?

   望高手给解答一下,先谢谢了。

|
当按下开关或复位键时,微机产生一脉冲,送到CPU第24号引脚,CPU将CS置FFFFH,IP置0000H,执行FFFF:0000H处指令,该指令一般为一JMP指令,转到BIOS自检程序的入口处进行POST上电自检
自检完毕后,BIOS程序按照CMOS中设置的启动顺序搜索软硬盘或光驱(新主板可能还支持U盘启动,不过原理都一样的),从中读出操作系统引导记录(一扇区的大小)放入内存0000:7C00H
处,再跳转到该处执行,进一步引导操作系统

这就是大致的启动过程,OK?

|
BIOS有两个主要的组成部分,BootBlock段和主体BIOS。BootBlock段是不压缩的且存放于固定的地址空间,它是计算机开机时首先执行的部分。主要负责对计算机硬件做最基本、最简单的初始化,而后解压缩主体BIOS的其他模块,并一一执行,复制的过程在这个里面完成,然后BIOS跳转到这个地方的某个位置继续执行。

|
to zhensm012498() 
最近正在看赵炯的《Linux内核完全剖析》,刚刚看不多,遇到一个问题,18页(没看过这本书的朋友也可以解答我的这个问题),书上这么说:

   “当计算机系统上电开机或者按了机箱上的复位按钮时,CPU会自动把代码段寄存器CS设置为0XF000,其段基址被设置为0XFFFF0000,段长度设置为64KB。而IP被设置为0FFF0,因此此时CPU代码指针指向0XFFFFFFF0处,即4GB空间最后一个64KB的最后16字节处。”

   我记得在系统上电开机时,CPU应该工作在实方式下,因此此时如果CS被设置为0XF000,那么段基址应该是0XF0000。但是上面这段话却说“段基址被设置为0XFFFF0000”,而且“段长度设置为64KB”,在实方式下怎么设置段长度呢(只有在保护方式下,才能在段描述符中设置段界限,即段长度)?


你可以去Intel官方网站下载一下order number:25366819的IA-32 Intel Architecture Sofeware Developer's Manual.搜一下Table 9-1,里面有CS Base

|
不是复制的,这个地址就是rom起始地址,硬件决定。

|
那个位置是BIOS中ROM的地址空间开始,这是人为规定了,相关PC加电引导的知识可以参考《BIOS Boot Specification》里面的相关内容。

|
1、系统加电后CS全置1,IP全置0。所以系统是由地址0xFFFF0开始执行的。
2、ROM BIOS本身就包含了一段代码,这段代码里包含了复制BIOS中断到内存的实现。所以这个是由硬件自动实现的,不用我们操心。

|
linux内核完全剖析里第18页中上半部分有这方面的说明请您仔细看看

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 什么叫活动分区?如果OS装在扩展分区里,那么开机时怎么引导?
  • bochs 虚拟机时间问题
  • 怪现象,开机时刚进入到root login,linux就自动关机了,如何修复?
  • 虚拟机时间同步问题
  • Linux下如何在开机时自动运行Mysql?????
  • LINUX下的服务器TOMCAT DOWN机了,请大侠指点如何查看DOWN机时间!
  • 如何使脚本在开机时自动运行
  • linux下如何让一个程序开机时启动?
  • 如何取消开机时的时间服务器同步?
  • 开机时如何进入命令行模式
  • 启动虚拟机时出现如下问题?
  • android开机时logo显示不正常
  • 用虚拟机时检测不到串口
  • 在windows装虚拟机时的问题
  • linux虚拟机时间与windows时间如何同步
  • arm考机时死机
  • 在win98中可以在每次开机时加载路由信息吗?
  • 请问如何让resin在开机时自动启动
  • 开机时提示:Partition does not exit,save to disk feature is disabled
  • 为什么我的eth0, 每次开机时,都是inactived状态的


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3