这个系列篇是在工作之余复习OS写的,主要的材料来源是哈工大的本科OS MOOC。
感谢他们为教育作出的贡献。

第一篇文章主要介绍一些基本概念,比如什么是图灵机、什么是通用图灵机,他们与操作系统的关系以及操作系统的bootsect部分。

图灵机模型

图灵机模型假定我们有一个可以读取纸袋内容的控制器。他读取数据并进行固定的操作,把操作的结果写到纸带上。

非常伟大,但图灵机最致命的问题是不能支持自定义操作。就像厨师只能做一道菜一样。

通用图灵机

通用图灵机指的是可以自定义操作(运算)的图灵机。具体地说,我们可以先把我们要进行的运算读到图灵机内部,然后读取数据,图灵机进行运算,最后把结果写到纸带上。

这个思想太过于伟大,因为他是现在计算机计算思想的雏形。所谓的“菜谱”就是我们的程序。

冯·诺伊曼存储程序思想

这个思想说的是我们把程序和数据存到内存中,cpu不断取指执行(中间自然包括与数据的交互)
这相当于把图灵机的纸带变成内存。读纸带需要一个读取头,读内存自然也需要。这个读写头就是我们的ip(pc),他标志着我们读内存读到哪了。

虽然x86是cs:ip这种寻址模式。但是最核心的思想还是由ip来标记我们取指的位置

打开电源的时候,ip在哪?

上面我们介绍了ip的重要性。现在的问题是,刚开机的时候ip在哪?
要知道,刚开机的时候内存中什么也没有。
唯一有东西的地方是ROM,而事实上,BIOS会被映射到内存里。(BIOS是什么自行百度)因此我们第一步要做的就是把ip指针指向BIOS映射到的内存地址。

具体地址在哪里?不重要,最重要的永远是思想而非细节。当然实际上是cs=0xFFFF, ip=0x0000。
根据实模式寻址法则,cs+ip是0xFFFF0。这个位置就是BIOS的起始地址。
之后就会取指执行。
BIOS里要做的事主要就是检查内存、主板、显示器、磁盘等是否工作正常。之后,会把0磁道0扇区,也叫引导扇区的数据读到内存中。
这些数据会读到内存0x7c00位置处,对应的cs=0x07c0, ip=0x0000。

因此,打开电源以后的第一件事就是检查设备、读取引导扇区内容
(一个扇区512字节)

引导扇区里做什么了?

引导扇区被BIOS读到0x7c00处,它里面都做了什么呢?
其实总的来说就两件事,一是读取Setup扇区(通常是4个)以及System扇区(实际系统大小)到内存中,二是把ip指向Setup扇区在内存中的起始地址。

大体的操作是,我们会先把0x7c00处的代码移动到0x90000处,然后读这些扇区,把pc指向0x90200。

0x90200刚好是0x90000往后加512字节的位置,也就是setup扇区的起始处。
而为什么我们要把0x7c00处的内容移动到0x90000处呢?后面会说。

这就是引导扇区的功能:读磁盘、跳转。
这部分代码叫bootsect.s。可以去看mooc里详细的源码,复制粘贴没什么意义。

OS101:图灵机、通用图灵机与bootsect相关推荐

  1. 关于图灵机的妙文(3)——图灵机杂思(rev#2)(刘未鹏)

    原文地址:http://blog.csdn.net/pongba/archive/2006/03/11/621723.aspx C++ Template是图灵完备的 ( turing-complete ...

  2. 图灵机杂思(rev#2)

    图灵机杂思 (rev#2) By 刘未鹏 C++ 的罗浮宫 (http://blog.csdn.net/pongba) C++ Template是图灵完备的 ( turing-complete ,或者 ...

  3. 【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )

    文章目录 一.计算模型与语言 二.区分 可计算语言 与 可判定语言 三.证明 ATM\rm A_{TM}ATM​ 语言 可计算 四.通用 ( Universal ) 任务图灵机 与 特殊任务图灵机 一 ...

  4. 操作系统(二)从图灵机到现代计算机

    上一篇文章,我们初步了解了操作系统在现代计算机中充当的角色. 操作系统(一)什么是操作系统 一:从白纸到图灵机 图灵机是英国数学家A.C.图灵于1936年提出的一个模型. 小孩子算数 在聊图灵机之前, ...

  5. 3.1系统启动画面的背后bootsect.s

    title date comments categories tags permalink 操作系统启动画面的背后bootsect.s 2020/2/15 true 操作系统 必备 技能 3.1 1. ...

  6. 计算机模型与体系架构的发展——从图灵机到云计算机1

    按照图灵(Alan Turing)给出的计算机模型,计算机是由一个有限状态读写头和一个存储器构成.有限状态读写头从一个初始状态开始,对存储器上的(输入)数据进行读或写操作,经过有限步操作之后停机,此时 ...

  7. 【计算理论】可判定性 ( 通用图灵机和停机问题 | 可判定性 与 可计算性 | 语言 与 算法模型 )

    文章目录 一.通用图灵机和停机问题 二.可判定性 与 可计算性 三.语言 与 算法模型 一.通用图灵机和停机问题 利用 图灵 的结论 , 证明 有哪些 计算问题 是找不到 算法 进行判定的 ; 如 停 ...

  8. 【计算理论】可判定性 ( 对角线方法 | 使用对角线方法证明 通用任务图灵机 语言 不可判定 )

    文章目录 一.存在性证明 二.证明 通用任务图灵机 ATM\rm A_{TM}ATM​ 语言 对应的计算模型一定是 不可判定 ( 对角线法 ) 一.存在性证明 存在性证明 : 肯定存在一些语言 , 不 ...

  9. 图灵计算机模型意义,图灵机有什么意义_学习图灵机模型中遇到的问题

    图灵机意义 图灵提出图灵机的模型并不是为了同时给出计算机的设计,它的意义我认为有如下几点: 1.它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构: 2.图灵机模型引入了 ...

最新文章

  1. 关于float的说明
  2. 001_html简介
  3. execCommand全集
  4. javascript框架比较(一)
  5. 较好的个人网址(关于编程)
  6. 【386天】跃迁之路——程序员高效学习方法论探索系列(实验阶段143-2018.02.26)...
  7. python如何收集数据库_利用Python操作mysql数据库
  8. 删除xcode中的描述文件的路径
  9. C# 导出Excel 多个Sheet
  10. android studio javah命令,Android Studio 配置 javah 和 ndk-build 快捷编译
  11. leetcode 5390. 数青蛙(C++)
  12. iOS申请邓白氏总结
  13. 瑜伽形体棍出口欧盟CE认证,出口美国CPC认证标准介绍
  14. Android吃透inflate方法(二)
  15. 获取手机mac地址工具类
  16. Mac安装并运行 nginx
  17. 工时管理:警惕员工时间偷窃!企业应该如何避免?
  18. Flask+ZUI 开发小型工具网站(三)——登录功能
  19. 第一届『Citric杯』NOIP提高组模拟赛 题解
  20. BUUCTF:[UTCTF2020]sstv

热门文章

  1. 【win10邮件客户端 设置QQ和163邮箱】
  2. B. Dictionary
  3. SD销售模式之MTS和MTO
  4. java项目开发实例spring boot框架实现的理财记账财务管理系统
  5. 什么是Web服务器,如何配置
  6. Qt Creator 配置中文输入法
  7. upfst是什么函数C语言,一种基于KF和STUPF组合滤波的SINS大方位失准角初始对准方法技术...
  8. 欢迎观看Toni_hou的#生活1
  9. 2022年商标注册需要多长时间?
  10. Win8.1 kb2919355安装不上怎么办?