操作系统是一个软件,
cpu在加电之后,它从什么地方去读取第一条指令?它从磁盘上的什么地方去读我的操作系统内容。
cpu有计算能力执行指令,内存它有存储能力,程序运行当中,代码数据存储到内存里面。I/O设备可以跟外界有交互能力。我们的键盘输入、磁盘的输入输出、网络的输入输出都是作为I/O设备来跟系统打交道的。
讨论问题,cpu在加电之后,它执行的第一条指令在哪里。。cpu在加电,在电源稳定之后,那这个时候cpu会对cpu里头的寄存器做一个初始化,到一个指定状态。这个时候开始去执行第一条指令,第一条指令在内存里头。
前面说过内存是用来存数据的,一关掉电源之后,再加电的时候内存里头就没有内容了。那么这个时候你去执行第一条指令。那第一条从哪里来呢。
内存分成RAM随机访问存储,还有一个ROM只读存储。ROM加点之后,里头还会有一些我们原来写入的一些内容。这些内容系统初始化代码就从那里开始执行。。
启动时计算机内存和磁盘布局。。。
BOIS固件,加电时候我们蹦到这里执行。这里有一个约定,cpu在初始化完成之后,里头的代码段寄存器和指令指针寄存器。这个值直接制定了我们从内存当中读数据的值是多少。 当前访问第一条指令的位置。。现实,加电的时候处于实模式,地址总线只有20位地址空间可用:1MB
这块代码。BIOS程序需要提供下面的功能。。
1、基本的输入输出 --》它是完成我能够从磁盘上读数据、从键盘上读用户输入、可以在显示器上显示相应的输出
2、系统的设置信息---》系统在刚开始的时候需要有配置,我到底是从从硬盘启动?网络启动?光盘启动?这些由你的BIOS设置来完成,依据这些设置系统执行它的启动程序。从硬盘把我的加载程序和操作系统内容加载到系统当中来。。
具体的过程:
加载程序的内存地址空间:
在BIOS里头,它启动起来的时候,他的初始化完成之后,从磁盘上读引导扇区,引导扇区只有长度512字节,在bios里面,只能允许刀512字节的扇区。引导扇区的内容被读进来后放到指定的位置之后,然后跳转到到7COO,跳转到加载程序
加载程序:将操作系统的代码和数据从硬盘加载到内存中。并且把控制权交给操作系统。来继续执行操作系统功能。。
问题:bios既然能从磁盘商都数据,为啥不是直接从bios中把操作系统的内核映像读进来呢。实际上这时侯它是有这样一些问题,首先我们磁盘是有文件系统,文件系统多种多样。机器出厂时候不能限定死只能读一种文件系统,为了增加这种灵活性。BIOS又不可能加上认识所以文件系统代码,那怎么版,我就在里头有一个基本约定,我不需要认识你的格式,我也能从里头读到你的第一块。这块的加载程序里头,勇用载程序来识别你磁盘上的文件系统,这时候我认识磁盘上文件系统之后我就可以读到我内核的镜像,并且把它加载到内存当中来。这就是我们这里看懂的用加载程序读到操作系统中来,我们再把相应的控制权转到读进来的操作系统内核代码上。我们的操作系统就可以开始运行。
《x86汇编语言,从实模式到保护模式》这本书有讲解。
3、开机后自检程序--》
4、系统自启动程序等 --》
操作系统与设备和程序交互:
--计算机中内存、cache和寄存器之间的关系及区别 https://blog.csdn.net/hellojoy/article/details/54744231
1.内存包含的范围非常广,一般分为只读存储器(ROM)、随机存储器(RAM)和高速缓存存储器(cache)。
2. 寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
3. 寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
磁盘最主要的用途就是保存电脑里的信息。
计算机的有两类: 内部存储器、外部存储器
内部存储器: 内存
外部存储器:磁盘
磁盘:又分硬盘和软盘
https://blog.51cto.com/frankch/1708041