从图灵机到操作系统的启动

版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/83374841

1936年,阿兰图灵提出了一种可计算模型——图灵机。图灵机是从模拟人用纸笔计算的过程得到的灵感。图灵设想只存在于想象中的机器由一个控制器、一个读写头和一根无限长的工作带组成的。纸带起着存储的作用;读写头能够读取纸带上的信息,以及将运算结果写进纸带;控制器则负责对搜集到的信息进行处理。图灵机原理图如下:

根据这个原理,人类设计了第一台电子计算机——ABC计算机。但是ABC计算机实现的是图灵机,导致ABC计算机只能求解线性方程组。后来在冯诺依曼等人的努力下,在宾夕法尼亚大学诞生了世界上第一台通用电子计算机——ENIAC。它是图灵完全的电子计算机,能够重新编程,解决各种计算问题。它于1946年2月14日在美国宣告诞生。冯诺依曼小组提出的“存储程序的思想”为通用图灵机的实体化做出了重要贡献,直到哈佛结构出现之前,所有的计算机都是冯诺依曼结构。

这个体系结构的计算机运行的过程简单说来就是“取指执行”。

操作系统(OS)是介于计算机硬件和应用软件之间的一层软件。操作系统的存在可以使我们更高效的使用硬件。

操作系统主要管理CPU,内存,终端,磁盘以及文件等资源。

计算机的开机的过程到底是怎么样的(Intel X86计算机)。Intel X86 PC开机时CPU处于实模式,实模式寻址CS:IP(CS左移4位,然后加上IP的偏移值就是要寻址的地址),上电以后,CS=0xFFFF,IP=0x0000.(Intel设计的8086是X86的鼻祖,它是16位的,而且CS和IP都是16位的寄存器。)根据寻址规则,CPU要去地址为0xFFFF0的地址去“取指执行”。在0xFFFF0这个地方存放着BIOS程序(Basic input and output system)。然后计算机进入“自检”。接着从0磁道0扇区读入0x7C00处的内容。(0磁道0扇区存是OS的引导扇区)这个扇区总共512字节,它是启动设备后访问的第一个扇区。引导扇区存放着bootsect.s汇编后的代码。CPU从这里执行一段代码后,将这里512字节的内容移动到了0x9000:0x0000处。在这里继续执行,会遇到一个0x13的BIOS中断,该中断是读磁盘扇区的中断。在接下来读取的4个扇区内存放着setup程序。在此期间0x10的BIOS中断加载一个显示到屏幕上,就是我们开机时看到的启动画面。

然后加载了setup模块,setup首先读取了计算机内存的大小,然后把system的代码移动到0地址处,(这就是前面把bootsect搬移的原因,因为system需要用到这块内存)setup在执行完之前,将CR0这个寄存器的最后一位置位。从而使Intel X86CPU的实模式切换到保护模式(32位模式)。否则根据以前的寻址方式CS左移4位,加上IP,这样最多访问1MB的内存。进入实模式后,寻址方式将会变成:根据CS查表,然后加上IP。(CS和IP都变成了32位寄存器)现在setup执行完毕,跳到0地址处,开始执行system的第一段代码,这个第一部分就是head。head在执行的时候,就会跳到C语言的mian函数处执行。main函数开始执行一系列初始化操作,包括内存,中断,设备,时钟,CPU等。所以操作系统是在CPU的保护模式下运行的。

经过上面一系列的过程,我们的计算机就算正式开机了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券