OS101:图灵机、通用图灵机与bootsect
这个系列篇是在工作之余复习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相关推荐
- 关于图灵机的妙文(3)——图灵机杂思(rev#2)(刘未鹏)
原文地址:http://blog.csdn.net/pongba/archive/2006/03/11/621723.aspx C++ Template是图灵完备的 ( turing-complete ...
- 图灵机杂思(rev#2)
图灵机杂思 (rev#2) By 刘未鹏 C++ 的罗浮宫 (http://blog.csdn.net/pongba) C++ Template是图灵完备的 ( turing-complete ,或者 ...
- 【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
文章目录 一.计算模型与语言 二.区分 可计算语言 与 可判定语言 三.证明 ATM\rm A_{TM}ATM 语言 可计算 四.通用 ( Universal ) 任务图灵机 与 特殊任务图灵机 一 ...
- 操作系统(二)从图灵机到现代计算机
上一篇文章,我们初步了解了操作系统在现代计算机中充当的角色. 操作系统(一)什么是操作系统 一:从白纸到图灵机 图灵机是英国数学家A.C.图灵于1936年提出的一个模型. 小孩子算数 在聊图灵机之前, ...
- 3.1系统启动画面的背后bootsect.s
title date comments categories tags permalink 操作系统启动画面的背后bootsect.s 2020/2/15 true 操作系统 必备 技能 3.1 1. ...
- 计算机模型与体系架构的发展——从图灵机到云计算机1
按照图灵(Alan Turing)给出的计算机模型,计算机是由一个有限状态读写头和一个存储器构成.有限状态读写头从一个初始状态开始,对存储器上的(输入)数据进行读或写操作,经过有限步操作之后停机,此时 ...
- 【计算理论】可判定性 ( 通用图灵机和停机问题 | 可判定性 与 可计算性 | 语言 与 算法模型 )
文章目录 一.通用图灵机和停机问题 二.可判定性 与 可计算性 三.语言 与 算法模型 一.通用图灵机和停机问题 利用 图灵 的结论 , 证明 有哪些 计算问题 是找不到 算法 进行判定的 ; 如 停 ...
- 【计算理论】可判定性 ( 对角线方法 | 使用对角线方法证明 通用任务图灵机 语言 不可判定 )
文章目录 一.存在性证明 二.证明 通用任务图灵机 ATM\rm A_{TM}ATM 语言 对应的计算模型一定是 不可判定 ( 对角线法 ) 一.存在性证明 存在性证明 : 肯定存在一些语言 , 不 ...
- 图灵计算机模型意义,图灵机有什么意义_学习图灵机模型中遇到的问题
图灵机意义 图灵提出图灵机的模型并不是为了同时给出计算机的设计,它的意义我认为有如下几点: 1.它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构: 2.图灵机模型引入了 ...
最新文章
- 关于float的说明
- 001_html简介
- execCommand全集
- javascript框架比较(一)
- 较好的个人网址(关于编程)
- 【386天】跃迁之路——程序员高效学习方法论探索系列(实验阶段143-2018.02.26)...
- python如何收集数据库_利用Python操作mysql数据库
- 删除xcode中的描述文件的路径
- C# 导出Excel 多个Sheet
- android studio javah命令,Android Studio 配置 javah 和 ndk-build 快捷编译
- leetcode 5390. 数青蛙(C++)
- iOS申请邓白氏总结
- 瑜伽形体棍出口欧盟CE认证,出口美国CPC认证标准介绍
- Android吃透inflate方法(二)
- 获取手机mac地址工具类
- Mac安装并运行 nginx
- 工时管理:警惕员工时间偷窃!企业应该如何避免?
- Flask+ZUI 开发小型工具网站(三)——登录功能
- 第一届『Citric杯』NOIP提高组模拟赛 题解
- BUUCTF:[UTCTF2020]sstv