自己动手从零写桌面操作系统GrapeOS系列教程——7.计算机组成与运行原理
学习操作系统原理最好的方法是自己写一个简单的操作系统。
在大学计算机课程中会学到一个叫冯·诺依曼结构的东西,很多同学当时学的也不是很清楚,也就是记住冯·诺依曼结构中五个部分的名称,能应付考试。主要原因还是当时大家的计算机知识比较少,的确不好深入理解。
计算机组成与运行原理和冯·诺依曼结构密切相关,今天我们就来回顾一下冯·诺依曼结构,也许能温故知新。

1946年冯·诺依曼提出了计算机的三个基本原则:
- 计算机硬件由五个部分组成:运算器、控制器、存储器、输入设备和输出设备。
- 计算机采用二进制。
- 计算机采用“存储程序”模式。
以上三个基本原则虽然是七十多年前提出的,但现在的计算机仍然沿用这些原则。
下面将这三个基本原则简单介绍一下:
一、计算机硬件的五个部分
冯·诺依曼结构中五个部分分别对应哪些东西呢?我大概列举了一下:
- 运算器+控制器=CPU。
- 存储器:随机存储器RAM(内存、显存),只读存储器ROM。
- 外部存储:硬盘、软盘、光盘、优盘、磁带、纸带等。
- 输入设备:键盘、鼠标、扫描仪、外部存储等。
- 输出设备:显示器、音响、打印机、外部存储等。
计算机发明七十多年了,在计算机发展的初期,计算机是一个庞然大物,冯·诺依曼结构中的五个部分每个都很大。而现在的笔记本电脑很轻便,一个人就能很轻松的拎走。我们需要结合现在和历史的角度去分析冯·诺依曼结构中的五个部分。
从现在的角度看,运算器和控制器已经集成到同一个芯片里了,叫CPU,就像图中画的那样。
存储器包括随机存储器RAM和只读存储器ROM。RAM主要是指内存和显存。ROM主要存放BIOS等计算机内置程序,特点是断电后不会像RAM那样丢失数据。
有时候我们会看到一个叫“外部存储器”的概念,主要包括硬盘、优盘、光盘、软盘,甚至包括古老的磁带和纸带。这些东西都不属于冯·诺依曼结构中的存储器,而属于输入设备或输出设备。
二、计算机采用二进制
在今天看来计算机采用二进制是理所当然的事,然而当年一开始发明的计算机采用的是十进制,因为十进制符合人类的习惯。为了让计算机硬件在设计上更加简单可靠,后来还是采用了冯·诺依曼提倡的二进制。因为从电路上说,有电和没电是两种非常容易区分的两种状态,正好对应数学上的二进制。
三、计算机采用“存储程序”模式
这个可以对比一下算盘,在用算盘做计算时,算盘上只有数据,而怎么计算是人来一步一步操作的。也就是说算盘并不知道该怎么计算,这样就导致算盘无法实现计算自动化。而冯·诺依曼提出的“存储程序”的意思就是将算法和数据都设计成计算指令(也就是后来的汇编指令),放入内存中,然后控制器会从内存中读入第一条指令并执行,然后会读入并执行下一条指令,然后会读入并执行下下一条指令……就这样,计算机终于实现了计算自动化。而且计算机取指令和执行指令的速度要比人拨动算盘快很多,这样使计算机实现了高速自动化计算,同时也使计算机有了更大的实用价值。而我们平时写的各种程序,最终会转化为这样的指令。我觉得这才是程序员诞生的起点。这里需要注意的一点是我们平时写的程序放在硬盘或其它外部存储器中只是一个普通的文件,只有加载到内存后才能执行。
自己动手从零写桌面操作系统GrapeOS系列教程——7.计算机组成与运行原理的更多相关文章
- 别人写的一个Bootstrap系列教程
http://www.cnblogs.com/lansy/category/659061.html
- 一个人写的操作系统 - Sparrow OS
一个人写的操作系统 - Sparrow OS 自己写一个操作系统,这是在过去的几年里我一直为之努力的目标,现在终于完成了. 缘起 自己动手写操作系统的动机最初来自于学习Linux遇到的困难. 我是一个 ...
- 自制 os 极简教程1:写一个操作系统有多难
为什么叫极简教程呢?听我慢慢说 不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了 ...
- 【操作系统】关于Linux桌面操作系统
以前是Win+Ubuntu+黑苹果,周末想体验一下deepin,于是简单安装了一下,安装过程很简单,这里不再描述.安装之后,第一次打开系统,确实很惊艳,赏心悦目的操作系统. 之前用Ubuntu时候,C ...
- 盘点|2021年最受欢迎Linux桌面操作系统前十名
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 阿里云开源镜像站利用云服务上的优势,提供快速.稳定的镜像分发服务.和免费的CDN加速服务.更新频率高,基本上一天一更新,对于Centos/Ubun ...
- 手把手教你从零写一个简单的 VUE
本系列是一个教程,下面贴下目录~1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 今天给大家带来的是实现一个简单的类似 VUE 一样的前端框架,VUE 框架现在应 ...
- 《一步一步写嵌入式操作系统》读书笔记1—Skyeye介绍、安装和HelloWorld
2013-11-14 最近在看<一步一步写嵌入式操作系统>,感觉此书甚好,许多地方讲得很清楚.可操作性强,计划边读边实践边写笔记,希望能够逐步熟悉嵌入式操作系统底层的东西,最终剪裁出一套实 ...
- Python之美[从菜鸟到高手]--一步一步动手给Python写扩展(异常处理和引用计数)
我们将继续一步一步动手给Python写扩展,通过上一篇我们学习了如何写扩展,本篇将介绍一些高级话题,如异常,引用计数问题等.强烈建议先看上一篇,Python之美[从菜鸟到高手]--一步一步动手给Pyt ...
- Zedboard学习(一):移植Ubuntu桌面操作系统 标签: ubuntu移植zedboardFPGA 2017-07-04 21:53 26人阅读
环境准备: 首先,需要的肯定是Ubuntu操作系统.可以在自己的电脑上安装物理机,也可以是虚拟机下运行的.我的是在Vmware下运行的Ubuntu14.04 32位操作系统. 由于zedboard上的 ...
- 新奇:(nodejs兄弟)用HTML + FLASH +JS 也可以写桌面EXE。
首先看下面这张图片,下面的所有界面都是用html代码实现的. 编程IDE:vb6.0 使用控件:WEBBROWSER 原理:使用olelib 让程序继承:IDocHostUIHandler 和 ICu ...
随机推荐
- JAVA里Map的一些常用方法
Map的常用方法 案例1 场景:一张建行用户体验金信息大表(百万级别),里面存在一个字段对多条数据,需要统计某个字段的多条数据累加值以供于别的服务调用. 优化前解决:直接查出来一个大list给到另一个 ...
- MySQL 性能压测工具-sysbench,从入门到自定义测试项
sysbench是一个开源的.基于LuaJIT(LuaJIT 是 Lua 的即时编译器,可将代码直接翻译成机器码,性能比原生 lua 要高) 的.可自定义脚本的多线程基准测试工具,也是目前用得最多的 ...
- python中函数教程
函数的基本概念 1.什么是函数? 函数相当于一种工具,就是把一串代码装到一起,我们下次需要用的这个功能的时候可以直接使用 函数相当于是工具(具有一定功能) 不用函数 修理工需要修理器件要用锤子 原地打 ...
- 关于盒子动态高度与transition的问题
今天遇到个小问题 大概要实现类似手风琴的效果 本来设计是定死的高度,直接 height:0; - > height:xxxpx;但之后要改成动态变化的高度,手风琴展开后是个列表,并且列表每行高度 ...
- 快速学会慢查询SQL排查
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c56bd0c5.html 你好,我是测试蔡坨坨. 在往期文章中,我们聊过数据库基础知识,可参考「数据库基础,看完这篇就够了! ...
- 在Maven中出现javax.mail中文乱码问题解决记录
学习Java时,看廖雪峰大神文章使用了javax.mail来发送SMTP邮件.在加入中文时,发现收到的邮件里中文都是乱码. 按照一般经验,多半是编码的问题.然而在代码中,会涉及到编码的地方已经全部设置 ...
- 从面试题入手,畅谈 Vue 3 性能优化
前言 今年又是一个非常寒冷的冬天,很多公司都开始人员精简.市场从来不缺前端,但对高级前端的需求还是特别强烈的.一些大厂的面试官为了区分候选人对前端领域能力的深度,经常会在面试过程中考察一些前端框架的源 ...
- ob_DES_艺恩
网站 aHR0cHM6Ly93d3cuZW5kYXRhLmNvbS5jbi9Cb3hPZmZpY2UvQk8vWWVhci9pbmRleC5odG1s 抓包返回密文 点到initator,PostA ...
- pg_basebackup恢复:unrecognized configuration parameter "restore_command"
问题描述:2022年最后一个工作日,时间过的真快,一晃又一年过去了,祝愿看到的各位元旦快乐. 使用pg_basebackup进行pg的备份恢复,在恢复的过程中,配置文件添加恢复的参数,一直启动报错. ...
- SAP-FI模块 如何处理自动生成会计凭证增强
一. 相关问题概览 1. 固定资产业务过渡科目摘要增强功能-F-02 需用表BKPF.BSEG.T001.通过BUKRS.BELNR.GJAHR三个字段相等关联BKPF与BSEG.通过BKPF ...