上一篇文章,我们初步了解了操作系统在现代计算机中充当的角色。
操作系统(一)什么是操作系统

一:从白纸到图灵机

图灵机是英国数学家A.C.图灵于1936年提出的一个模型。

小孩子算数
在聊图灵机之前,我们先来想象这样一个场景:
一个小孩想要计算一条算式:2 + 4 = ?。
于是小孩在大脑里面想要计算的是2 + 4,然后把“2 + 4”写到白纸上。然后使用他的手指数数,左手摆出了两个手指,右手摆出四个手指。于是数两个手的手指一共是六个。最后把结果6写到白纸上。
好,以上就是小孩执行一个计算的 全过程。

图灵机
图灵想到的是如何使用机器来模拟人类计算一道算术题的过程。
他创造了这样一个机器,一个控制器,一条纸带。控制器扫描纸带上的“2 + 4”指令,然后控制器根据自身的一套机制,算出了“2 + 4”的结果,并把结果“6”打印到纸带上。
但是这样的图灵机不够灵活,只能做单一的运算,例如例子中的加法运算。

二:从图灵机到通用图灵机


从图分析改良过的通用图灵机,首先在控制器里面过了一个模块,用于修改控制器的。纸带里面也多了一些数据,这些通过纸带上的具有特定规则的数据,图灵机可以通过这些字符去判断接下来的数据是要使用加法还是减法,或者是其他的更加复杂的多层计算。
这就是通用图灵机。根据读进来的数据判断执行什么样的动作,再想一下我们现在在用的现代计算机,我们点击微信,电脑就打开微信。我们点击浏览器,电脑就打来浏览器。可以惊讶的发现,我们现在这么智能的计算机,居然是跟早期的通用图灵机的思路是一致的。

三:从通用图灵机到计算机

1946年,冯诺依曼提出了一个伟大的想法:将程序和数据存储到计算机内部的存储器中,然后把程序载入到控制器、运算器里面进行解析执行。如图:

计算机由五大部件组成:

  • 输入设备
  • 输出设备
  • 存储器
  • 运算器
  • 控制器

计算机执行的时候,首先把程序存储到存储器中,然后用一个指针指向某个程序,控制器和运算器便会取程序地址进行执行。执行完了第一个程序后,指针接着指向下一个地址,继续通过控制器和运算器进行执行,直到执行完所有任务。

那么概述来说,计算机的运行原理是什么呢?
取址执行。

四:现代计算机,开机!

上面通过计算机的一些历史和发展,我们了解了计算机的大概情况。接下来继续探索计算机是如何开机的。
打开计算机电源,计算机执行的第一句指令是什么?
对于X86架构的Intel计算机来说,内存有部分区域是已经固化的,叫做ROM BIOS映射区,地址为0xFFFF0,其中CS = 0xFFFF,IP = 0x0000。(BIOS,全称basic input output system,即基本输入输出系统。)

备注:这里其实就是冯诺伊曼的思想的应用,取址执行,首先要有执行程序的地址,在计算机刚上电的时候,内存是空的没有数据和地址的话,计算机就会无从执行,所以把一部分内存固化用作开机使用。

1.从按下电源键到进入引导扇区

  1. 开机时,X86架构的计算机CPU处于实模式,CS = 0xFFFF,IP = 0x0000。CS左移4位,加上IP,等于0xFFFF0,这正好是BIOS区域。
  2. 计算机执行BIOS区域的代码检查RAM、键盘、显示器、硬盘、主板等硬件。只有所有硬件都正常运作,才进入下一个环节。
  3. 将磁盘的0磁道扇区读入一个512字节的扇区(该扇区被命名为引导扇区)。CS = 0x07c0,IP = 0x0000,CS左移4位加上IP,得到地址0x7c00,改地址正是引导扇区的地址。
  4. CPU执行内存0x7c00,即引导扇区的代码。

2.引导扇区存放的代码
引导扇区就是启动设备的第一个扇区,大小为512个字节(开机时候按住del键可以进入启动设备界面,这个地方就是我们平时进入PE系统或者光盘启动的入口!)。其中,启动设备信息会被设置到CMOS,CMOS用来存储实时钟和硬件配置信息。
所以硬盘上的第一个扇区存放着开机后的第一段我们可以控制的程序。下面接着看扇区里面的代码是怎么样的。

3.bootsect.s

备注:首先,我们看到代码文件的后缀为.s,可以知道这是一段汇编语言代码。这里引发出一个思考,汇编语言对应的高级语言是C,为什么不用C来编写?
C语言是需要编译才能运行的,C经过编译知道,会产生一些我们无法控制的元素。
这里举个例子,假如我们用C写了个int a,经过编译后的int a,我们无法控制它存放在内存的哪个位置。而汇编的每一条指令最终都变成完整的机器指令,可以随意控制机器。

上面的代码执行完后,会执行到以下代码:

上面代码我们只挑重点的来分析, 代码中的0x13是BIOS读磁盘扇区的中断。中断之后,计算机应该读取那些扇区呢?读取的扇区是setup的4个扇区,如下图:

4.读入setup模块后的代码模块:ok_load_setup

代码中,我们看到会执行打光标到屏幕上,并且我们开机过程中的显示的logo也在这代码里面执行。接着读入并且执行system模块。
备注:在这里我们可以修改代码,从而把开机的logo和文字改为自己想要的。

由于篇幅原因,后面我们继续了解和学习操作系统的system模块。

操作系统(二)从图灵机到现代计算机相关推荐

  1. 计算机理论:有限状态机、图灵机到现代计算机

    一.有限状态机 引子 让我们先来看几个简单的概念: 状态        -  系统的基本数学特征. 状态机      -  一个离散数学模型.给定一个输入集合,根据对输入的接受次序来决定一个输出集合. ...

  2. 从有限状态机、图灵机到现代计算机

    转自:http://blog.sina.com.cn/s/blog_64ac3ab10100ges2.html 一.有限状态机 引子 让我们先来看几个简单的概念: 状态        -  系统的基本 ...

  3. 从有限状态机图灵机到现代计算机

    一.有限状态机 引子 让我们先来看几个简单的概念: 状态        -  系统的基本数学特征. 状态机      -  一个离散数学模型.给定一个输入集合,根据对输入的接受次序来决定一个输出集合. ...

  4. 操作系统(二): 进程与线程

    操作系统(二): 进程与线程 本章解读 进程管理是操作系统重点中的重点,涵盖了操作系统中大部分的知识和考点.其主要包括四部分:进程与线程,处理器调度,同步与互斥,死锁.所以我准备分四个部分来解释这四个 ...

  5. 【操作系统二】图解TCP/IP模型+实战

    [操作系统二]OSI模型和TCP/IP模型 一.OSI模型 1.什么是OSI模型 2.osi七层参考模型 3.我更想介绍TCP/IP模型 二.TCP/IP模型 1.TCP/IP模型起源 2.TCP/I ...

  6. 操作系统 (二): 进程与线程

    本文为<现代操作系统>的读书笔记 目录 进程 (process) 多道程序设计模型 程序顺序执行与并发执行 前驱图和程序执行 并发执行 进程模型 进程控制 创建进程 进程是何时被创建的? ...

  7. 跟我一起写操作系统(二)——史上最简单的内核

    转载注明出处: http://www.cnblogs.com/lucasysfeng/p/4847662.html 上一讲地址:http://www.cnblogs.com/lucasysfeng/p ...

  8. linux远程图形操作系统,二、Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面...

    2.Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面 红帽配置Xmanager 远程访问Linux: 1. 修改gdm配置文件,修改内容为粗体部分. /etc/gdm/cus ...

  9. 如何安装Windows操作系统?(二)安装启动项杂谈

    (二)安装启动项杂谈 上面说到过,如何去选择启动项和硬件的选择. 其实在硬件没有问题的情况下,只要有一个能启动的项目就可以安装系统了. 从BIOS给出的启动项,我们可以看到以下几个启动项 1.光盘/软 ...

最新文章

  1. CImg库的一个简单例子
  2. cookie、session以及token的定义、区别、使用环境
  3. 为什么说新型冠状病毒疫苗会研制成功?
  4. linux 简介各发行版
  5. htmlcss实例小项目_HTMLCSS学习笔记(十九)-- 媒体查询
  6. bzoj1051: [HAOI2006]受欢迎的牛
  7. eclipse中去掉警告提示
  8. Java Enterprise软件与应有的内容
  9. uva 1220——Party at Hali-Bula
  10. Entity Framework 6 Recipes 2nd Edition(13-4)译 - 有效地创建一个搜索查询
  11. 关于线程轮流打印0-99
  12. 95-242-040-源码-快照-Flink 分布式快照的设计-存储
  13. powershell编程_对Power BI PowerShell Commandlet的编程访问
  14. SpringBoot+Dubbo实战demo
  15. [C++再学习系列] 虚函数的4条规则
  16. 05. Know what functions C++ silently writes and calls
  17. mysql opxe_PXE安装系统
  18. 基于JavaWeb的学生信息管理系统
  19. 软考- 高级信息系统项目管理师,第一章 信息化与信息系统
  20. linux编辑框软键盘自动弹出,带输入框的Dialog自动弹出软键盘

热门文章

  1. zdm各命令的功能和作用_zdm软件命令大全.xls
  2. @f_webp 图片转 jpeg, png
  3. 用java实现转圈数字
  4. java导出数据到excel表格的最简单实现
  5. 【vps】教你写一个自己的随机图API
  6. Spring Boot配置绑定
  7. Blogger Spaces, 随心所欲的blog服务提供?
  8. ASP.Net MVC从客户端中检测到有潜在危险的 Request.Form 值
  9. 色度副载波和声音载频
  10. 用python自动生成交易策略_Python-回测简单的交易策略